Aller au contenu principal
Leçon 9 sur 12 · Sorties structurées JSON

Structured outputs et code execution

Leçon 9 sur 12 Mis à jour le 2 novembre 2026 Développeur
Sur cette page
  1. Exécuter du code et structurer les résultats
  2. Fonctionnalité Grok 4 et versions ultérieures
  3. Cas d’usage typique : calculs précis
  4. Exemple : analyse statistique
  5. Combiner web search et code execution
  6. Limites de l’exécution de code
  7. Points clés à retenir

Leçon corrigée le 2 novembre 2026 d’après la documentation de xAI : avec le SDK xai-sdk, les sorties structurées se combinent aux outils en créant la conversation (client.chat.create(..., tools=[code_execution()])), puis en appelant chat.parse(Schema), qui renvoie la réponse et l’objet typé ; l’ancien exemple appelait client.chat.parse(...) avec des arguments de Chat Completions, une méthode qui n’existe dans aucun SDK. Sources : Structured Outputs · Code Execution.

Exécuter du code et structurer les résultats

La combinaison des sorties structurées avec l’exécution de code permet au modèle de calculer des résultats puis de les retourner dans un format structuré. Le modèle écrit du code, l’exécute dans un environnement sécurisé, et formate la sortie selon votre schéma.

Fonctionnalité Grok 4 et versions ultérieures

Comme pour la recherche web, cette combinaison est réservée aux modèles Grok 4 et versions ultérieures — soit toute la gamme actuelle (Grok 4.5, Grok 4.3, variantes grok-4.20). Les modèles antérieurs ne supportaient pas la combinaison d’outils avec les structured outputs.

Cas d’usage typique : calculs précis

Le principal avantage de code execution avec les structured outputs est la précision des calculs. Les LLM font régulièrement des erreurs d’arithmétique. En exécutant du code, les résultats sont mathématiquement exacts.

from pydantic import BaseModel
from xai_sdk import Client
from xai_sdk.chat import user
from xai_sdk.tools import code_execution

client = Client()  # clé lue dans XAI_API_KEY

class AnalyseFinanciere(BaseModel):
    revenu_total: float
    cout_total: float
    marge_brute: float
    marge_pourcentage: float
    produit_plus_rentable: str
    produit_moins_rentable: str

chat = client.chat.create(
    model="grok-4.20-0309-reasoning",
    tools=[code_execution()],
)
chat.append(user("""Voici les ventes du trimestre :
- Produit A : 150 unités à 45 EUR, coût unitaire 28 EUR
- Produit B : 320 unités à 22 EUR, coût unitaire 15 EUR
- Produit C : 85 unités à 120 EUR, coût unitaire 78 EUR

Calcule l'analyse financière complète."""))

response, parsed = chat.parse(AnalyseFinanciere)

print(f"Marge brute : {parsed.marge_brute} EUR")
print(f"Marge : {parsed.marge_pourcentage}%")
print(f"Meilleur produit : {parsed.produit_plus_rentable}")

Le modèle va écrire un script Python pour effectuer les calculs, l’exécuter, puis formater les résultats dans le schéma AnalyseFinanciere.

Exemple : analyse statistique

class StatistiquesDescriptives(BaseModel):
    moyenne: float
    mediane: float
    ecart_type: float
    minimum: float
    maximum: float
    quartile_1: float
    quartile_3: float
    nombre_valeurs: int

chat = client.chat.create(
    model="grok-4.20-0309-reasoning",
    tools=[code_execution()],
)
chat.append(user("""Calcule les statistiques descriptives pour ces données :
[23, 45, 12, 67, 34, 89, 56, 78, 41, 33, 61, 25,
 72, 48, 55, 39, 64, 71, 28, 50]"""))

response, parsed = chat.parse(StatistiquesDescriptives)

print(f"Moyenne : {parsed.moyenne}")
print(f"Écart-type : {parsed.ecart_type}")

Combiner web search et code execution

Vous pouvez activer les deux outils simultanément :

class AnalyseMarche(BaseModel):
    entreprise: str
    cours_actuel: float
    variation_30j: float
    volume_moyen: float
    tendance: str
    recommandation: str

from xai_sdk.tools import web_search

chat = client.chat.create(
    model="grok-4.20-0309-reasoning",
    tools=[web_search(), code_execution()],
)
chat.append(user("Analyse l'action Apple sur les 30 derniers jours"))

response, parsed = chat.parse(AnalyseMarche)

Le modèle va chercher les données récentes sur le web, puis utiliser code execution pour calculer les variations et les moyennes.

Limites de l’exécution de code

  • L’environnement d’exécution est isolé et éphémère
  • Les paquets Python les plus courants sont préinstallés (NumPy, Pandas, Matplotlib, SciPy)
  • Le temps d’exécution et la mémoire sont bornés
  • Pas d’accès réseau depuis le code exécuté
  • Les fichiers créés ne persistent pas entre les appels

Points clés à retenir

  • Code execution + structured outputs nécessite Grok 4 minimum — toute la gamme actuelle est compatible
  • Le modèle écrit et exécute du code pour des calculs précis
  • Activez l’outil avec code_execution() dans le SDK xAI, ou {"type": "code_interpreter"} dans l’API Responses, puis obtenez l’objet typé avec chat.parse(Schema)
  • Combinable avec web_search pour chercher puis calculer
  • Idéal pour les analyses financières, statistiques et mathématiques
  • Les résultats calculés sont exacts, contrairement aux estimations du LLM