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)