Interprete di codice del servizio Foundry Agent (classico)

Nota

Questo documento fa riferimento agli agenti Microsoft Foundry (versione classica).

🔍 Visualizzare la nuova documentazione relativa all'interprete del codice. Gli agenti (versione classica) sono ora deprecati e verranno ritirati il 31 marzo 2027. Usa i nuovi agenti nel servizio Microsoft Foundry Agents, ora generalmente disponibile. Seguire la guida alla migrazione per aggiornare i carichi di lavoro.

L'interprete del codice consente agli agenti di scrivere ed eseguire Python codice in un ambiente di esecuzione in modalità sandbox. Quando l'interprete del codice è abilitato, l'agente può eseguire il codice in modo iterativo per risolvere problemi più complessi di codice, matematica e analisi dei dati o creare grafici e diagrammi. Quando l'agente scrive codice che non riesce a essere eseguito, può iterare su questo codice modificandolo e rieseguendolo fino a quando l'esecuzione del codice riesce.

Importante

L'interprete del codice ha addebiti aggiuntivi oltre alle tariffe basate su token per l'utilizzo di Azure OpenAI. Se l'agente chiama l'interprete del codice contemporaneamente in due thread diversi, vengono create due sessioni dell'interprete di codice. Ogni sessione è attiva per impostazione predefinita per 1 ora con un timeout di inattività di 30 minuti.

Prerequisiti

Esempi di codice

Creare un agente con interprete di codice

code_interpreter = CodeInterpreterTool()

# An agent is created with the Code Interpreter capabilities:
agent = project_client.agents.create_agent(
    model=os.environ["MODEL_DEPLOYMENT_NAME"],
    name="my-agent",
    instructions="You are helpful agent",
    tools=code_interpreter.definitions,
    tool_resources=code_interpreter.resources,
)

Allegare un file per l'interprete di codice da usare

Se si vuole usare un file con l'interprete di codice, è possibile usare la upload_and_poll funzione .

file = agents_client.files.upload_and_poll(file_path=asset_file_path, purpose=FilePurpose.AGENTS)
print(f"Uploaded file, file ID: {file.id}")

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

Creare un agente con interprete di codice

var projectEndpoint = System.Environment.GetEnvironmentVariable("ProjectEndpoint");
var modelDeploymentName = System.Environment.GetEnvironmentVariable("ModelDeploymentName");

PersistentAgentsClient client = new(projectEndpoint, new DefaultAzureCredential());

PersistentAgent agent = client.Administration.CreateAgent(
    model: modelDeploymentName,
    name: "My Friendly Test Agent",
    instructions: "You politely help with math questions. Use the code interpreter tool when asked to visualize numbers.",
    tools: [new CodeInterpreterToolDefinition()]
);

Allegare un file per l'interprete di codice da usare

Se si vuole che un file venga usato con l'interprete di codice, è possibile allegarlo al messaggio.

PersistentAgentFileInfo uploadedAgentFile = client.Files.UploadFile(
    filePath: "sample_file_for_upload.txt",
    purpose: PersistentAgentFilePurpose.Agents);
var fileId = uploadedAgentFile.Id;

var attachment = new MessageAttachment(
    fileId: fileId,
    tools: tools
);

// attach the file to the message
PersistentThreadMessage message = client.Messages.CreateMessage(
    threadId: thread.Id,
    role: MessageRole.User,
    content: "Can you give me the documented information in this file?",
    attachments: [attachment]
);

Creare un agente con interprete di codice

// Create the code interpreter tool
const codeInterpreterTool = ToolUtility.createCodeInterpreterTool();

// Enable the code interpreter tool during agent creation
const agent = await client.createAgent("gpt-4o", {
  name: "my-agent",
  instructions: "You are a helpful agent",
  tools: [codeInterpreterTool.definition],
  toolResources: codeInterpreterTool.resources,
});
console.log(`Created agent, agent ID: ${agent.id}`);

Allegare un file per l'interprete di codice da usare

Se si vuole usare un file con l'interprete di codice, è possibile allegarlo allo strumento.

// Upload file and wait for it to be processed
const filePath = "./examplefile.csv";
const localFileStream = fs.createReadStream(filePath);
const localFile = await client.files.upload(localFileStream, "assistants", {
  fileName: "localFile",
});
// Create code interpreter tool
const codeInterpreterTool = ToolUtility.createCodeInterpreterTool([localFile.id]);

Creare un agente con lo strumento dell'interprete del codice

curl --request POST \
  --url $AZURE_AI_FOUNDRY_PROJECT_ENDPOINT/assistants?api-version=$API_VERSION \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "instructions": "You are an AI assistant that can write code to help answer math questions.",
    "tools": [
      { "type": "code_interpreter" }
    ],
    "model": "gpt-4o-mini",
    "tool_resources"{
      "code interpreter": {
      }
    }
  }'
String agentName = "code_interpreter_agent";
CodeInterpreterToolDefinition ciTool = new CodeInterpreterToolDefinition();
CreateAgentOptions createAgentOptions = new CreateAgentOptions(modelName).setName(agentName).setInstructions("You are a helpful agent").setTools(Arrays.asList(ciTool));
PersistentAgent agent = administrationClient.createAgent(createAgentOptions);

Allegare un file per l'interprete di codice da usare

Se si vuole usare un file con l'interprete di codice, è possibile allegarlo allo strumento.

FileInfo uploadedFile = filesClient.uploadFile(new UploadFileRequest(
    new FileDetails(BinaryData.fromFile(htmlFile))
    .setFilename("sample.html"), FilePurpose.AGENTS));

MessageAttachment messageAttachment = new MessageAttachment(Arrays.asList(BinaryData.fromObject(ciTool))).setFileId(uploadedFile.getId());

PersistentAgentThread thread = threadsClient.createThread();
ThreadMessage createdMessage = messagesClient.createMessage(
    thread.getId(),
    MessageRole.USER,
    "What does the attachment say?",
    Arrays.asList(messageAttachment),
    null);

Modelli supportati

La pagina dei modelli contiene le informazioni più up-to-date sulle aree/modelli in cui sono supportati agenti e interpreti di codice.

È consigliabile utilizzare agenti con i modelli più recenti per sfruttare le nuove funzionalità, le finestre di contesto più grandi e dati di addestramento più aggiornati.

Tipi di file supportati

Formato file 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 O text/xml
.zip application/zip