Modele czatu
Modele czatu są wariantem modeli językowych. Chociaż modele czatu korzystają z modeli językowych (LLM) na poziomie podstawowym, ich interfejsy publiczne są nieco inne. Zamiast ujawniać interfejs API do "tekstu wejściowego, tekstu wyjściowego", wykorzystują interfejs, który przyjmuje "wiadomości czatu" jako dane wejściowe i wyjściowe. Cały proces interakcji modeli czatu jest podobny do procesu wymiany wiadomości czatu.
Rozpoczęcie pracy z modelami czatu
Rozdział ten opiera się na modelu OpenAI.
Konfiguracja
Domyślnie LangChain nie ma zainstalowanych zależności modelu. Najpierw zainstaluj pakiet OpenAI Python:
pip install langchain-openai
Dostęp do interfejsu API wymaga klucza API, który można skonfigurować za pomocą zmiennych środowiskowych. Poniższy przykład pokazuje, jak to zrobić w środowisku Linux:
export OPENAI_API_KEY="..."
Jeśli wolisz nie ustawiać zmiennych środowiskowych, możesz bezpośrednio przekazać klucz za pośrednictwem nazwanego parametru openai_api_key podczas inicjalizacji klasy OpenAI LLM:
from langchain_openai import ChatOpenAI
czat = ChatOpenAI(openai_api_key="...")
Alternatywnie, możesz zainicjować go bez żadnych parametrów:
from langchain_openai import ChatOpenAI
czat = ChatOpenAI()
Wiadomości
Interfejs modelu czatu opiera się na wiadomościach, a nie surowym tekście. Typy wiadomości obsługiwane przez LangChain obejmują obecnie AIMessage, HumanMessage, SystemMessage, FunctionMessage i ChatMessage, gdzie ChatMessage wymaga arbitralnego parametru roli. W większości przypadków będziesz mieć do czynienia tylko z HumanMessage, AIMessage i SystemMessage.
LCEL
Model czatu implementuje interfejs Runnable, obsługując metody takie jak invoke, ainvoke, stream, astream, batch, abatch, astream_log, dzięki czemu model czatu może także być używany do wyrażeń języka ekspresji LangChain (LCEL).
Model czatu przyjmuje List[BaseMessage] jako dane wejściowe, lub może przyjmować obiekty, które można rzutować na wiadomości, w tym str (przekształcone w HumanMessage) i PromptValue.
from langchain_core.messages import HumanMessage, SystemMessage
wiadomosci = [
SystemMessage(content="Jesteś pomocnym asystentem"),
HumanMessage(content="Jaki jest cel regularyzacji modelu?"),
]
Wywołanie modelu z tablicą wiadomości:
czat.invoke(wiadomosci)
Przykład zwróconej wiadomości:
AIMessage(content="Treść odpowiedzi AI... szczegóły pominięte...")
Przekazywanie odpowiedzi AI do strumienia:
for fragment in czat.stream(wiadomosci):
print(fragment.content, end="", flush=True)