OpenAI API: chat.completions und Streaming
OpenAI-Client, Nachrichtenliste, system/user/assistant-Rollen, Streaming mit stream=True.
OpenAI API: chat.completions und Streaming ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Das OpenAI Python SDK kennenlernen
Das Python-Paket openai ist die offizielle Möglichkeit, mit OpenAI-Modellen wie GPT-4o zu kommunizieren. Installieren Sie es mit pip install openai. Dadurch erhalten Sie eine einzelne OpenAI-Clientklasse, die Authentifizierung, Wiederholungsversuche und den Aufbau von Requests für Sie übernimmt.
Jeder Aufruf läuft über diesen Client. Daher ist es üblich, ihn einmal zu erstellen und wiederzuverwenden.
pip install openai
from openai import OpenAIDen Client erstellen
Instanziieren Sie den Client mit OpenAI(). Standardmäßig liest er Ihren Schlüssel aus der Umgebungsvariable OPENAI_API_KEY, sodass Geheimnisse nicht in Ihrem Quellcode stehen.
Sie können den Schlüssel auch explizit übergeben, aber für Anwendungen in der Produktion sind Umgebungsvariablen der empfohlene Ansatz.
from openai import OpenAI
# Reads OPENAI_API_KEY from the environment
client = OpenAI()
# Or pass it explicitly (not recommended)
client = OpenAI(api_key="sk-...")Die messages-Liste
Chatmodelle werden durch eine Liste von Messages gesteuert. Jede Message ist ein Dict mit einem role und einem content. Die drei zentralen Rollen sind system (Anweisungen), user (der Mensch) und assistant (das Modell).
Diese Liste enthält den vollständigen Gesprächskontext, den das Modell bei jedem Aufruf sieht.
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of France?"}
]Ihre erste Completion
Rufen Sie client.chat.completions.create() mit einem model und Ihren messages auf. Der Antworttext befindet sich unter response.choices[0].message.content.
Die API gibt eine Liste von Auswahlmöglichkeiten zurück, aber im normalen Gebrauch lesen Sie den ersten Eintrag aus.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
print(response.choices[0].message.content)Ausgabe mit Parametern steuern
Zwei Parameter bestimmen die Antwort: temperature (0 = deterministisch, höhere Werte = kreativer) und max_tokens (begrenzt die Länge der Antwort). Niedrigere Temperaturen eignen sich für sachliche Aufgaben, höhere für Brainstorming.
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
temperature=0.2,
max_tokens=300
)Warum Antworten streamen?
Ohne Streaming warten Sie, bis die gesamte Antwort vorliegt, bevor Sie etwas sehen. Beim Streaming treffen Tokens ein, sobald sie generiert werden, sodass eine Benutzeroberfläche Text in Echtzeit anzeigen kann, wie es auch ChatGPT tut.
Sie aktivieren dies mit stream=True. Dadurch ändert sich der Rückgabewert von einem einzelnen Objekt in einen Iterator.
Streaming aktivieren
Übergeben Sie stream=True an create(). Statt einer vollständigen Antwort erhalten Sie nun einen Generator, der Chunks liefert, während das Modell sie erzeugt.
stream = client.chat.completions.create(
model="gpt-4o",
messages=messages,
stream=True
)Über Chunks iterieren
Iterieren Sie über den Stream. Jeder Chunk enthält einen Teil des Textes unter chunk.choices[0].delta.content. Frühe und letzte Chunks können dort den Wert None enthalten. Prüfen Sie daher darauf, bevor Sie den Inhalt ausgeben.
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta is not None:
print(delta, end="", flush=True)delta vs. message verstehen
In einer normalen Antwort lesen Sie message.content (die vollständige Antwort). In einem Stream lesen Sie delta.content (nur den neu hinzugekommenen Teil). Das Wort delta bedeutet „die Änderung“ seit dem letzten Chunk.
Durch das Verketten aller Deltas setzen Sie die vollständige Nachricht wieder zusammen.
full_text = ""
for chunk in stream:
piece = chunk.choices[0].delta.content or ""
full_text += piece
print("\nFinal:", full_text)Gespräche mit mehreren Nachrichten
Um ein Gespräch fortzusetzen, hängen Sie die Antwort des Assistenten wieder an messages an und fügen anschließend die nächste Nachricht des Benutzers hinzu. Das Modell ist zustandslos, daher verwalten SIE den Verlauf.
messages.append({"role": "assistant", "content": response.choices[0].message.content})
messages.append({"role": "user", "content": "And its population?"})
follow_up = client.chat.completions.create(model="gpt-4o", messages=messages)Token-Verbrauch untersuchen
Antworten ohne Streaming enthalten ein usage-Objekt mit prompt_tokens, completion_tokens und total_tokens. So verfolgen und planen Sie die API-Kosten, da nach Token abgerechnet wird.
print(response.usage.prompt_tokens)
print(response.usage.completion_tokens)
print(response.usage.total_tokens)Kurze Überprüfung
Testen Sie Ihr Verständnis von Streaming.
Rückblick: Chat Completions und Streaming
Sie haben gelernt, einen OpenAI-Client zu erstellen, eine messages-Liste mit den Rollen System, Benutzer und Assistent aufzubauen und chat.completions.create() aufzurufen. Normale Antworten lesen Sie aus choices[0].message.content.
Mit stream=True iterieren Sie über Chunks und lesen delta.content für die Ausgabe in Echtzeit. Außerdem verwalten Sie den Verlauf, indem Sie Antworten anhängen, und verfolgen die Kosten über das usage-Objekt.
Häufig gestellte Fragen
Ist die Lektion „OpenAI API: chat.completions und Streaming“ kostenlos?
Ja — der vollständige Text von „OpenAI API: chat.completions und Streaming“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „OpenAI API: chat.completions und Streaming“?
OpenAI-Client, Nachrichtenliste, system/user/assistant-Rollen, Streaming mit stream=True. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „OpenAI API: chat.completions und Streaming“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- OpenAI API: chat.completions und Streaming
- Anthropic Claude API in Python
- Function Calling und Tool-Nutzung mit LLMs
- Prompt Engineering für produktive LLM-Apps