hello-worldv1 / app.py
salmg's picture
Update app.py
154f1ea verified
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()