|
|
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) |
|
|
|