LLM-APIs für Entwickler: Einstieg in Chat Completions
Sie haben eine großartige Idee für ein KI-gestütztes Feature, aber sobald Sie die API-Dokumentation lesen, stoßen Sie auf eine Wand aus Fachjargon: Tokens, Temperatur, Streaming, System-Prompts. Es fühlt sich an, als bräuchten Sie einen zweiten Abschluss, nur um eine Nachricht zu senden. Die gute Nachricht: Das Grundkonzept ist einfach: Sie senden eine Liste von Nachrichten, und das Modell sendet eine Antwort zurück. Alles andere ist Tuning. Dieser Artikel führt Sie durch die praktischen Schritte zur Integration einer LLM-Chat-Completion-API in Ihre Anwendung – mit Code, den Sie heute anpassen können.
Was ist eine Chat-Completion-API?
Im Kern nimmt eine Chat-Completion-API einen Gesprächsverlauf als Eingabe und gibt die nächste Nachricht im Gespräch zurück. Der Verlauf ist ein Array von Nachrichtenobjekten, jedes mit einer role und content. Die Rollen sind typischerweise system, user und assistant. Die Systemnachricht legt das Verhalten des Assistenten fest, die Benutzernachricht ist das, was die Person eingegeben hat, und die Assistentennachricht ist das, was das Modell zuvor geantwortet hat. Indem Sie den gesamten Verlauf senden, geben Sie dem Modell Kontext, um eine kohärente Antwort zu generieren.
Die meisten Anbieter (OpenAI, Anthropic, Google und Open-Source-Alternativen) folgen einem ähnlichen Muster, auch wenn der genaue Endpunkt und die Nutzlast abweichen können. Sobald Sie einen verstanden haben, können Sie sich schnell an andere anpassen.
Schritt für Schritt: Ihr erster API-Aufruf
Gehen wir ein minimales Beispiel mit Python und dem OpenAI SDK durch. Sie können es mit pip install openai installieren. Legen Sie Ihren API-Schlüssel als Umgebungsvariable fest, um ihn aus Ihrem Code herauszuhalten.
import os
from openai import OpenAI
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain what an API is in one sentence."}
]
)
print(response.choices[0].message.content)
Das war's. Das Antwortobjekt enthält eine Liste von Auswahlmöglichkeiten; normalerweise nehmen Sie die erste. Der Nachrichteninhalt ist die Antwort des Modells. Sie können auch Nutzungsstatistiken abrufen, um den Token-Verbrauch zu verfolgen.
Wichtige Parameter, die Sie optimieren sollten
Über die Nachrichten hinaus steuern einige Parameter die Ausgabe des Modells:
- model: Welches Modell verwendet wird. Kleinere Modelle sind günstiger und schneller; größere Modelle sind leistungsfähiger.
- temperature: Steuert die Zufälligkeit. 0 ist deterministisch, 1 ist kreativ. Für faktenbasierte Aufgaben verwenden Sie einen niedrigen Wert; für Brainstorming einen höheren.
- max_tokens: Begrenzt die Länge der Antwort. Setzen Sie dies, um unerwartet lange (und kostspielige) Antworten zu vermeiden.
- top_p: Eine Alternative zur Temperatur zur Steuerung der Vielfalt. Normalerweise passen Sie das eine oder das andere an, nicht beides.
- stream: Wenn true, sendet die API Teilantworten, sobald sie generiert werden, was die wahrgenommene Latenz verbessert.
Streaming-Antworten für eine bessere UX
Das Warten auf eine vollständige Antwort kann sich langsam anfühlen, besonders bei langen Antworten. Streaming ermöglicht es Ihnen, Text anzuzeigen, sobald er eintrifft. So behandeln Sie einen Stream in Python:
stream = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Tell me a story."}],
stream=True
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end="", flush=True)
Jeder Chunk enthält ein Delta mit einem Teil der Antwort. Sie sammeln diese Teile, um die vollständige Nachricht zu erstellen. In einer Web-App können Sie diese Chunks mit Server-Sent Events (SSE) oder WebSockets an den Browser weiterleiten.
Fehlerbehandlung und Rate Limits
APIs schlagen fehl. Netzwerke stocken. Rate Limits greifen. Ihre Integration sollte diese Situationen elegant bewältigen. Häufige Fehler sind:
- 401 Unauthorized: Ungültiger API-Schlüssel. Überprüfen Sie Ihre Umgebungsvariable.
- 429 Too Many Requests: Sie haben ein Rate Limit erreicht. Implementieren Sie exponentielles Backoff und Wiederholungsversuche.
- 500 Internal Server Error: Problem auf Anbieterseite. Wiederholen Sie den Versuch mit einer Verzögerung.
Wickeln Sie API-Aufrufe immer in try/except-Blöcke ein und protokollieren Sie Fehler. Für die Produktion können Sie eine Bibliothek wie tenacity für Wiederholungsversuche in Betracht ziehen.
Kosten- und Token-Management
Tokens sind die Währung der LLM-APIs. Sowohl Eingabe- als auch Ausgabe-Tokens zählen zu Ihrer Rechnung. Um die Kosten vorhersehbar zu halten:
- Verwenden Sie kleinere Modelle für einfache Aufgaben.
- Kürzen Sie den Gesprächsverlauf auf die letzten Nachrichten, wenn der vollständige Kontext nicht benötigt wird.
- Setzen Sie
max_tokens, um die Ausgabelänge zu begrenzen. - Cachen Sie häufige Antworten, wenn Ihr Anwendungsfall dies zulässt.
Überwachen Sie die Nutzung über das Dashboard des Anbieters oder indem Sie die Token-Zahlen aus jeder Antwort protokollieren.
Sicherheits- und Datenschutzaspekte
Wenn Sie Benutzerdaten an eine LLM-API senden, vertrauen Sie diese Daten einem Dritten an. Überprüfen Sie die Datenaufbewahrungsrichtlinien des Anbieters. Vermeiden Sie das Senden sensibler Informationen wie Passwörter oder persönlicher Identifikatoren. Wenn es unvermeidbar ist, ziehen Sie selbst gehostete Modelle oder Anbieter mit starken Datenschutzgarantien in Betracht. Stellen Sie außerdem niemals Ihren API-Schlüssel in clientseitigem Code bereit; leiten Sie Anfragen immer über Ihr Backend weiter.
FAQ
Was ist der Unterschied zwischen einer Chat Completion und einer regulären Completion?
Chat Completions sind für konversationelle Schnittstellen konzipiert. Sie akzeptieren eine Liste von Nachrichten mit Rollen, sodass das Modell den Kontext beibehalten kann. Reguläre Completions nehmen einen einzelnen Prompt-String entgegen und sind für mehrstufige Dialoge weniger geeignet.
Wie wähle ich das richtige Modell aus?
Beginnen Sie mit einem kleineren, günstigeren Modell für die Prototypenerstellung. Wenn Sie besseres Reasoning oder einen längeren Kontext benötigen, wechseln Sie zu einem größeren Modell. Testen Sie beide mit Ihrer spezifischen Aufgabe, um den besten Kompromiss zwischen Kosten und Leistung zu finden.
Kann ich mehrere LLM-Anbieter in einer App verwenden?
Ja. Viele Entwickler abstrahieren die API-Aufrufe hinter einer Schnittstelle und wechseln den Anbieter je nach Kosten, Latenz oder Funktionen. Bibliotheken wie LiteLLM oder LangChain können helfen, verschiedene APIs zu vereinheitlichen.
Nächste Schritte
Nachdem Sie nun einen grundlegenden Aufruf durchführen können, experimentieren Sie mit System-Prompts, um das Verhalten des Modells zu steuern. Probieren Sie Streaming aus, um die Benutzererfahrung zu verbessern. Und behalten Sie immer den Token-Verbrauch im Auge. Während Sie entwickeln, müssen Sie möglicherweise JSON-Antworten des Modells für die weitere Verarbeitung formatieren. Dafür kann ein JSON-Formatter helfen, die Ausgabe schnell zu validieren und übersichtlich darzustellen.