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

État d’une conversation

Découvrez comment gérer l’état d’une conversation lors des échanges avec un modèle.

OpenAI propose plusieurs façons de gérer l’état d’une conversation pour conserver les informations d’un message ou d’un tour de conversation à l’autre.

Si GPT-5.5 interprète un message d’étape comme la réponse finale, vérifiez que votre intégration conserve correctement le champ phase du message de l’assistant. Pour plus de détails, consultez la section Paramètre de phase.

Gérer manuellement l’état d’une conversation

Chaque requête de génération de texte est indépendante et sans état. Vous pouvez néanmoins mettre en place des conversations à plusieurs tours en transmettant des messages supplémentaires comme paramètres de la requête. Prenons l’exemple d’une blague qui commence par « Toc toc ! ».

Reconstituer manuellement une conversation passée
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input=[
        {"role": "user", "content": "knock knock."},
        {"role": "assistant", "content": "Who's there?"},
        {"role": "user", "content": "Orange."},
    ],
)

print(response.output_text)

En alternant les messages user et assistant, vous transmettez l’état précédent de la conversation au modèle en une seule requête.

Pour transmettre manuellement le contexte d’une réponse à l’autre, reprenez la sortie de la réponse précédente du modèle et ajoutez-la aux données d’entrée de votre prochaine requête.

Pour les requêtes sans état adressées à un modèle de raisonnement, conservez tous les éléments du tableau output de la réponse. Par défaut, l’API Responses renvoie les éléments de raisonnement sous forme chiffrée. Renvoyer l’intégralité de la sortie permet de conserver tels quels les éléments de raisonnement et les valeurs du champ phase des messages de l’assistant. Avec les modèles qui prennent en charge la persistance du raisonnement, vous pouvez utiliser reasoning.context: "all_turns" pour intégrer le raisonnement disponible des tours précédents à la génération suivante. Consultez la section Conserver le raisonnement d’un appel à l’autre.

Lorsque vous renvoyez des éléments de raisonnement, conservez l’historique de conversation à partir duquel le modèle les a produits. Pour comprendre comment les modifications de cet historique influent sur le raisonnement, consultez le guide Conserver le préfixe tel quel.

Dans l’exemple suivant, nous demandons au modèle de raconter une blague, puis de nous en raconter une autre. En ajoutant ainsi les réponses précédentes aux nouvelles requêtes, vous aidez le modèle à poursuivre la conversation de manière naturelle et à conserver le contexte des échanges précédents.

Gérer manuellement l’état d’une conversation avec l’API Responses
from openai import OpenAI

client = OpenAI()

history = [{"role": "user", "content": "tell me a joke"}]

response = client.responses.create(
    model="gpt-6-astra",
    input=history,
    store=False,
)

print(response.output_text)

# Add all response output items, including encrypted reasoning items, to the conversation
history += response.output

history.append({"role": "user", "content": "tell me another"})

second_response = client.responses.create(
    model="gpt-6-astra",
    input=history,
    store=False,
)

print(second_response.output_text)

API OpenAI pour la gestion de l’état des conversations

Nos API facilitent la gestion automatique de l’état d’une conversation et vous évitent de transmettre manuellement les entrées à chaque tour.

Utiliser l’API Conversations

L’API Conversations fonctionne avec l’API Responses pour conserver l’état d’une conversation dans un objet persistant doté de son propre identifiant stable. Une fois l’objet de conversation créé, vous pouvez le réutiliser dans d’autres sessions, sur d’autres appareils ou pour d’autres tâches.

Une conversation peut stocker différents éléments, notamment des messages, des appels d’outils, les sorties de ces outils et d’autres données.

Créer une conversation
conversation = openai.conversations.create()

Dans un échange à plusieurs tours, transmettez conversation lors de la création des réponses suivantes pour conserver l’état et partager le contexte entre ces réponses. Vous évitez ainsi d’avoir à chaîner plusieurs éléments de réponse.

Gérer l’état d’une conversation avec les API Conversations et Responses
response = openai.responses.create(
    model="gpt-6-astra",
    input=[{"role": "user", "content": "What are the 5 Ds of dodgeball?"}],
    conversation=conversation.id,
)

Transmettre le contexte de la réponse précédente

Vous pouvez également gérer l’état d’une conversation en transmettant le contexte d’une réponse à l’autre à l’aide du paramètre previous_response_id. Ce paramètre permet de chaîner les réponses pour créer un fil de conversation.

