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)