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)