Chaîner les réponses d’un tour à l’autre en transmettant l’identifiant de la réponse précédente
from openai import OpenAI

client = OpenAI()

response = client.responses.create(
    model="gpt-6-astra",
    input="tell me a joke",
)
print(response.output_text)

second_response = client.responses.create(
    model="gpt-6-astra",
    previous_response_id=response.id,
    input=[{"role": "user", "content": "explain why this is funny."}],
)
print(second_response.output_text)

previous_response_id en mode WebSocket

Si vous utilisez le mode WebSocket de l’API Responses, previous_response_id permet de poursuivre la conversation selon les mêmes règles qu’en mode HTTP. Les échanges se font sur une connexion persistante au moyen d’événements response.create successifs.

Le cache propre à la connexion garde les réponses récentes en mémoire pour permettre une reprise à faible latence. Lorsque vous utilisez stream_id, chaque flux peut conserver sa dernière réponse. Le paramètre previous_response_id détermine toujours de quelle réponse découle la suivante. Un nouveau flux peut donc partir d’une réponse d’un autre flux tant que cette réponse reste disponible. Si l’identifiant est absent du cache et que l’API ne retrouve pas la réponse correspondante, envoyez un nouveau tour en définissant previous_response_id sur null et en transmettant tout le contexte en entrée.

Même si vous utilisez previous_response_id, l’API facture comme tokens d’entrée tous les tokens d’entrée des réponses précédentes de la chaîne.

Gérer la fenêtre de contexte

Comprendre le fonctionnement des fenêtres de contexte vous aidera à créer des fils de conversation et à gérer l’état d’un échange à l’autre avec le modèle.

La fenêtre de contexte correspond au nombre maximal de tokens utilisables dans une seule requête. Ce total comprend les tokens d’entrée, de sortie et de raisonnement. Pour connaître la taille de la fenêtre de contexte de votre modèle, consultez les caractéristiques des modèles.

Gérer le contexte pour la génération de texte

À mesure que vos entrées se complexifient ou que la conversation s’allonge, tenez compte à la fois de la limite de tokens de sortie et de la taille de la fenêtre de contexte. Les entrées et les sorties des modèles se mesurent en tokens. Le modèle analyse les entrées en les décomposant en tokens pour en comprendre le contenu et l’intention, puis assemble des tokens pour produire une sortie cohérente. Chaque modèle impose des limites au nombre de tokens utilisables au cours d’une requête de génération de texte.

  • Les tokens de sortie sont les tokens que le modèle génère en réponse à un prompt. Les limites de tokens de sortie varient selon le modèle. Par exemple, gpt-4o-2024-08-06 peut générer jusqu’à 16 384 tokens de sortie.
  • La fenêtre de contexte fixe une limite commune aux tokens d’entrée et de sortie (et, pour certains modèles, aux tokens de raisonnement). Comparez les tailles des fenêtres de contexte de nos modèles. Par exemple, gpt-4o-2024-08-06 dispose d’une fenêtre de contexte de 128 000 tokens au total.

Un prompt volumineux, par exemple si vous ajoutez du contexte, des données ou des exemples pour le modèle, risque de dépasser la taille de sa fenêtre de contexte. Les sorties peuvent alors être tronquées.

Utilisez l’outil de tokenisation, qui s’appuie sur la bibliothèque tiktoken, pour connaître le nombre de tokens que contient une chaîne de texte donnée.

Par exemple, si vous envoyez une requête à l’API Responses avec un modèle doté de capacités de raisonnement, comme le modèle o1, les tokens suivants comptent dans le total de la fenêtre de contexte :

  • Tokens d’entrée (les entrées que vous incluez dans le tableau input pour l’API Responses)
  • Tokens de sortie (les tokens générés en réponse à votre prompt)
  • Tokens de raisonnement (les tokens utilisés par le modèle pour préparer sa réponse)

Si le nombre de tokens générés dépasse la limite de la fenêtre de contexte, l’API peut tronquer la réponse.

Schéma de la fenêtre de contexte

Vous pouvez estimer le nombre de tokens que vos messages utiliseront avec l’outil de tokenisation.

Compactage

Les instructions détaillées sur le compactage figurent désormais dans le guide Compactage.

Étapes suivantes

Pour découvrir des exemples plus précis et des cas d’usage, consultez l’OpenAI Cookbook. Les guides suivants expliquent comment utiliser les API pour étendre les capacités des modèles :