Structured outputs et 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 exclusivement
Comme pour la recherche web, cette combinaison est réservée aux modèles Grok 4 et versions ultérieures. Les modèles antérieurs ne supportent 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
class AnalyseFinanciere(BaseModel):
revenu_total: float
cout_total: float
marge_brute: float
marge_pourcentage: float
produit_plus_rentable: str
produit_moins_rentable: str
response, parsed = client.chat.parse(
model="grok-4.20-reasoning",
messages=[{
"role": "user",
"content": """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_format=AnalyseFinanciere,
tools=[{"type": "code_execution"}]
)
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
response, parsed = client.chat.parse(
model="grok-4.20-reasoning",
messages=[{
"role": "user",
"content": """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_format=StatistiquesDescriptives,
tools=[{"type": "code_execution"}]
)
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
response, parsed = client.chat.parse(
model="grok-4.20-reasoning",
messages=[{
"role": "user",
"content": "Analyse l'action Apple sur les 30 derniers jours"
}],
response_format=AnalyseMarche,
tools=[
{"type": "web_search"},
{"type": "code_execution"}
]
)
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 bibliothèques disponibles sont limitées (Python standard, numpy, etc.)
- Le temps d’exécution est borné
- 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
- Le modèle écrit et exécute du code pour des calculs précis
- Activez avec
tools=[{"type": "code_execution"}] - Combinable avec
web_searchpour 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