Interpretador de código de serviço do Agente de IA do Azure
O Interpretador de Código 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 o código iterativamente para resolver problemas de análise de dados, matemática e código mais desafiadores. Quando o Agente grava o 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 encargos adicionais além das taxas baseadas em token para uso do OpenAI do Azure. Se o Agente chamar o Interpretador de Código simultaneamente em dois threads diferentes, duas sessões de interpretador de código serão criadas. Cada sessão fica ativa por padrão por uma hora.
Modelos com suporte
A página de modelos contém as informações mais atualizadas sobre regiões/modelos em que há suporte para agentes e interpretador de código.
É recomendável usar agentes com os modelos mais recentes para aproveitar os novos recursos, janelas de contexto maiores e dados de treinamento mais atualizados.
Definir importações e criar um cliente de projeto
Para usar o interpretador de código, primeiro adicione as instruções import
mostradas no exemplo e crie um cliente de projeto, que conterá uma cadeia de conexão ao projeto de IA e será usado para autenticar chamadas à 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 arquivo
Carregue o arquivo usando a função upload_and_poll()
, especificando o caminho do arquivo e a finalidade 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}")
Criar um agente com a ferramenta de interpretador de código
Defina a ferramenta code_interpreter
com CodeInterpreterTool()
e inclua a ID do arquivo que você carregou. Posteriormente, crie o agente com tools
definido como code_interpreter.definitions
e tool_resources
definido como 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,
)
Criar um thread, uma mensagem e obter a resposta do agente
Em seguida, crie um thread com create_thread()
e anexe uma mensagem a ela usando create_message()
que disparará a ferramenta de interpretador de código. Posteriormente, crie e execute uma execução com create_and_process_run()
. Depois que a execução for concluída, você poderá excluir o arquivo do agente com delete_file()
para liberar espaço no agente. Por fim, 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 por meio do image_contents
da resposta e chamando save_file()
com um nome e a 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 arquivo compatíveis
Formato de arquivo | Tipo 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 |
Confira também
- Saiba mais sobre agentes.