L’Interpréteur de code permet aux modèles d’écrire et d’exécuter du code Python dans un bac à sable pour résoudre des problèmes complexes, notamment en analyse de données, en programmation et en mathématiques. Utilisez-le pour :
- Traiter des fichiers dont les données et la mise en forme varient.
- Générer des fichiers contenant des données et des images de graphiques.
- Écrire et exécuter du code par étapes successives pour résoudre des problèmes. Par exemple, si l’exécution du code échoue, le modèle peut le réécrire et le relancer jusqu’à ce qu’il fonctionne.
- Examiner des images avec
gpt-6-astra. Avec Python, l’Interpréteur de code peut recadrer une image, zoomer sur une zone, faire pivoter l’image ou lire la valeur de chaque pixel individuellement.
L’exemple suivant montre comment appeler l’API Responses pour utiliser l’Interpréteur de code :
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "gpt-6-astra",
"tools": [{
"type": "code_interpreter",
"container": { "type": "auto", "memory_limit": "4g" }
}],
"instructions": "You are a personal math tutor. When asked a math question, write and run code using the python tool to answer the question.",
"input": "I need to solve the equation 3x + 11 = 14. Can you help me?"
}'Nous appelons cet outil « Interpréteur de code ». Le modèle le connaît sous le nom d’« outil Python ». Les modèles comprennent généralement les prompts qui mentionnent l’interpréteur de code. Pour demander explicitement au modèle de l’utiliser, mentionnez « l’outil Python » dans votre prompt.
Conteneurs
L’Interpréteur de code nécessite un objet conteneur. Un conteneur est une machine virtuelle entièrement isolée dans laquelle le modèle peut exécuter du code Python. Il peut contenir les fichiers que vous importez ainsi que ceux que le modèle génère.
Vous pouvez créer des conteneurs en mode automatique ou en mode explicite.
- Mode automatique : comme dans l’exemple ci-dessus, ajoutez la propriété
"container": { "type": "auto", "memory_limit": "4g", "file_ids": ["file-1", "file-2"] }à la configuration de l’outil lorsque vous créez un objet Response. L’API crée automatiquement un conteneur ou réutilise un conteneur actif déjà utilisé par un élémentcode_interpreter_callprésent dans le contexte du modèle. Si vous omettezmemory_limit, le conteneur conserve la capacité par défaut de 1 Go. Dans la réponse à cette requête API, recherchez l’élémentcode_interpreter_callpour trouver lecontainer_iddu conteneur créé ou réutilisé. - Mode explicite : créez un conteneur via le point de terminaison
v1/containersen précisant la valeur dememory_limitdont vous avez besoin (par exemple"memory_limit": "4g"). Utilisez ensuite sonidcomme valeur decontainerdans la configuration de l’outil au sein de l’objet Response. Par exemple :
curl https://api.openai.com/v1/containers \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Container",
"memory_limit": "4g"
}'
# Use the returned container id in the next call:
curl https://api.openai.com/v1/responses \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-astra",
"tools": [{
"type": "code_interpreter",
"container": "cntr_abc123"
}],
"tool_choice": "required",
"input": "use the python tool to calculate what is 4 * 3.82. and then find its square root and then find the square root of that result"
}'Vous avez le choix entre 1g (par défaut), 4g, 16g et 64g. Les capacités supérieures offrent davantage de mémoire vive pour la session. Elles sont facturées aux tarifs des outils intégrés applicables à l’Interpréteur de code. La valeur de memory_limit s’applique pendant toute la durée de vie du conteneur, que vous l’ayez créé automatiquement ou via l’API des conteneurs.
Vous pouvez également accéder aux conteneurs créés en mode automatique via le point de terminaison /v1/containers.
Expiration
Nous vous recommandons vivement de considérer les conteneurs comme éphémères et de stocker sur vos propres systèmes toutes les données liées à l’utilisation de cet outil. Voici comment fonctionne l’expiration :
- Un conteneur expire après 20 minutes d’inactivité. Toute tentative de l’utiliser dans
v1/responseséchoue alors. Vous pouvez encore consulter les métadonnées du conteneur telles qu’elles étaient à son expiration, mais toutes les données associées au conteneur sont définitivement supprimées de nos systèmes. Téléchargez les fichiers dont vous pourriez avoir besoin tant que le conteneur est actif. - Vous ne pouvez pas réactiver un conteneur expiré. Créez un nouveau conteneur et importez à nouveau les fichiers. Tout ce qui se trouvait en mémoire dans l’ancien conteneur, notamment les objets Python, est perdu.
- Toute opération sur le conteneur, comme la récupération du conteneur, l’ajout de fichiers ou leur suppression, met automatiquement à jour l’horodatage
last_active_at.
Utiliser des fichiers
Avec l’Interpréteur de code, le modèle peut créer ses propres fichiers. Par exemple, si vous lui demandez de tracer un graphique ou de créer un fichier CSV, il enregistre le résultat directement dans votre conteneur. Il cite ensuite les fichiers créés dans les annotations de son message suivant. Par exemple :
{
"id": "msg_682d514e268c8191a89c38ea318446200f2610a7ec781a4f",
"content": [
{
"annotations": [
{
"file_id": "cfile_682d514b2e00819184b9b07e13557f82",
"index": null,
"type": "container_file_citation",
"container_id": "cntr_682d513bb0c48191b10bd4f8b0b3312200e64562acc2e0af",
"end_index": 0,
"filename": "cfile_682d514b2e00819184b9b07e13557f82.png",
"start_index": 0
}
],
"text": "Here is the histogram of the RGB channels for the uploaded image. Each curve represents the distribution of pixel intensities for the red, green, and blue channels. Peaks toward the high end of the intensity scale (right-hand side) suggest a lot of brightness and strong warm tones, matching the orange and light background in the image. If you want a different style of histogram (e.g., overall intensity, or quantized color groups), let me know!",
"type": "output_text",
"logprobs": []
}
],
"role": "assistant",
"status": "completed",
"type": "message"
}
Pour télécharger les fichiers générés, appelez la méthode de récupération du contenu d’un fichier du conteneur.
Tous les fichiers fournis en entrée au modèle sont automatiquement importés dans le conteneur. Vous n’avez pas besoin de les y importer vous-même.
Importer et télécharger des fichiers
Pour ajouter de nouveaux fichiers à votre conteneur, utilisez la méthode Créer un fichier dans un conteneur. Ce point de terminaison accepte soit un envoi multipart, soit un corps de requête JSON contenant un file_id.
Pour connaître les fichiers présents, utilisez la méthode Lister les fichiers du conteneur. Pour en télécharger le contenu sous forme d’octets, utilisez la méthode Récupérer le contenu d’un fichier du conteneur.
Exploiter les citations
Le message de l’assistant contient des annotations qui renvoient aux fichiers et aux images générés par le modèle. Les annotations container_file_citation renvoient aux fichiers créés dans le conteneur. Elles contiennent les champs container_id, file_id et filename. Vous pouvez analyser ces annotations pour afficher des liens de téléchargement ou traiter les fichiers d’une autre manière.
Fichiers pris en charge
| Format de fichier | Type MIME |
|---|---|
.c |
text/x-c |
.cs |
text/x-csharp |
.cpp |
text/x-c++ |
.csv |
text/csv |
.doc |
application/msword |
.docx |
application/vnd.openxmlformats-officedocument.wordprocessingml.document |
.html |
text/html |
.java |
text/x-java |
.json |
application/json |
.md |
text/markdown |
.pdf |
application/pdf |
.php |
text/x-php |
.pptx |
application/vnd.openxmlformats-officedocument.presentationml.presentation |
.py |
text/x-python |
.py |
text/x-script.python |
.rb |
text/x-ruby |
.tex |
text/x-tex |
.txt |
text/plain |
.css |
text/css |
.js |
text/javascript |
.sh |
application/x-sh |
.ts |
application/typescript |
.csv |
application/csv |
.jpeg |
image/jpeg |
.jpg |
image/jpeg |
.gif |
image/gif |
.pkl |
application/octet-stream |
.png |
image/png |
.tar |
application/x-tar |
.xlsx |
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
.xml |
application/xml or "text/xml" |
.zip |
application/zip |
Notes d’utilisation
| Disponibilité par API | Limites de débit | Remarques |
|---|---|---|
| 100 requêtes par minute et par organisation |