Partilhar via


Azure AI Agent Service Code Interpreter

O Code Interpreter permite que os agentes escrevam e executem código Python em um ambiente de execução em área restrita. Com o Interpretador de Código habilitado, seu agente pode executar código iterativamente para resolver problemas mais desafiadores de código, matemática e análise de dados. Quando o Agente escreve código que não é executado, ele pode iterar nesse código modificando e executando código diferente até que a execução do código seja bem-sucedida.

Importante

O Interpretador de Código tem custos adicionais além das taxas baseadas no token de utilização do Azure OpenAI. Se o Agente chamar o Interpretador de Código simultaneamente em dois threads diferentes, duas sessões do interpretador de código serão criadas. Cada sessão fica ativa por predefinição durante uma hora.

Modelos suportados

A página de modelos contém as informações mais atualizadas sobre regiões/modelos onde agentes e interpretador de código são suportados.

Recomendamos o uso de agentes com os modelos mais recentes para aproveitar os novos recursos, janelas de contexto maiores e dados de treinamento mais atualizados.

Suporte de uso

Suporte de fundição de IA do Azure Python SDK SDK C# SDK JavaScript API REST Configuração básica do agente Configuração padrão do agente
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Usando a ferramenta de interpretador de código com um agente

Você pode adicionar a ferramenta de interpretador de código a um agente programaticamente usando os exemplos de código listados na parte superior deste artigo ou o portal do Azure AI Foundry. Se você quiser usar o portal:

  1. Na tela Criar e depurar para seu agente, role para baixo o painel Configuração à direita para ação. Em seguida, selecione Adicionar.

    Uma captura de tela mostrando as categorias de ferramentas disponíveis no portal do Azure AI Foundry.

  2. Selecione Interpretador de código e siga as instruções para adicionar a ferramenta.

    Uma captura de tela mostrando as ferramentas de ação disponíveis no portal do Azure AI Foundry.

  3. Opcionalmente, você pode carregar arquivos para que seu agente leia e interprete informações de conjuntos de dados, gere código e crie gráficos e tabelas usando seus dados.

    Uma captura de tela mostrando a página de upload do interpretador de código.

Criar um cliente de projeto

Para usar o interpretador de código, primeiro adicione as import instruções mostradas no exemplo e crie um cliente de projeto, que conterá uma cadeia de conexão para seu projeto de IA e será usado para autenticar chamadas de 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"]
)

Carregar um ficheiro

Carregue o arquivo usando a upload_and_poll() função, especificando o caminho do arquivo e a FilePurpose.AGENTS finalidade.

# 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}")

Criar um agente com a ferramenta de interpretador de código

Defina a code_interpreter ferramenta com CodeInterpreterTool() e inclua o ID do arquivo que você carregou. Depois, crie o agente com tools set to code_interpreter.definitions e tool_resources set to 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,
)

Crie um thread, uma mensagem e obtenha a resposta do agente

Em seguida, crie um thread com create_thread() e anexe uma mensagem a ele usando create_message() isso acionará a ferramenta de interpretador de código. Depois, crie e execute uma execução com create_and_process_run(). Quando a execução terminar, você poderá excluir o arquivo do agente com delete_file() para liberar espaço no agente. Finalmente, imprima as mensagens do agente.

# 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}")

Baixar arquivos gerados pelo interpretador de código

Os arquivos gerados pelo Interpretador de Código podem ser encontrados nas respostas de mensagem do Agente. Você pode baixar o arquivo de imagem gerado pelo interpretador de código, iterando através da image_contents resposta e chamando save_file() com um nome e o ID do arquivo.

# 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}") 

Tipos de ficheiro suportados

File format Tipo de 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

Consulte também