Aller au contenu principal

Chaîner les conversations

Des conversations sans gestion d’historique

L’un des avantages majeurs de la Responses API est le chaînage de conversations via previous_response_id. Au lieu de renvoyer tout l’historique à chaque requête, vous passez simplement l’identifiant de la réponse précédente. Le serveur xAI se charge de reconstruire le contexte complet.

Conversation multi-tour dans le terminal

1

Première requête

Envoyez votre prompt initial. Récupérez l'id de la réponse (resp-xxx).

2

Requêtes suivantes

Passez previous_response_id avec votre nouveau message. Le serveur reconstruit le contexte.

3

Conversation complète

Chaînez autant de messages que nécessaire. Chaque réponse pointe vers la précédente.

Exemple complet en Python

from openai import OpenAI

client = OpenAI(
    api_key="xai-...",
    base_url="https://api.x.ai/v1"
)

# Tour 1 : présentation
response1 = client.responses.create(
    model="grok-4.20-reasoning",
    instructions="Tu es un professeur de mathématiques patient et pédagogue.",
    input="Bonjour, je voudrais comprendre les dérivées."
)
print(response1.output[0].content[0].text)

# Tour 2 : le modèle se souvient du contexte
response2 = client.responses.create(
    model="grok-4.20-reasoning",
    input="Peux-tu me donner un exemple concret ?",
    previous_response_id=response1.id
)
print(response2.output[0].content[0].text)

# Tour 3 : approfondissement
response3 = client.responses.create(
    model="grok-4.20-reasoning",
    input="Et comment calculer la dérivée de x² + 3x ?",
    previous_response_id=response2.id
)
print(response3.output[0].content[0].text)

Remarquez que chaque requête après la première ne contient que le nouveau message et la référence à la réponse précédente. Le serveur xAI reconstitue automatiquement tout l’historique.

Équivalent curl

# Tour 1
curl https://api.x.ai/v1/responses \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-4.20-reasoning",
    "input": "Bonjour, explique-moi les bases de Python."
  }'
# Récupérez l'id dans la réponse : "id": "resp-abc123"

# Tour 2
curl https://api.x.ai/v1/responses \
  -H "Authorization: Bearer $XAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-4.20-reasoning",
    "input": "Comment faire une boucle for ?",
    "previous_response_id": "resp-abc123"
  }'

Chaînage et instructions

Les instructions (prompt système) définies dans la première requête sont conservées tout au long de la conversation chaînée. Vous n’avez pas besoin de les répéter.

Si vous modifiez les instructions dans une requête chaînée, les nouvelles instructions remplacent les précédentes pour cette requête et les suivantes.

Limites du chaînage

  • La réponse référencée doit exister côté serveur (soit store: true, soit requête récente)
  • Le chaînage accumule les tokens d’historique — chaque requête est facturée pour l’intégralité de la conversation
  • Il n’y a pas de limite au nombre de tours, mais la fenêtre de contexte du modèle s’applique

Points clés à retenir

  • previous_response_id chaîne les conversations sans renvoyer l’historique
  • Le serveur reconstruit le contexte complet automatiquement
  • Les instructions système persistent d’un tour à l’autre
  • Chaque tour est facturé pour tout l’historique cumulé
  • La réponse référencée doit avoir été stockée côté serveur