import gradio as gr from transformers import pipeline import json import os from openai import OpenAI api_key = os.getenv("OPENAI_KEY") client = OpenAI(api_key=api_key) modelx = 'gpt-3.5-turbo-0125' def generacion_llm(texto_input): # Define the system and user messages formato_json = ''' { "reto": " ", "dudas": " ", "preguntas": " ", "expectativas": " " } ''' mensaje_sistema = ( "Eres un experto en identificar aspectos descriptivos de las razones " "por las cuales un usuario necesita asesoría para implementar retos " "que involucren inteligencia artificial de varios tipos." ) mensaje_usuario = ( f"Analizar el texto mostrado al final, buscando identificar los siguientes " f"extractos en el formato JSON: {formato_json}\n\nTexto a Analizar: {texto_input}" ) # Call OpenAI API response = openai.ChatCompletion.create( model=modelx, messages=[ {"role": "system", "content": mensaje_sistema}, {"role": "user", "content": mensaje_usuario} ], temperature=0.8, max_tokens=300, top_p=1, frequency_penalty=0, presence_penalty=0 ) # Extract the generated text from the response texto_respuesta = response["choices"][0]["message"]["content"] # Ensure the response is valid JSON try: parsed_json = json.loads(texto_respuesta) # Attempt to parse the response except json.JSONDecodeError: return None, "Error: El modelo no devolvió un JSON válido. Por favor revise el input." # Save the parsed JSON as a downloadable file json_filename = "resultado.json" with open(json_filename, "w", encoding="utf-8") as f: json.dump(parsed_json, f, ensure_ascii=False, indent=4) return parsed_json, json_filename # Define Gradio app interface = gr.Interface( fn=generacion_llm, inputs=gr.Textbox(label="Ingrese su texto para analizar"), outputs=[ gr.JSON(label="Resultado JSON"), # Show the generated JSON gr.File(label="Descargar JSON") # Allow the user to download the JSON ], title="Extractor de Texto a JSON", description="Ingrese el texto para analizar y extraer información en un formato JSON predefinido." ) interface.launch()