Streaming & mehrstufige Konversationen
Zwei praktische Realitäten beim Bau chatähnlicher Erlebnisse auf der API: Streame, damit Nutzer die Ausgabe sofort sehen, und verwalte den Verlauf selbst, weil die API zustandslos ist.
Streaming
Ohne Streaming wartet der Nutzer auf die gesamte Antwort. Mit Streaming treffen Tokens ein, sobald sie generiert werden — eine weitaus bessere gefühlte Geschwindigkeit. Verwende den Streaming-Helfer des SDK:
- Python
- TypeScript
with client.messages.stream(
model="claude-sonnet-4-6", max_tokens=1024,
messages=[{"role": "user", "content": "Explain RAG in two sentences."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
const stream = client.messages.stream({
model: "claude-sonnet-4-6", max_tokens: 1024,
messages: [{ role: "user", content: "Explain RAG in two sentences." }],
});
for await (const event of stream) {
if (event.type === "content_block_delta") process.stdout.write(event.delta.text ?? "");
}
Mehrstufig: du hältst den Verlauf
Die API hat kein Gedächtnis zwischen Aufrufen (warum). Um eine Konversation fortzusetzen, sende jedes Mal den gesamten bisherigen Austausch zurück:
messages = [{"role": "user", "content": "Hi, I'm planning a trip."}]
# ... get assistant reply, then append both turns:
messages.append({"role": "assistant", "content": assistant_text})
messages.append({"role": "user", "content": "Make it 3 days."})
# send the full `messages` list again
Lange Konversationen füllen das Fenster
Während der Verlauf wächst, frisst er das Kontextfenster und die Kosten steigen. Strategien:
- Fasse zusammen/komprimiere ältere Runden zu einer kurzen Zusammenfassung, die du mitführst.
- Kürze irrelevante frühere Runden.
- Kombiniere mit Prompt-Caching, um nicht erneut für einen stabilen Präfix zu zahlen.