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)