Streaming (SSE)
Ajoutez stream:true sur l’un ou l’autre point d’accès. Les types d’événements SSE d’Anthropic sont transmis tels quels ; la passerelle ne met rien en tampon.
Pourquoi streamer
- Le délai avant le premier token passe de plusieurs secondes à environ 100 ms.
- Les longues boucles d’appels d’outils ne peuvent pas atteindre le délai d’attente des en-têtes, car l’amont émet
message_startimmédiatement. - Meilleure expérience : affichage progressif plutôt qu’un indicateur de chargement figé.
Types d’événements
message_start— premier événement, renvoie les métadonnées de l’assistant.content_block_start·content_block_delta·content_block_stop— un ensemble par bloc texte ou tool_use. Les deltas sont soittext_delta, soitinput_json_delta(pour les arguments d’outils).message_delta— stop_reason et mise à jour de la consommation à la fin.message_stop— dernier événement.ping— maintien de connexion toutes les ~15 s.
Python (SDK Anthropic)
python
with client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Tell me a haiku about Paris."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()
print("\n--", final.usage)Node / TypeScript
ts
const stream = client.messages.stream({
model: "claude-sonnet-5-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Tell me a haiku about Paris." }],
});
for await (const event of stream) {
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
process.stdout.write(event.delta.text);
}
}
const final = await stream.finalMessage();
console.log("--", final.usage);fetch brut (navigateur, edge)
ts
const r = await fetch("https://api-ai.fr/v1/messages", {
method: "POST",
headers: {
"x-api-key": KEY,
"anthropic-version": "2023-06-01",
"content-type": "application/json",
},
body: JSON.stringify({
model: "claude-sonnet-5-5",
max_tokens: 1024,
stream: true,
messages: [{ role: "user", content: "stream me a poem" }],
}),
});
const reader = r.body!.pipeThrough(new TextDecoderStream()).getReader();
while (true) {
const { value, done } = await reader.read();
if (done) break;
process.stdout.write(value);
}Aucune mise en tampon côté passerelle
Notre passerelle relaie les octets dès que l’amont les émet, sans mise en tampon. Les flux longs peuvent garder la connexion ouverte plusieurs minutes ; en cas de blocage prolongé de l’amont, la passerelle renvoie une 504.
Dernière mise à jour : 2 octobre 2026Une erreur ? support@minedom-france.fr