For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale

Streaming des réponses de l’API

Découvrez comment recevoir les réponses des modèles de l’API OpenAI en streaming à l’aide d’événements envoyés par le serveur.

Par défaut, lorsque vous envoyez une requête à l’API OpenAI, nous générons l’intégralité de la sortie du modèle avant de la renvoyer dans une seule réponse HTTP. Pour les sorties longues, l’attente peut être importante. Le streaming vous permet de commencer à afficher ou à traiter le début de la sortie du modèle pendant qu’il continue à générer la suite de la réponse.

Ce guide porte sur le streaming HTTP (stream=true) à l’aide d’événements envoyés par le serveur (SSE). Pour utiliser une connexion WebSocket persistante avec des entrées incrémentales via previous_response_id, consultez le mode WebSocket de l’API Responses.

Activez le streaming

Pour commencer à recevoir les réponses en streaming, définissez stream=True dans votre requête au point de terminaison Responses :

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": "Say 'double bubble bath' ten times fast.",
        },
    ],
    stream=True,
)

for event in stream:
    print(event)

L’API Responses utilise des événements sémantiques pour le streaming. Chaque événement est typé selon un schéma prédéfini, ce qui vous permet d’écouter les événements qui vous intéressent.

Pour obtenir la liste complète des types d’événements, consultez la référence de l’API pour le streaming. Voici quelques exemples :

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  } else if (event.type === "response.completed") {
    console.log("\nResponse completed.");
  } else if (event.type === "error") {
    console.error(event.message);
  }
}

Lisez les réponses

Si vous utilisez notre SDK, chaque événement est une instance typée. Vous pouvez également identifier chaque événement à l’aide de sa propriété type.

Certains événements clés du cycle de vie ne sont émis qu’une seule fois, tandis que d’autres sont émis plusieurs fois au cours de la génération de la réponse. Voici les événements couramment écoutés lors du streaming de texte :

- `response.created`
- `response.output_text.delta`
- `response.completed`
- `error`

Pour obtenir la liste complète des événements que vous pouvez écouter, consultez la référence de l’API pour le streaming.

Cas d’utilisation avancés

Pour des cas d’utilisation plus avancés, comme le streaming d’appels d’outils, consultez les guides dédiés suivants :

Risque lié à la modération

Le streaming de la sortie du modèle dans une application en production rend la modération du contenu des complétions plus difficile, car les complétions partielles peuvent être plus difficiles à évaluer. Cela peut avoir des conséquences sur les usages autorisés.

Si vous demandez des scores de modération avec une requête de génération, les scores arrivent une fois que l’intégralité de la sortie générée est disponible. Ils ne sont pas inclus dans les fragments de sortie partiels.