Spaces:
Sleeping
Sleeping
| from langchain_openai import ChatOpenAI | |
| from langchain.schema import AIMessage, HumanMessage | |
| import gradio as gr | |
| # Crea una instancia del modelo GPT usando LangChain. Aqu铆 se usa el modelo "gpt-4o-mini" | |
| model = ChatOpenAI(model="gpt-4o-mini") | |
| def predict(message, history): | |
| # Inicializa una lista para almacenar el historial de mensajes en el formato que espera LangChain | |
| history_langchain_format = [] | |
| # Recorre el historial proporcionado por Gradio (formato de lista de diccionarios) | |
| for msg in history: | |
| if msg['role'] == "user": | |
| # Si el mensaje es del usuario, se convierte en un objeto HumanMessage | |
| history_langchain_format.append(HumanMessage(content=msg['content'])) | |
| elif msg['role'] == "assistant": | |
| # Si el mensaje es del asistente, se convierte en un objeto AIMessage | |
| history_langchain_format.append(AIMessage(content=msg['content'])) | |
| # Agrega el nuevo mensaje del usuario al final del historial | |
| history_langchain_format.append(HumanMessage(content=message)) | |
| # Env铆a todo el historial al modelo para obtener una respuesta coherente | |
| gpt_response = model.invoke(history_langchain_format) | |
| # Devuelve solo el contenido textual de la respuesta del modelo | |
| return gpt_response.content | |
| # Crea una interfaz de chat en Gradio utilizando la funci贸n 'predict' | |
| demo = gr.ChatInterface( | |
| predict, # Funci贸n que se ejecuta con cada mensaje | |
| type="messages" # Indica que el historial ser谩 manejado como una lista de mensajes (con roles: 'user' y 'assistant') | |
| ) | |
| # Lanza el servidor de Gradio para que se pueda interactuar con la interfaz desde el navegador | |
| demo.launch() |