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