| | import gradio as gr |
| | from openai import OpenAI |
| | from config import OPENAI_API_KEY |
| |
|
| | |
| | client = OpenAI(api_key=OPENAI_API_KEY) |
| |
|
| | def generate_story(tema, personaje, estilo): |
| | """Genera una historia usando GPT-5-Nano.""" |
| | if not tema or not personaje: |
| | return "Por favor, proporciona al menos un tema y un personaje." |
| | |
| | prompt = ( |
| | f"Escribe una historia {estilo.lower()} sobre '{tema}' " |
| | f"con el personaje principal '{personaje}'. " |
| | "La historia debe tener entre 100 y 200 palabras." |
| | ) |
| |
|
| | try: |
| | response = client.responses.create( |
| | model="gpt-5-nano", |
| | input=[ |
| | {"role": "system", "content": "Eres un escritor creativo que genera historias interesantes y entretenidas."}, |
| | {"role": "user", "content": prompt} |
| | ], |
| | ) |
| | |
| | historia = getattr(response, "output_text", "") |
| | return historia |
| | except Exception as e: |
| | return f"Error al generar la historia: {str(e)}" |
| |
|
| | |
| | demo = gr.Interface( |
| | fn=generate_story, |
| | inputs=[ |
| | gr.Textbox(label="Tema", placeholder="Ej: Un viaje a la luna"), |
| | gr.Textbox(label="Personaje", placeholder="Ej: Un astronauta curioso"), |
| | gr.Textbox(label="Estilo", placeholder="Ej: Aventura, comedia, terror...") |
| | ], |
| | outputs="text", |
| | title="Generador de Historias con GPT-5-Nano", |
| | description="Introduce un tema, un personaje y un estilo. GPT-5-Nano generará una historia entre 100 y 200 palabras." |
| | ) |
| |
|
| | def try_generate_story(): |
| | tema = "Un viaje a la luna" |
| | personaje = "Un astronauta curioso" |
| | estilo = "Aventura" |
| | return generate_story(tema, personaje, estilo) |
| |
|
| | |
| |
|
| | if __name__ == "__main__": |
| | demo.launch(mcp_server=True) |
| |
|