IFX-trace-implementation / api /scripts /create_play_profile_pic.py
ryanbalch's picture
properly implementation of gradio, langgraph, freeplay and zep (including proper sessions);adding user headshots
70aa23a
from openai import OpenAI
import base64
from model_player import Player
client = OpenAI()
def get_ai_response(prompt):
response = client.responses.create(
model="gpt-4o-mini",
input=prompt
)
return response.output_text
def generate_image(prompt):
result = client.images.generate(
model="gpt-image-1",
size="1024x1024",
quality="medium",
prompt=prompt
)
image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)
return image_bytes
prompt_a = """
You are generating a realistic portrait of a fictional professional soccer player using their structured profile data.
Use the information below to inform the player's:
- Physical build (age, height, weight)
- Facial features and vibe (bio, nationality, personality)
- Team kit details (team name, role, position)
- Pose and mood (based on form, rating, injury status)
Be creative, but grounded in realism β€” think press photo or matchday portrait.
Here is the player profile:
{player_profile}
Your output should describe only the image to be generated. No text, captions, or extra commentary. Just a detailed image prompt.
"""
# result = client.images.generate(
# model="gpt-image-1",
# size="1024x1024",
# quality="medium",
# prompt=prompt
# )
# image_base64 = result.data[0].b64_json
# image_bytes = base64.b64decode(image_base64)
# # Generate profile pic descriptions for all players
# for player in Player.get_players():
# print(player.name)
# # print(player.profile_pic)
# if not player.profile_pic:
# print("--> generate pic description")
# text = prompt_a.format(player_profile=player.model_dump())
# response = get_ai_response(text)
# print(response)
# player.profile_pic = response
# player.save()
# else:
# print("--> skip")
# # break
image_prompt = """
A realistic studio-style headshot portrait of {profile[name]}, a {profile[age]}-year-old professional soccer player from {profile[nationality]}. He plays as a {profile[position]} and currently wears jersey number {profile[shirt_number]} for the {team_name} soccer team.
He is wearing the team's official kit: a {shirt_color} jersey, clean and well-fitted, featuring his number {profile[shirt_number]} on the front. The image should capture a calm and confident expression, suitable for official media. The player has a well-groomed appearance, facing forward with even lighting and a neutral or softly blurred backdrop in studio conditions. No action pose, just a clear, professional profile suitable for player bio pages or trading cards.
"""
shirt_colors = {
"Everglade FC": "emerald green",
"Fraser Valley United": "dark red",
"Yucatan Force": "dark orange",
"Tierra Alta FC": "spring green",
}
# Generate images for all players
for player in Player.get_players():
print(player.name)
# print(player.player_info())
shirt_color = shirt_colors[player.team]
text = image_prompt.format(
profile=player.player_info(),
team_name=player.team,
shirt_color=shirt_color)
# print(text)
# print(player.profile_pic)
response = generate_image(text)
player.save_image(response)