Aller au contenu principal
Leçon 10 sur 12 · Batch API : traitement en masse

Outils serveur et function calling

Leçon 10 sur 12 Mis à jour le 2 novembre 2026 Développeur
Sur cette page
  1. Enrichir les batchs avec des outils
  2. Outils côté serveur
  3. Function calling côté client
  4. Combinaison d’outils
  5. Limites des outils en batch
  6. Points clés à retenir

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.

Enrichir les batchs avec des outils

Les requêtes batch ne sont pas limitées à du texte brut. Les outils serveur et le function calling fonctionnent aussi en mode asynchrone, avec une différence de nature qu’il faut avoir en tête : les premiers sont exécutés par xAI pendant le traitement, le second vous rend la main.

Outils côté serveur

Les outils serveur s’exécutent pendant le traitement du batch, exactement comme en temps réel : Grok appelle l’outil, reçoit le résultat, l’intègre à son raisonnement, et le batch vous rend la réponse finale. Ils s’emploient avec l’API Responses.

Recherche web

{"custom_id": "news-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": [{"role": "user", "content": "Quels sont les derniers développements en informatique quantique ?"}], "tools": [{"type": "web_search"}]}}

En mode batch, la recherche web sert l’enrichissement de données : vérifier des informations, collecter des faits récents, comparer des fiches avec les sources en ligne.

Recherche X

L’outil x_search interroge les publications de X, utile pour suivre l’opinion sur un sujet ou une marque :

{"custom_id": "x-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": [{"role": "user", "content": "Quel est le sentiment dominant sur X à propos du lancement de ce produit ?"}], "tools": [{"type": "x_search"}]}}

Exécution de code

Grok peut écrire et exécuter du code Python dans un environnement isolé. Dans l’API Responses, l’outil s’appelle code_interpreter (le SDK xAI le nomme code_execution) :

{"custom_id": "calc-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": [{"role": "user", "content": "Calcule la moyenne mobile sur 3 points de ces données : [12, 15, 18, 14, 22, 19, 25, 28, 30, 27]"}], "tools": [{"type": "code_interpreter"}]}}

L’exécution de code est pertinente pour les calculs exacts, les statistiques et les transformations de données, que le modèle réussirait moins sûrement de tête.

Serveurs MCP distants

L’outil mcp connecte Grok à un serveur MCP distant, décrit dans la requête elle-même : aucune configuration préalable du compte n’est nécessaire. server_url et server_label sont obligatoires ; allowed_tools restreint les outils exposés, et authorization transmet un jeton au serveur. Seuls les transports Streamable HTTP et SSE sont acceptés.

{"custom_id": "mcp-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": [{"role": "user", "content": "Que fait le dépôt xai-sdk-python ?"}], "tools": [{"type": "mcp", "server_label": "deepwiki", "server_url": "https://mcp.deepwiki.com/mcp"}]}}

Sans allowed_tools, toutes les définitions d’outils du serveur sont injectées dans le contexte du modèle, et facturées comme des tokens d’entrée à chaque requête du lot : sur 50 000 requêtes, restreindre la liste paie vite.

Function calling côté client

Le function calling est un outil côté client : Grok produit un appel de fonction structuré, mais c’est votre code qui l’exécute. En batch, le modèle vous rend ces appels dans ses résultats, à traiter hors ligne.

Définition des fonctions

Dans l’API Responses, la fonction se déclare à plat, name, description et parameters au premier niveau. tool_choice: "required" oblige le modèle à appeler au moins un outil, ce qui convient à l’extraction :

{"custom_id": "extract-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": [{"role": "user", "content": "Extrais le contact : Jean Dupont, 01 23 45 67 89, [email protected]"}], "tools": [{"type": "function", "name": "enregistrer_contact", "description": "Enregistre un contact extrait du texte", "parameters": {"type": "object", "properties": {"nom": {"type": "string"}, "telephone": {"type": "string"}, "email": {"type": "string"}}, "required": ["nom"]}}], "tool_choice": "required"}}

Traitement des résultats

Avec le SDK, les appels de fonction se lisent dans tool_calls de chaque résultat réussi :

import json

for r in page.succeeded:
    for appel in r.response.tool_calls:
        if appel.function.name == "enregistrer_contact":
            contact = json.loads(appel.function.arguments)
            enregistrer_en_base(r.batch_request_id, contact)

Le function calling en batch est idéal pour l’extraction structurée : vous définissez le schéma des données, Grok lit les documents et produit les appels, puis vous les traitez en masse.

Combinaison d’outils

Vous pouvez combiner plusieurs outils serveur dans une même requête :

{"custom_id": "multi-1", "method": "POST", "url": "/v1/responses", "body": {"model": "grok-4.3", "input": [{"role": "user", "content": "Trouve le cours de clôture du Bitcoin sur les sept derniers jours et calcule sa variation"}], "tools": [{"type": "web_search"}, {"type": "code_interpreter"}]}}

Grok emploie les outils dans l’ordre qu’il juge pertinent : ici, la recherche web pour obtenir les données, puis l’exécution de code pour le calcul.

Limites des outils en batch

  • Les outils serveur allongent le traitement de chaque requête, donc du batch
  • Les requêtes avec recherche dépendent de ce que les sources publient au moment du traitement, pas de la soumission
  • Le function calling ne fait qu’un aller-retour par requête : pour poursuivre, soumettez une nouvelle requête batch qui contient la conversation et les résultats de vos fonctions
  • Les définitions d’outils MCP non filtrées alourdissent chaque requête

Points clés à retenir

  • Les outils serveur (web, X, code, MCP) sont exécutés par xAI pendant le traitement, via l’API Responses
  • Un serveur MCP se décrit dans la requête (server_url, server_label), sans configuration préalable
  • Le function calling rend des appels structurés que vous exécutez côté client
  • Un échange en plusieurs tours exige une nouvelle requête batch par tour
  • Restreignez les outils exposés pour ne pas payer leurs définitions sur chaque requête