File size: 1,711 Bytes
d5d6586
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154f1ea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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()