Chat-Modelle

Chat-Modelle sind eine Variante von Sprachmodellen. Obwohl Chat-Modelle auf der Ebene der Sprachmodelle (LLM) verwendet, unterscheiden sich ihre öffentlichen Schnittstellen etwas. Anstatt eine API für "Eingabetext, Ausgabetext" freizugeben, verwenden sie eine Schnittstelle, die "Chat-Nachrichten" als Eingabe und Ausgabe akzeptiert. Der gesamte Interaktionsprozess von Chat-Modellen ähnelt dem Austausch von Chat-Nachrichten.

Erste Schritte mit Chat-Modellen

Dieses Kapitel basiert auf dem OpenAI-Modell.

Konfiguration

Standardmäßig sind die Modellabhängigkeiten von LangChain nicht installiert. Installieren Sie zuerst das OpenAI Python-Paket:

pip install langchain-openai

Für den Zugriff auf die API ist ein API-Schlüssel erforderlich, der über Umgebungsvariablen konfiguriert werden kann. Das folgende Beispiel zeigt, wie dies in einer Linux-Umgebung eingerichtet werden kann:

export OPENAI_API_KEY="..."

Wenn Sie Umgebungsvariablen lieber nicht setzen möchten, können Sie den Schlüssel direkt über den benannten Parameter openai_api_key bei der Initialisierung der OpenAI-LLM-Klasse übergeben:

from langchain_openai import ChatOpenAI

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

Alternativ können Sie es auch ohne Parameter initialisieren:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

Nachrichten

Die Schnittstelle des Chat-Modells basiert auf Nachrichten und nicht auf Rohtext. Die von LangChain derzeit unterstützten Nachrichtentypen sind AIMessage, HumanMessage, SystemMessage, FunctionMessage und ChatMessage, wobei ChatMessage einen beliebigen Rollenparameter erfordert. In den meisten Fällen werden Sie nur mit HumanMessage, AIMessage und SystemMessage umgehen.

LCEL

Das Chat-Modell implementiert die Runnable-Schnittstelle und unterstützt Methoden wie invoke, ainvoke, stream, astream, batch, abatch, astream_log, sodass das Chat-Modell auch für LangChain Expression Language (LCEL)-Ausdrücke verwendet werden kann.

Das Chat-Modell akzeptiert eine List[BaseMessage] als Eingabe oder kann Objekte akzeptieren, die in Nachrichten umgewandelt werden können, einschließlich str (konvertiert zu HumanMessage) und PromptValue.

from langchain_core.messages import HumanMessage, SystemMessage

nachrichten = [
    SystemMessage(content="Du bist ein hilfreicher Assistent"),
    HumanMessage(content="Was ist der Zweck der Modellregularisierung?"),
]

Aufruf des Modells mit einem Array von Nachrichten:

chat.invoke(nachrichten)

Beispiel der zurückgegebenen Nachricht:

AIMessage(content="Der Inhalt der KI-Antwort...Details ausgelassen...")

Ausgabe des KI-Antwortinhalts im Stream:

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