Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import plotly.express as px | |
| from openai import OpenAI | |
| # Configura el cliente de OpenAI con la API key directamente | |
| client = OpenAI(api_key="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") | |
| # ID de tu asistente | |
| assistant_id = "asst_0hq3iRy6LX0YLZP0QVzg17fT" | |
| def random_plot(): | |
| df = px.data.iris() | |
| fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species", | |
| size='petal_length', hover_data=['petal_width']) | |
| return fig | |
| def print_like_dislike(x: gr.LikeData): | |
| print(x.index, x.value, x.liked) | |
| def add_message(history, message): | |
| if message["text"] is not None: | |
| history.append((message["text"], None)) | |
| return history, gr.MultimodalTextbox(value=None, interactive=False) | |
| def bot(history): | |
| last_message = history[-1][0] if history else "Hola" | |
| # Crear un nuevo hilo para la conversación | |
| thread = client.beta.threads.create() | |
| # Agregar el mensaje del usuario al hilo | |
| client.beta.threads.messages.create( | |
| thread_id=thread.id, | |
| role="user", | |
| content=last_message | |
| ) | |
| # Ejecutar el asistente | |
| run = client.beta.threads.runs.create( | |
| thread_id=thread.id, | |
| assistant_id=assistant_id | |
| ) | |
| # Esperar a que el asistente complete la tarea | |
| while run.status != "completed": | |
| run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id) | |
| # Obtener los mensajes del hilo | |
| messages = client.beta.threads.messages.list(thread_id=thread.id) | |
| # Obtener la última respuesta del asistente | |
| for message in messages.data: | |
| if message.role == "assistant": | |
| bot_response = message.content[0].text.value | |
| break | |
| history[-1] = (history[-1][0], bot_response) | |
| return history | |
| fig = random_plot() | |
| with gr.Blocks(fill_height=True) as demo: | |
| chatbot = gr.Chatbot( | |
| elem_id="chatbot", | |
| bubble_full_width=False, | |
| scale=1, | |
| ) | |
| chat_input = gr.MultimodalTextbox(interactive=True, | |
| file_count="multiple", | |
| placeholder="Enter message or upload file...", show_label=False) | |
| chat_msg = chat_input.submit(add_message, [chatbot, chat_input], [chatbot, chat_input]) | |
| bot_msg = chat_msg.then(bot, chatbot, chatbot, api_name="bot_response") | |
| bot_msg.then(lambda: gr.MultimodalTextbox(interactive=True), None, [chat_input]) | |
| chatbot.like(print_like_dislike, None, None) | |
| demo.queue() | |
| demo.launch(share=True) |