Chat Completions et Responses dans les batchs
Sur cette page
Leçon corrigée le 3 novembre 2026 d’après les bonnes pratiques de xAI :
temperaturerecommandée à 0,7 ettop_pà 0,95 plutôt qu’une température basse. Source : Best practices.
Cours révisé le 2 novembre 2026 d’après la documentation de xAI : la remise batch est de 20 % sur les modèles texte éligibles (et non 50 %), les exemples suivent l’API REST et le SDK officiel
xai-sdk(client.batch.*; l’API Batch de xAI n’a pas le format de celle d’OpenAI, le SDK OpenAI ne s’y applique pas), et l’API Responses passe avant Chat Completions, endpoint hérité chez xAI. Sources : Batch API · Référence REST · Tarifs batch.
Les deux endpoints texte en mode batch
Les endpoints /v1/responses et /v1/chat/completions portent l’essentiel des batchs texte. Sur les modèles éligibles, ils bénéficient tous deux de la remise de 20 %. Mais xAI ne les place pas au même rang : Responses est l’API recommandée, Chat Completions un endpoint hérité, maintenu pour le code existant. Cette leçon détaille leurs spécificités en contexte batch.
Responses dans un batch
En mode batch, l’API Responses accepte les mêmes paramètres qu’en mode synchrone ; seule change l’enveloppe JSONL :
{"custom_id": "sum-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "instructions": "Tu es un expert en synthèse.", "input": "Résume ce rapport financier en cinq points clés : ...", "temperature": 0.3, "max_output_tokens": 500}}
Elle donne accès aux outils serveur de Grok — recherche web, recherche X, exécution de code, MCP —, exécutés pendant le traitement du batch :
{"custom_id": "research-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": [{"role": "user", "content": "Quelles sont les dernières tendances en IA générative ?"}], "tools": [{"type": "web_search"}]}}
Cas d’usage typiques
- Classification de textes (sentiment, catégorie, urgence)
- Extraction d’informations structurées (entités, dates, montants)
- Résumés, reformulations et traductions en masse
- Enrichissement de données par la recherche web
Chat Completions dans un batch
Chat Completions reste accepté, avec son format messages :
{"custom_id": "sum-2", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "grok-4.3", "messages": [{"role": "system", "content": "Tu es un expert en synthèse."}, {"role": "user", "content": "Résume ce rapport financier en cinq points clés : ..."}], "temperature": 0.3, "max_completion_tokens": 500}}
La limite de longueur s’y nomme max_completion_tokens ; l’ancien max_tokens est déprécié. Réservez cet endpoint aux requêtes d’un code déjà écrit pour lui : les nouvelles fonctions arrivent d’abord sur Responses.
Différences en batch
| Caractéristique | Responses | Chat Completions |
|---|---|---|
| Statut chez xAI | Recommandé | Hérité |
| Format d’entrée | input (texte ou liste de messages), instructions | messages |
| Outils serveur | Oui (web, X, code, MCP) | Non documentés |
| Function calling | Oui | Oui |
| Sorties structurées | text.format | response_format |
| Limite de sortie | max_output_tokens | max_completion_tokens |
| Remise batch (modèles éligibles) | 20 % | 20 % |
Paramètres avancés communs
temperature va de 0 à 2 chez xAI, les valeurs au-delà de 1 étant échantillonnées à 1. Les bonnes pratiques de xAI recommandent toutefois de la régler à 0,7, avec top_p à 0,95, et de ne pas s’en écarter beaucoup : la cohérence d’un lot s’obtient d’abord par des instructions précises et par les sorties structurées.
La limite de sortie (max_output_tokens ou max_completion_tokens) doit être définie explicitement : sans elle, une requête peut produire une réponse très longue et consommer des tokens inutilement. Elle ne porte que sur le texte visible, pas sur les tokens de raisonnement.
Les sorties structurées imposent un schéma JSON à la réponse, ce qui rend les résultats exploitables par programme sans analyse fragile. Avec Responses, le schéma se passe dans text.format :
{"custom_id": "classify-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": "Classe ce commentaire : « Livraison rapide, produit conforme. »", "text": {"format": {"type": "json_schema", "name": "classement", "schema": {"type": "object", "properties": {"sentiment": {"type": "string", "enum": ["positif", "neutre", "négatif"]}}, "required": ["sentiment"], "additionalProperties": false}, "strict": true}}}}
Avec Chat Completions, l’équivalent est response_format, de type json_schema (ou json_object pour un JSON valide sans schéma imposé).
Mixer les deux endpoints
Vous pouvez combiner Responses et Chat Completions dans le même batch, chaque ligne désignant son endpoint dans le champ url :
{"custom_id": "simple-1", "method": "POST", "url": "/v1/chat/completions", "body": {"model": "grok-4.3", "messages": [{"role": "user", "content": "Résume en une phrase : ..."}]}}
{"custom_id": "search-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": "Actualités de l'IA cette semaine", "tools": [{"type": "web_search"}]}}
Cette souplesse permet de faire cohabiter, pendant une migration, d’anciennes requêtes Chat Completions et de nouvelles requêtes Responses.
Points clés à retenir
- Responses est l’endpoint recommandé, Chat Completions un endpoint hérité ; les deux bénéficient de la remise de 20 % sur les modèles éligibles
- Responses est nécessaire pour les outils serveur (web, X, code, MCP)
- Fixez
temperatureà 0,7 ettop_pà 0,95, comme le recommande xAI, et une limite de sortie adaptée - Les sorties structurées passent par
text.format(Responses) ouresponse_format(Chat Completions) - Les deux endpoints peuvent coexister dans un même batch