Partager via


Interpréteur de code Azure AI Agent Service

L’interpréteur de code permet aux agents d’écrire et d’exécuter du code Python dans un environnement d’exécution en mode sandbox (bac à sable). Une fois l’interpréteur de code activé, votre agent peut exécuter du code de manière itérative pour résoudre des problèmes de code, de mathématiques et d’analyse de données plus complexes. Quand votre agent écrit du code qui ne s’exécute pas, il peut itérer au sein de ce code en modifiant et en exécutant un code distinct jusqu’à la réussite de l’exécution du code.

Important

L’Interpréteur de code comporte des frais supplémentaires au-delà des frais basés sur le jeton pour l’utilisation d’Azure OpenAI. Si votre agent appelle l’interpréteur de code simultanément dans deux threads distincts, deux sessions d’interpréteur de code sont créées. Chaque session est active pendant une heure par défaut.

Modèles pris en charge

La page des modèles contient les informations les plus récentes sur les régions/modèles où les agents et l’interpréteur de code sont pris en charge.

Nous vous recommandons d’utiliser des agents avec les derniers modèles pour tirer parti des nouvelles fonctionnalités, des fenêtres de contexte plus grandes et des données d’apprentissage plus à jour.

Prise en charge de l’utilisation

Prise en charge d’Azure AI Foundry Kit de développement logiciel (SDK) Python Kit de développement logiciel (SDK) C# Kit de développement logiciel (SDK) JavaScript API REST Configuration d’agent de base Configuration d’agent standard
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Utilisation de l’outil d’interpréteur de code avec un agent

Vous pouvez ajouter l’outil d’interpréteur de code à un agent de façon programmatique à l’aide des exemples de code répertoriés en haut de cet article ou proposés dans le portail Azure AI Foundry. Si vous souhaitez utiliser le portail :

  1. Dans l’écran Créer et déboguer de votre agent, faites défiler vers le bas le volet Configuration à droite jusqu’à action. Sélectionnez ensuite Ajouter.

    Capture d’écran montrant les catégories d’outils disponibles dans le portail Azure AI Foundry.

  2. Sélectionnez Interpréteur de code et suivez les invites pour ajouter l’outil.

    Capture d’écran montrant les outils d’action disponibles dans le portail Azure AI Foundry.

  3. Si vous le souhaitez, vous pouvez charger des fichiers pour que votre agent puisse lire et interpréter des informations à partir de jeux de données, générer du code et créer des graphiques et des diagrammes à l’aide de vos données.

    Capture d’écran montrant la page de chargement de l’interpréteur de code.

Créer un client de projet

Pour utiliser l’interpréteur de code, ajoutez d’abord les instructions import présentées dans l’exemple, puis créez un client de projet, qui contiendra une chaîne de connexion à votre projet IA, et sera utilisé pour authentifier les appels d’API.

import os
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import CodeInterpreterTool
from azure.ai.projects.models import FilePurpose
from azure.identity import DefaultAzureCredential
from pathlib import Path

# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customer needs to login to Azure subscription via Azure CLI and set the environment variables
project_client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(), conn_str=os.environ["PROJECT_CONNECTION_STRING"]
)

Charger un fichier

Chargez le fichier à l’aide de la fonction upload_and_poll(), en spécifiant le chemin d’accès du fichier et l’objectif FilePurpose.AGENTS.

# Upload a file and add it to the client 
file = project_client.agents.upload_file_and_poll(
    file_path="nifty_500_quarterly_results.csv", purpose=FilePurpose.AGENTS
)
print(f"Uploaded file, file ID: {file.id}")

Créer un agent avec l’outil Interpréteur de code

Définissez l’outil code_interpreter avec CodeInterpreterTool(), puis incluez l’ID du fichier que vous avez chargé. Créez ensuite l’agent avec tools ayant la valeur code_interpreter.definitions, et tool_resources ayant la valeur code_interpreter.resources.


code_interpreter = CodeInterpreterTool(file_ids=[file.id])

# create agent with code interpreter tool and tools_resources
agent = project_client.agents.create_agent(
    model="gpt-4o-mini",
    name="my-agent",
    instructions="You are helpful agent",
    tools=code_interpreter.definitions,
    tool_resources=code_interpreter.resources,
)

Créer un thread, un message, et obtenir la réponse de l’agent

Créez ensuite un thread avec create_thread(), puis attachez un message à celui-ci à l’aide de create_message(), ce qui déclenche l’outil Interpréteur de code. Créez et lancez ensuite une exécution avec create_and_process_run(). Une fois l’exécution terminée, vous pouvez supprimer le fichier de l’agent avec delete_file() pour libérer de l’espace dans l’agent. Pour finir, imprimez les messages de l’agent.

# create a thread
thread = project_client.agents.create_thread()
print(f"Created thread, thread ID: {thread.id}")

# create a message
message = project_client.agents.create_message(
    thread_id=thread.id,
    role="user",
    content="Could you please create bar chart in the TRANSPORTATION sector for the operating profit from the uploaded csv file and provide file to me?",
)
print(f"Created message, message ID: {message.id}")

# create and execute a run
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")

if run.status == "failed":
    # Check if you got "Rate limit is exceeded.", then you want to get more quota
    print(f"Run failed: {run.last_error}")

# delete the original file from the agent to free up space (note: this does not delete your version of the file)
project_client.agents.delete_file(file.id)
print("Deleted file")

# print the messages from the agent
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")

# get the most recent message from the assistant
last_msg = messages.get_last_text_message_by_sender("assistant")
if last_msg:
    print(f"Last Message: {last_msg.text.value}")

Télécharger les fichiers générés par l’interpréteur de code

Les fichiers générés par l’interpréteur de code se trouvent dans les réponses sous forme de messages de l’agent. Vous pouvez télécharger le fichier image généré par l’interpréteur de code, en itérant au sein du image_contents de la réponse, et en appelant save_file() avec un nom et l’ID de fichier.

# save the newly created file
for image_content in messages.image_contents:
  print(f"Image File ID: {image_content.image_file.file_id}")
  file_name = f"{image_content.image_file.file_id}_image_file.png"
  project_client.agents.save_file(file_id=image_content.image_file.file_id, file_name=file_name)
  print(f"Saved image file to: {Path.cwd() / file_name}") 

Types de fichiers pris en charge

Format de fichier Type MIME
.c text/x-c
.cpp text/x-c++
.csv application/csv
.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
.jpeg image/jpeg
.jpg image/jpeg
.js text/javascript
.gif image/gif
.png image/png
.tar application/x-tar
.ts application/typescript
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xml application/xml ou text/xml
.zip application/zip

Voir aussi

  • Découvrez plus en détail les agents.