# Interpréteur de code

Donnez à l'agent un environnement Python (ou R / Bash) isolé pour calculer, transformer des données et tracer des graphiques.

## Vue d'ensemble

`code_interpreter` expose une fonction unique au LLM : *« exécute ce code et dis-moi ce qu'il a affiché ».* Le code tourne dans une **sandbox isolée et éphémère**, avec une isolation au niveau du noyau vis-à-vis de l'hôte, sans réseau par défaut et avec un timeout strict. Chaque appel obtient un sandbox neuf — aucun état n'est conservé entre les appels.

À utiliser quand le modèle doit faire quelque chose qu'il ne fait pas fiablement de tête :

- Math au-delà de quelques décimales (statistiques, finance, conversions d'unités).
- Manipulation de JSON/CSV collés par l'utilisateur ou produits par un nœud précédent.
- Tracé ponctuel (matplotlib → PNG renvoyé en pièce jointe).
- Parsing et reformatage de texte structuré.

À éviter pour : jobs longs, code nécessitant internet (utilisez `shell` ou `function`), persistance entre tours.

## Configuration

| Champ | Valeurs | Notes |
| --- | --- | --- |
| Langage | `python`, `r`, `bash` | Défaut `python`. Image sandbox doit supporter le langage. |
| Timeout | 5–600 secondes | Défaut 60. Kill brutal. |
| Autoriser internet | booléen | Désactivé par défaut. Activez pour `pip install` ou requêtes HTTP. |
| Packages pip supplémentaires | un par ligne | Installés avant l'exécution (Python uniquement). |

## Exemple

Tour utilisateur : *« Quelle est la variance de ces nombres : 4, 7, 13, 16, 22, 24, 31 ? »*

Le LLM génère :

```python
import statistics
valeurs = [4, 7, 13, 16, 22, 24, 31]
print({
    "variance_echantillon": statistics.variance(valeurs),
    "variance_population": statistics.pvariance(valeurs),
})
```

Le sandbox renvoie :

```json
{
  "output": "{'variance_echantillon': 95.95, 'variance_population': 82.24}",
  "details": { "exit_code": 0, "duration_ms": 412 }
}
```

Le modèle répond : *« Variance d'échantillon ≈ 95,95 (variance de population ≈ 82,24). »*

## Bonnes pratiques

- **Dites à l'agent d'utiliser le tool pour la math.** Sans cette consigne, le modèle approxime. *« Pour tout calcul numérique, utilise l'interpréteur »* suffit.
- **Pré-déclarez les packages pip.** Ajoutez `pandas`, `numpy` etc. dans **Extra pip packages** pour éviter le coût d'installation au premier appel.
- **`print`, pas `return`.** Le sandbox capture stdout. `print(resultat)` fonctionne ; une expression nue en fin de cellule non.
- **Les graphiques deviennent des fichiers.** Quand le snippet écrit un PNG via matplotlib, il est exposé en pièce jointe dans la réponse de l'agent.

## Pièges

- **Pas de persistance.** Les variables définies dans un appel disparaissent au suivant. Faites tout en un seul snippet si besoin de multi-étapes.
- **30 s annoncés au LLM, 60 s réels dans la modale.** Le modèle pense disposer de 30 s ; le timeout réel suit la valeur de la modale. En cas de conflit, la modale gagne.
- **Pas d'internet par défaut.** `requests.get(...)` lèvera une erreur DNS sauf si **Autoriser internet** est activé.
- **Quotas sandbox.** Une longue série d'appels dans la même exécution peut saturer le pool — un appel par tour reste préférable.

---

*Source: https://agentbuilder.systalink.sn/docs/tool-code-interpreter — human documentation.*
*Other language: [/docs-md/en/tool-code-interpreter.md](/docs-md/en/tool-code-interpreter.md).*
*Machine-readable index: [/llms.txt](/llms.txt).*
