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)