Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Items die in dit artikel zijn gemarkeerd (preview) zijn momenteel beschikbaar als openbare preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure previews voor meer informatie.
Met een aangepaste code-interpreter hebt u volledige controle over de runtime-omgeving voor door de agent gegenereerde Python code. U kunt aangepaste Python-pakketten, rekenresources en Azure Container Apps-omgeving-instellingen configureren. De code-interpretercontainer maakt een MCP-server (Model Context Protocol) beschikbaar.
Gebruik een aangepaste code-interpreter wanneer het ingebouwde Code Interpreter-hulpprogramma voor agents niet aan uw vereisten voldoet, bijvoorbeeld wanneer u specifieke Python-pakketten, aangepaste containerinstallatiekopieën of toegewezen rekenresources nodig hebt.
Zie Verbinding maken met Model Context Protocol-servers (preview) voor meer informatie over MCP en hoe agents verbinding maken met MCP-hulpprogramma's.
Gebruiksondersteuning
In dit artikel worden de Azure CLI en een runnable voorbeeldproject gebruikt.
In de volgende tabel ziet u SDK- en installatieondersteuning.
| ondersteuning voor Microsoft Foundry | Python SDK | C#SDK | JavaScript SDK | Java SDK | REST API | Basisagent instellen | Standaardagent configureren |
|---|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | - | ✔️ |
Zie Best practices voor het gebruik van tools in Microsoft Foundry Agent Service voor de meest recente SDK- en API-ondersteuning voor agenten.
SDK-ondersteuning
De aangepaste code-interpreter maakt gebruik van het type MCP-hulpprogramma. Elke SDK die ONDERSTEUNING biedt voor MCP-hulpprogramma's, kan een aangepaste code-interpreteragent maken. De .NET SDK is momenteel in een preview-fase. Zie Maak een agent met aangepaste code-interpreter voor de stappen voor het inrichten van infrastructuur (Azure CLI Bicep).
Voorwaarden
- Azure CLI versie 2.60.0 of hoger.
- (Optioneel) uv voor sneller Python pakketbeheer.
- Een Azure-abonnement en resourcegroep met de volgende roltoewijzingen:
- Een Azure AI Foundry SDK. Zie de quickstart voor installatie.
Voordat u begint
Deze procedure voorziet Azure infrastructuur, met inbegrip van Azure Container Apps resources. Controleer de Azure vereisten voor kosten en governance van uw organisatie voordat u implementeert.
Een agent maken met een aangepaste code-interpreter
De volgende stappen laten zien hoe u de infrastructuur inricht en een agent maakt die gebruikmaakt van een aangepaste code-interpreter MCP-server. De infrastructuurinstallatie is van toepassing op alle talen. Taalspecifieke codevoorbeelden volgen.
De preview-functie registreren
Registreer de MCP-serverfunctie voor Azure Container Apps dynamische sessies:
az feature register --namespace Microsoft.App --name SessionPoolsSupportMCP
az provider register -n Microsoft.App
De voorbeeldcode ophalen
Kloon de voorbeeldcode in de GitHub-opslagplaats en navigeer naar de map samples/python/prompt-agents/code-interpreter-custom in uw terminal.
De infrastructuur inrichten
Als u de infrastructuur wilt inrichten, voert u de volgende opdracht uit met behulp van de Azure CLI (az):
az deployment group create \
--name custom-code-interpreter \
--subscription <your_subscription> \
--resource-group <your_resource_group> \
--template-file ./infra.bicep
Opmerking
De implementatie kan maximaal één uur duren, afhankelijk van het aantal stand-by-exemplaren dat u aanvraagt. De toewijzing van dynamische sessiegroepen is de langste stap.
De agent configureren en uitvoeren
Kopieer het .env.sample bestand van de opslagplaats naar .env en vul de waarden uit de uitvoer van de implementatie in. U vindt deze waarden in de Azure-portal onder de resourcegroep.
Installeer de Python-afhankelijkheden met behulp van uv sync of pip install. Voer ten slotte uit ./main.py.
Codevoorbeeld
In het volgende Python-voorbeeld ziet u hoe u een agent maakt met een MCP-hulpprogramma voor een aangepaste code-interpreter.
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import PromptAgentDefinition, MCPTool
# Format: "https://resource_name.ai.azure.com/api/projects/project_name"
PROJECT_ENDPOINT = "your_project_endpoint"
MCP_SERVER_URL = "https://your-mcp-server-url"
# Optional: set to your project connection ID if your MCP server requires authentication
MCP_CONNECTION_ID = "your-mcp-connection-id"
# Create clients to call Foundry API
project = AIProjectClient(
endpoint=PROJECT_ENDPOINT,
credential=DefaultAzureCredential(),
)
openai = project.get_openai_client()
# Configure the custom code interpreter MCP tool
custom_code_interpreter = MCPTool(
server_label="custom-code-interpreter",
server_url=MCP_SERVER_URL,
project_connection_id=MCP_CONNECTION_ID,
)
# Create an agent with the custom code interpreter
agent = project.agents.create_version(
agent_name="CustomCodeInterpreterAgent",
definition=PromptAgentDefinition(
model="gpt-5-mini",
instructions="You are a helpful assistant that can run Python code to analyze data and solve problems.",
tools=[custom_code_interpreter],
),
description="Agent with custom code interpreter for data analysis.",
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")
# Test the agent with a simple calculation
response = openai.responses.create(
input="Calculate the factorial of 10 using Python.",
extra_body={"agent_reference": {"name": agent.name, "type": "agent_reference"}},
)
print(f"Response: {response.output_text}")
# Clean up
project.agents.delete_version(agent_name=agent.name, agent_version=agent.version)
print("Agent deleted")
Verwachte uitvoer
Wanneer u het voorbeeld uitvoert, ziet u uitvoer die vergelijkbaar is met:
Agent created (id: agent-xxxxxxxxxxxx, name: CustomCodeInterpreterAgent, version: 1)
Response: The factorial of 10 is 3,628,800. I calculated this using Python's math.factorial() function.
Agent deleted
Codevoorbeeld
In het volgende C#-voorbeeld ziet u hoe u een agent maakt met een MCP-hulpprogramma voor een aangepaste code-interpreter. Zie het voorbeeld van het hulpprogramma MCP in de Azure SDK voor .NET opslagplaats op GitHub voor meer informatie over het werken met MCP-hulpprogramma's in .NET.
using Azure.AI.Projects;
using Azure.AI.Extensions.OpenAI;
using Azure.Identity;
// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
var projectEndpoint = "your_project_endpoint";
var mcpServerUrl = "https://your-mcp-server-url";
// Optional: set to your project connection ID if your MCP server requires authentication
var mcpConnectionId = "your-mcp-connection-id";
// Create project client to call Foundry API
AIProjectClient projectClient = new(
endpoint: new Uri(projectEndpoint),
tokenProvider: new DefaultAzureCredential());
// Create agent with custom code interpreter MCP tool
// Code runs in a sandboxed Azure Container Apps session
McpTool tool = ResponseTool.CreateMcpTool(
serverLabel: "custom-code-interpreter",
serverUri: new Uri(mcpServerUrl));
tool.ProjectConnectionId = mcpConnectionId;
DeclarativeAgentDefinition agentDefinition = new(model: "gpt-5-mini")
{
Instructions = "You are a helpful assistant that can run Python code to analyze data and solve problems.",
Tools = { tool }
};
AgentVersion agent = projectClient.AgentAdministrationClient.CreateAgentVersion(
agentName: "CustomCodeInterpreterAgent",
options: new(agentDefinition));
Console.WriteLine($"Agent created: {agent.Name} (version {agent.Version})");
// Create a response using the agent
ProjectResponsesClient responseClient = projectClient.ProjectOpenAIClient.GetProjectResponsesClientForAgent(agent.Name);
ResponseResult response = responseClient.CreateResponse(
new([ResponseItem.CreateUserMessageItem("Calculate the factorial of 10 using Python.")]));
Console.WriteLine(response.GetOutputText());
// Clean up
projectClient.AgentAdministrationClient.DeleteAgentVersion(
agentName: agent.Name,
agentVersion: agent.Version);
Console.WriteLine("Agent deleted");
Verwachte uitvoer
Agent created: CustomCodeInterpreterAgent (version 1)
The factorial of 10 is 3,628,800.
Agent deleted
Codevoorbeeld
In het volgende TypeScript-codevoorbeeld ziet u hoe u een agent maakt met een MCP-tool voor een aangepaste code-interpreter. Zie het MCP-hulpprogrammavoorbeeld in de Azure SDK voor JavaScript-opslagplaats op GitHub voor een JavaScript-versie.
import { DefaultAzureCredential } from "@azure/identity";
import { AIProjectClient } from "@azure/ai-projects";
// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
const PROJECT_ENDPOINT = "your_project_endpoint";
const MCP_SERVER_URL = "https://your-mcp-server-url";
export async function main(): Promise<void> {
// Create clients to call Foundry API
const project = new AIProjectClient(PROJECT_ENDPOINT, new DefaultAzureCredential());
const openai = project.getOpenAIClient();
// Create agent with custom code interpreter MCP tool
// The custom code interpreter uses require_approval: "never" because code
// runs in a sandboxed Azure Container Apps session
const agent = await project.agents.createVersion("CustomCodeInterpreterAgent", {
kind: "prompt",
model: "gpt-5-mini",
instructions:
"You are a helpful assistant that can run Python code to analyze data and solve problems.",
tools: [
{
type: "mcp",
server_label: "custom-code-interpreter",
server_url: MCP_SERVER_URL,
require_approval: "never",
},
],
});
console.log(`Agent created (name: ${agent.name}, version: ${agent.version})`);
// Send a request to the agent
const response = await openai.responses.create(
{
input: "Calculate the factorial of 10 using Python.",
},
{
body: { agent: { name: agent.name, type: "agent_reference" } },
},
);
console.log(`Response: ${response.output_text}`);
// Clean up
await project.agents.deleteVersion(agent.name, agent.version);
console.log("Agent deleted");
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
Verwachte uitvoer
Agent created (name: CustomCodeInterpreterAgent, version: 1)
Response: The factorial of 10 is 3,628,800. I calculated this using Python's math.factorial() function.
Agent deleted
Voeg de afhankelijkheid toe aan uw pom.xml:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-agents</artifactId>
<version>2.0.0</version>
</dependency>
Codevoorbeeld
import com.azure.ai.agents.AgentsClient;
import com.azure.ai.agents.AgentsClientBuilder;
import com.azure.ai.agents.ResponsesClient;
import com.azure.ai.agents.models.AgentReference;
import com.azure.ai.agents.models.AgentVersionDetails;
import com.azure.ai.agents.models.AzureCreateResponseOptions;
import com.azure.ai.agents.models.McpTool;
import com.azure.ai.agents.models.PromptAgentDefinition;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;
import java.util.Collections;
public class CustomCodeInterpreterExample {
public static void main(String[] args) {
// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
String projectEndpoint = "your_project_endpoint";
String mcpServerUrl = "https://your-mcp-server-url";
// Optional: set to your project connection ID if your MCP server requires authentication
String mcpConnectionId = "your-mcp-connection-id";
// Create clients to call Foundry API
AgentsClientBuilder builder = new AgentsClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint(projectEndpoint);
AgentsClient agentsClient = builder.buildAgentsClient();
ResponsesClient responsesClient = builder.buildResponsesClient();
// Create custom code interpreter MCP tool
// Uses require_approval: "never" because code runs in a sandboxed Container Apps session
McpTool customCodeInterpreter = new McpTool("custom-code-interpreter")
.setServerUrl(mcpServerUrl)
.setProjectConnectionId(mcpConnectionId)
.setRequireApproval("never");
PromptAgentDefinition agentDefinition = new PromptAgentDefinition("gpt-5-mini")
.setInstructions("You are a helpful assistant that can run Python code to analyze data and solve problems.")
.setTools(Collections.singletonList(customCodeInterpreter));
AgentVersionDetails agent = agentsClient.createAgentVersion(
"CustomCodeInterpreterAgent", agentDefinition);
System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion());
// Create a response
AgentReference agentReference = new AgentReference(agent.getName())
.setVersion(agent.getVersion());
Response response = responsesClient.createAzureResponse(
new AzureCreateResponseOptions().setAgentReference(agentReference),
ResponseCreateParams.builder()
.input("Calculate the factorial of 10 using Python."));
System.out.println("Response: " + response.output());
// Clean up
agentsClient.deleteAgentVersion(agent.getName(), agent.getVersion());
System.out.println("Agent deleted");
}
}
Verwachte uitvoer
Agent created: CustomCodeInterpreterAgent (version 1)
Response: The factorial of 10 is 3,628,800.
Agent deleted
Voorwaarden
Stel deze omgevingsvariabelen in:
-
FOUNDRY_PROJECT_ENDPOINT: de EINDPUNT-URL van uw project. -
AGENT_TOKEN: Een bearer-token voor Foundry.
Een toegangstoken ophalen:
export AGENT_TOKEN=$(az account get-access-token --scope "https://ai.azure.com/.default" --query accessToken -o tsv)
Codevoorbeeld
1. Een agent maken met aangepaste code-interpreter
curl -X POST "$FOUNDRY_PROJECT_ENDPOINT/agents?api-version=v1" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AGENT_TOKEN" \
-d '{
"name": "CustomCodeInterpreterAgent",
"definition": {
"kind": "prompt",
"model": "<MODEL_DEPLOYMENT>",
"instructions": "You are a helpful assistant that can run Python code to analyze data and solve problems.",
"tools": [
{
"type": "mcp",
"server_label": "custom-code-interpreter",
"server_url": "<MCP_SERVER_URL>",
"project_connection_id": "<MCP_PROJECT_CONNECTION_ID>",
"require_approval": "never"
}
]
}
}'
2. Een antwoord maken
curl -X POST "$FOUNDRY_PROJECT_ENDPOINT/openai/v1/responses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AGENT_TOKEN" \
-d '{
"agent_reference": {"type": "agent_reference", "name": "CustomCodeInterpreterAgent"},
"input": "Calculate the factorial of 10 using Python."
}'
3. Opschonen
curl -X DELETE "$FOUNDRY_PROJECT_ENDPOINT/agents/CustomCodeInterpreterAgent?api-version=v1" \
-H "Authorization: Bearer $AGENT_TOKEN"
Verwachte uitvoer
{
"id": "resp_xxxxxxxxxxxx",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The factorial of 10 is 3,628,800."
}
]
}
]
}
Uw installatie controleren
Nadat u de infrastructuur hebt ingericht en het voorbeeld hebt uitgevoerd:
- Controleer of de implementatie van de Azure is voltooid.
- Controleer of het voorbeeld verbinding maakt met behulp van de waarden in uw
.envbestand. - Controleer in Microsoft Foundry of uw agent het hulpprogramma aanroept met behulp van tracering. Voor meer informatie, zie Beste werkwijzen voor het gebruik van hulpprogramma's in Microsoft Foundry Agent Service.
Probleemoplossing
| Probleem | Waarschijnlijke oorzaak | Resolutie |
|---|---|---|
| Functieregistratie is nog in behandeling | De az feature register opdracht retourneert de Registering status. |
Wacht tot de registratie is voltooid (kan 15-30 minuten duren). Controleer de status met az feature show --namespace Microsoft.App --name SessionPoolsSupportMCP. Voer vervolgens az provider register -n Microsoft.App opnieuw uit. |
| Implementatie mislukt met machtigingsfout | Vereiste roltoewijzingen ontbreken. | Controleer of u de rollen van Azure AI-eigenaar en Container Apps ManagedEnvironment-bijdrager hebt voor het abonnement of de resourcegroep. |
| Implementatie mislukt met regiofout | De geselecteerde regio biedt geen ondersteuning voor Azure Container Apps dynamische sessies. | Probeer een andere regio. Zie Azure Container Apps regio's voor ondersteunde regio's. |
| Agent roept het hulpprogramma niet aan | De MCP-verbinding is niet juist geconfigureerd of de agentinstructies vragen geen gebruik van het hulpprogramma. | Tracering gebruiken in Microsoft Foundry om de activering van een tool te bevestigen. Controleer of de MCP_SERVER_URL overeenkomt met het gedeployde Container Apps-eindpunt. Zie Best practices. |
| Time-out van MCP-server verbinding | De Container Apps-sessiegroep wordt niet uitgevoerd of heeft geen stand-by-exemplaren. | Controleer de status van de sessiegroep in de Azure-portal. Verhoog standbyInstanceCount indien nodig in uw Bicep-sjabloon. |
| Uitvoering van code mislukt in container | Ontbrekende Python pakketten in de aangepaste container. | Werk uw container-image bij om de vereiste pakketten op te nemen. Bouw de container opnieuw en implementeer deze opnieuw. |
| Verificatiefout bij het maken van verbinding met MCP-server | De referenties voor de projectverbinding zijn ongeldig of verlopen. | Genereer de verbindingsreferenties opnieuw en werk het .env bestand bij. Controleer de MCP_PROJECT_CONNECTION_ID indeling. |
Beperkingen
De API's ondersteunen geen bestandsinvoer of uitvoer, of het gebruik van bestandsarchieven. Als u gegevens in en uit wilt halen, moet u URL's gebruiken, zoals gegevens-URL's voor kleine bestanden en Azure SAS-URL's (Shared Access Signature) van Blob Service voor grote bestanden.
Veiligheid
Als u SAS-URL's gebruikt om gegevens door te geven in of uit de runtime:
- Gebruik KORTdurende SAS-tokens.
- Registreer geen SAS-URL's of sla deze op in broncodebeheer.
- Beperk machtigingen tot het strikt noodzakelijke (bijvoorbeeld alleen lezen of alleen schrijven).
Opschonen
Als u de facturering voor ingerichte resources wilt stoppen, verwijdert u de resources die zijn gemaakt door de voorbeeldimplementatie. Als u een toegewezen resourcegroep voor dit artikel hebt gebruikt, verwijdert u de resourcegroep.
Verwante inhoud
- Verbinding maken met Model Context Protocol-servers (preview)
- Best practices voor het gebruik van tools in de Microsoft Foundry Agent Service
- Azure Container Apps dynamische sessies
- Sessiegroepen met aangepaste containers
- Azure Container Apps omgeving
- Install the Azure CLI
- Code-interpreterhulpprogramma voor software-agents