Aller au contenu principal

Outil code_interpreter : exécuter du Python

Exécuter du code dans le cloud Mistral

L’outil code_interpreter permet à votre agent d’écrire et d’exécuter du code Python dans un conteneur sandboxé. C’est l’outil idéal pour les calculs, l’analyse de données, la génération de graphiques et la validation de code.

Créer un agent avec code interpreter

from mistralai import Mistral
import os

client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])

agent = client.beta.agents.create(
    model="mistral-medium-latest",
    name="Agent Code",
    instructions="""Vous êtes un assistant de programmation Python.
- Utilisez le code interpreter pour exécuter du code quand nécessaire
- Montrez toujours le code avant de l'exécuter
- Expliquez les résultats de manière claire""",
    tools=[{"type": "code_interpreter"}],
    completion_args={"temperature": 0.3, "top_p": 0.95}
)

Lancer une exécution

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="Calcule les 20 premiers nombres de Fibonacci."
)

L’agent va :

  1. Écrire un script Python pour calculer Fibonacci
  2. L’exécuter dans le sandbox
  3. Vous présenter les résultats avec des explications

Structure de la réponse

La réponse contient trois étapes typiques :

for entry in response.outputs:
    if entry.type == "message.output":
        # Première réponse : "Je vais calculer..." ou résultat final
        print(f"Message : {entry.content}")

    elif entry.type == "tool.execution":
        # Code exécuté et résultat
        print(f"Code : {entry.info.code}")
        print(f"Sortie : {entry.info.code_output}")

Séquence type

  1. message.output — L’agent annonce ce qu’il va faire
  2. tool.execution — Le code est exécuté, info.code contient le script, info.code_output contient la sortie
  3. message.output — L’agent interprète et explique les résultats

Cas d’usage pratiques

Analyse de données

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="""Voici les ventes mensuelles (en K€) : 
    Jan: 120, Fév: 135, Mar: 142, Avr: 128, Mai: 155, Juin: 168
    Calcule la moyenne, la médiane, l'écart-type et la tendance."""
)

Génération de graphiques

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="Crée un graphique en barres des parts de marché cloud en Europe : AWS 31%, Azure 25%, GCP 11%, OVH 8%, Autres 25%"
)

L’agent utilise matplotlib pour générer le graphique. Le résultat est un fichier image accessible dans la réponse.

Validation de code

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="""Vérifie si cette fonction est correcte :
    
def is_palindrome(s):
    return s == s[::-1]

Teste-la avec : "radar", "hello", "kayak", "Madam"
"""
)

Opérations mathématiques complexes

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="Résous le système d'équations : 2x + 3y = 12, 4x - y = 5"
)

Combiner avec d’autres outils

Un agent peut avoir plusieurs outils activés simultanément :

agent = client.beta.agents.create(
    model="mistral-large-latest",
    name="Analyste Complet",
    description="Recherche + Calcul",
    instructions="Recherchez des données récentes puis analysez-les avec du code.",
    tools=[
        {"type": "web_search"},
        {"type": "code_interpreter"}
    ]
)

response = client.beta.conversations.start(
    agent_id=agent.id,
    inputs="Cherche le cours actuel du Bitcoin et calcule son évolution en pourcentage sur les 30 derniers jours."
)

L’agent choisit automatiquement quel outil utiliser à chaque étape.

Limitations du sandbox

  • Bibliothèques limitées — Les packages standards Python sont disponibles (numpy, pandas, matplotlib, etc.) mais pas tous les packages tiers
  • Pas d’accès réseau — Le code s’exécute dans un environnement isolé
  • Temps limité — Les exécutions longues sont interrompues
  • Pas de persistance — Les fichiers créés dans une exécution ne persistent pas entre les appels

Points clés à retenir

  • code_interpreter exécute du Python dans un sandbox sécurisé côté Mistral
  • La réponse contient le code exécuté (info.code) et sa sortie (info.code_output)
  • Idéal pour les calculs, l’analyse de données et la génération de graphiques
  • Peut être combiné avec d’autres outils (web_search, etc.)
  • Le sandbox a des limitations : pas d’accès réseau, bibliothèques limitées, pas de persistance