Modelli di Chat

I modelli di chat sono una variante dei modelli linguistici. Anche se i modelli di chat utilizzano modelli linguistici (LLM) a livello sottostante, le loro interfacce pubbliche sono leggermente diverse. Invece di esporre un'API per "input testo, output testo", utilizzano un'interfaccia che accetta "messaggi di chat" in input e in output. L'intero processo di interazione dei modelli di chat è simile al processo di scambio di messaggi di chat.

Iniziare con i Modelli di Chat

Questo capitolo è basato sul modello OpenAI.

Configurazione

Per impostazione predefinita, LangChain non ha le dipendenze del modello installate. Prima, installa il pacchetto Python OpenAI:

pip install langchain-openai

Per accedere all'API è necessaria una chiave API, che può essere configurata tramite le variabili di ambiente. Di seguito un esempio su come impostarla in un ambiente Linux:

export OPENAI_API_KEY="..."

Se preferisci non impostare le variabili di ambiente, puoi passare direttamente la chiave attraverso il parametro nominato openai_api_key durante l'inizializzazione della classe OpenAI LLM:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

In alternativa, puoi inizializzarla senza alcun parametro:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

Messaggi

L'interfaccia del modello di chat si basa su messaggi anziché testo grezzo. I tipi di messaggi supportati da LangChain attualmente includono AIMessage, HumanMessage, SystemMessage, FunctionMessage e ChatMessage, dove ChatMessage richiede un parametro di ruolo arbitrario. Nella maggior parte dei casi, avrai a che fare solo con HumanMessage, AIMessage e SystemMessage.

LCEL

Il modello di chat implementa l'interfaccia Runnable, supportando metodi come invoke, ainvoke, stream, astream, batch, abatch, astream_log, quindi il modello di chat può anche essere utilizzato per espressioni del Linguaggio di Espressione LangChain (LCEL).

Il modello di chat accetta un List[BaseMessage] in input, oppure può accettare oggetti che possono essere coerciti in messaggi, inclusi str (convertiti in HumanMessage) e PromptValue.

from langchain_core.messages import HumanMessage, SystemMessage

messaggi = [
    SystemMessage(content="Sei un assistente utile"),
    HumanMessage(content="Qual è lo scopo della regolarizzazione del modello?"),
]

Chiamata del modello con un array di messaggi:

chat.invoke(messaggi)

Esempio del messaggio restituito:

AIMessage(content="Il contenuto della risposta dell'IA... dettagli omessi...")

Streaming dell'output della risposta dell'IA:

for chunk in chat.stream(messaggi):
    print(chunk.content, end="", flush=True)