|
import json |
|
import gradio as gr |
|
import time |
|
from openai import OpenAI |
|
import os |
|
from dotenv import load_dotenv |
|
|
|
|
|
load_dotenv() |
|
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) |
|
my_assistant = client.beta.assistants.retrieve("asst_m1mvLz5rtxcROa4DWYWcuRDr") |
|
def submit_message(assistant_id, thread, user_message): |
|
client.beta.threads.messages.create( |
|
thread_id=thread.id, role="user", content=user_message |
|
) |
|
return client.beta.threads.runs.create( |
|
thread_id=thread.id, |
|
assistant_id=assistant_id, |
|
) |
|
|
|
|
|
|
|
def get_response(thread): |
|
return client.beta.threads.messages.list(thread_id=thread.id, order="asc") |
|
|
|
def submit_to_openai(nombre,demografia, ingresos, situacion_laboral, intereses, accesibilidad_tecnologia, complejidad): |
|
send_message = f"""Nombre del Curso: {nombre} |
|
Demografía Local: {demografia} |
|
Nivel de Ingresos: {ingresos} |
|
Situación Laboral: {situacion_laboral} |
|
Intereses Específicos de la Población: {intereses} |
|
Accesibilidad a la Tecnología: {accesibilidad_tecnologia} |
|
Complejidad del Curso: {complejidad}""" |
|
|
|
empty_thread = client.beta.threads.create() |
|
submit_message(my_assistant.id, empty_thread, send_message) |
|
time.sleep(19) |
|
response = get_response(empty_thread) |
|
return response |
|
|
|
def curso_info(nombre, demografia, ingresos, situacion_laboral, intereses, accesibilidad_tecnologia, complejidad): |
|
|
|
respuesta_api = submit_to_openai(nombre, demografia, ingresos, situacion_laboral, intereses, accesibilidad_tecnologia, complejidad) |
|
|
|
|
|
|
|
contenido_respuesta = respuesta_api.data[1].content[0].text.value |
|
|
|
|
|
json_str = contenido_respuesta.strip("`") |
|
|
|
|
|
respuesta_json = json.loads(json_str) |
|
nombre_curso = respuesta_json["nombrecurso"] |
|
calificacion = respuesta_json["calificacionfinal"] |
|
|
|
|
|
if calificacion >= 4.5: |
|
emoji = "🌟🌟🌟🌟🌟" |
|
descripcion = "¡Excelente! Un curso altamente recomendado." |
|
elif calificacion >= 3.5: |
|
emoji = "🌟🌟🌟🌟" |
|
descripcion = "Muy bueno. Vale la pena considerarlo." |
|
elif calificacion >= 2.5: |
|
emoji = "🌟🌟🌟" |
|
descripcion = "Bueno, pero hay margen de mejora." |
|
elif calificacion >= 1.5: |
|
emoji = "🌟🌟" |
|
descripcion = "Regular. Podría ser mejor." |
|
else: |
|
emoji = "🌟" |
|
descripcion = "Por debajo de las expectativas." |
|
|
|
|
|
mensaje = f"Curso: {nombre_curso}\nCalificación: {calificacion} {emoji}\n{descripcion}" |
|
|
|
return mensaje |
|
|
|
|
|
with gr.Blocks(theme=gr.themes.Soft()) as demo: |
|
gr.Interface( |
|
fn=curso_info, |
|
inputs=[ |
|
gr.Textbox(label="Nombre del Curso", type="text"), |
|
gr.Slider(minimum=1, maximum=5, label="Demografía Local"), |
|
gr.Slider(minimum=1, maximum=5, label="Nivel de Ingresos"), |
|
gr.Slider(minimum=1, maximum=5, label="Situación Laboral"), |
|
gr.Slider(minimum=1, maximum=5, label="Intereses Específicos de la Población"), |
|
gr.Slider(minimum=1, maximum=5, label="Accesibilidad a la Tecnología"), |
|
gr.Slider(minimum=1, maximum=5, label="Complejidad del Curso") |
|
], |
|
outputs="text", |
|
title="Información del Curso", |
|
description="Ajusta los deslizadores para definir los parámetros del curso y recibir recomendaciones." |
|
|
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|