Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Die in diesem Artikel markierten Elemente (Vorschau) sind aktuell als öffentliche Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.
Ein benutzerdefinierter Codedolmetscher bietet Ihnen die vollständige Kontrolle über die Laufzeitumgebung für vom Agent generierten Python Code. Sie können benutzerdefinierte Python Pakete, Computeressourcen und Azure Container Apps Umgebung konfigurieren. Der Codedolmetschercontainer macht einen MCP-Server (Model Context Protocol) verfügbar.
Verwenden Sie einen benutzerdefinierten Codedolmetscher, wenn das integrierte Code-Interpretertool für Agents Ihre Anforderungen nicht erfüllt, z. B. wenn Sie bestimmte Python Pakete, benutzerdefinierte Containerimages oder dedizierte Computeressourcen benötigen.
Weitere Informationen zu MCP und dazu, wie Agents eine Verbindung mit MCP-Tools herstellen, finden Sie unter "Herstellen einer Verbindung mit Modellkontextprotokollservern (Vorschau)".
Nutzungssupport
In diesem Artikel werden die Azure CLI und ein runnables Beispielprojekt verwendet.
✔️ (GA) gibt die allgemeine Verfügbarkeit an, ✔️ (Vorschau) gibt die öffentliche Vorschau an, und ein Gedankenstrich (-) gibt an, dass das Feature nicht verfügbar ist.
| Microsoft Foundry-Support | Python SDK | C# SDK | JavaScript SDK | Java SDK | REST API | Basic-Agent-Setup | Standard-Agent-Setup |
|---|---|---|---|---|---|---|---|
| ✔️ | ✔️ (GA) | ✔️ (Vorschau) | ✔️ (GA) | ✔️ (Vorschau) | ✔️ (GA) | - | ✔️ |
Die neuesten SDK- und API-Unterstützung für Agents-Tools finden Sie unter Bewährte Methoden für die Verwendung von Tools im Microsoft Foundry Agent Service.
SDK-Unterstützung
Der benutzerdefinierte Codedolmetscher verwendet den MCP-Tooltyp. Jedes SDK, das MCP-Tools unterstützt, kann einen benutzerdefinierten Codedolmetscher-Agent erstellen. Die .NET und Java SDKs befinden sich derzeit in der Vorschauversion. Informationen zu den Bereitstellungsschritten der Infrastruktur (Azure CLI, Bicep) finden Sie unter Create an agent with custom code interpreter.
Voraussetzungen
- Azure CLI Version 2.60.0 oder höher.
- (Optional) uv für schnellere Python Paketverwaltung.
- Eine Azure-Abonnement- und Ressourcengruppe mit den folgenden Rollenzuweisungen:
- Eine Azure AI Foundry SDK. Informationen zur Installation finden Sie in der Schnellstartanleitung .
Bevor Sie anfangen
Dieses Verfahren enthält Azure Infrastruktur, einschließlich Azure Container Apps Ressourcen. Überprüfen Sie vor der Bereitstellung die Azure Kosten- und Governanceanforderungen Ihrer Organisation.
Erstellen eines Agents mit benutzerdefiniertem Codedolmetscher
Die folgenden Schritte zeigen, wie Sie die Infrastruktur bereitstellen und einen Agent erstellen, der einen benutzerdefinierten Codedolmetscher-MCP-Server verwendet. Das Infrastruktursetup gilt für alle Sprachen. Sprachspezifische Codebeispiele folgen.
Registrieren des Vorschaufeatures
Registrieren Sie die MCP-Serverfunktion für dynamische Sitzungen in Azure Container Apps.
az feature register --namespace Microsoft.App --name SessionPoolsSupportMCP
az provider register -n Microsoft.App
Beispielcode herunterladen
Klonen Sie den Beispielcode im GitHub-Repository und navigieren Sie zum Ordner samples/python/prompt-agents/code-interpreter-custom in Ihrem Terminal.
Bereitstellen der Infrastruktur
Führen Sie zum Bereitstellen der Infrastruktur den folgenden Befehl mithilfe des Azure CLI aus (az):
az deployment group create \
--name custom-code-interpreter \
--subscription <your_subscription> \
--resource-group <your_resource_group> \
--template-file ./infra.bicep
Hinweis
Die Bereitstellung kann je nach Anzahl der von Ihnen angeforderten Standbyinstanzen bis zu einer Stunde dauern. Die Zuweisung des dynamischen Sitzungspools ist der längste Schritt.
Konfigurieren und Ausführen des Agents
Kopieren Sie die .env.sample Datei aus dem Repository nach .env und füllen Sie die Werte aus dem Bereitstellungsergebnis ein. Sie finden diese Werte im Azure-Portal unter der Ressourcengruppe.
Installieren Sie die Python Abhängigkeiten mithilfe von uv sync oder pip install. Führen Sie abschließend ./main.py aus.
Code-Beispiel
Im folgenden Python Beispiel wird gezeigt, wie Ein Agent mit einem benutzerdefinierten Codedolmetscher-MCP-Tool erstellt wird:
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")
Erwartete Ausgabe
Wenn Sie das Beispiel ausführen, wird die Ausgabe ähnlich der folgenden angezeigt.
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
Code-Beispiel
Im folgenden C#-Beispiel wird gezeigt, wie Sie einen Agent mit einem benutzerdefinierten Codedolmetscher-MCP-Tool erstellen. Weitere Informationen zum Arbeiten mit MCP-Tools in .NET finden Sie im MCP-Toolbeispiel im Azure SDK für .NET Repository auf GitHub.
using Azure.AI.Projects;
using Azure.AI.Projects.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;
PromptAgentDefinition 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.Agents.CreateAgentVersion(
agentName: "CustomCodeInterpreterAgent",
options: new(agentDefinition));
Console.WriteLine($"Agent created: {agent.Name} (version {agent.Version})");
// Create a response using the agent
ProjectResponsesClient responseClient = projectClient.OpenAI.GetProjectResponsesClientForAgent(agent.Name);
ResponseResult response = responseClient.CreateResponse(
new([ResponseItem.CreateUserMessageItem("Calculate the factorial of 10 using Python.")]));
Console.WriteLine(response.GetOutputText());
// Clean up
projectClient.Agents.DeleteAgentVersion(
agentName: agent.Name,
agentVersion: agent.Version);
Console.WriteLine("Agent deleted");
Erwartete Ausgabe
Agent created: CustomCodeInterpreterAgent (version 1)
The factorial of 10 is 3,628,800.
Agent deleted
Code-Beispiel
Im folgenden TypeScript-Beispiel wird gezeigt, wie Sie einen Agent mit einem benutzerdefinierten Codedolmetscher-MCP-Tool erstellen. Eine JavaScript-Version finden Sie im Beispiel zum MCP-Tool im Azure SDK für JavaScript-Repository auf GitHub.
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);
});
Erwartete Ausgabe
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
Fügen Sie die Abhängigkeit zu Ihrem pom.xml hinzu:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-agents</artifactId>
<version>2.0.0-beta.1</version>
</dependency>
Code-Beispiel
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.McpTool;
import com.azure.ai.agents.models.PromptAgentDefinition;
import com.azure.core.util.BinaryData;
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(BinaryData.fromString("\"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.createWithAgent(
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");
}
}
Erwartete Ausgabe
Agent created: CustomCodeInterpreterAgent (version 1)
Response: The factorial of 10 is 3,628,800.
Agent deleted
Voraussetzungen
Legen Sie diese Umgebungsvariablen fest:
-
FOUNDRY_PROJECT_ENDPOINT: Ihre Projektendpunkt-URL. -
AGENT_TOKEN: Ein Bearer-Token für Foundry.
Abrufen eines Zugriffstokens:
export AGENT_TOKEN=$(az account get-access-token --scope "https://ai.azure.com/.default" --query accessToken -o tsv)
Code-Beispiel
1. Erstellen eines Agents mit benutzerdefiniertem Codedolmetscher
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. Erstellen einer Antwort
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. Bereinigen
curl -X DELETE "$FOUNDRY_PROJECT_ENDPOINT/agents/CustomCodeInterpreterAgent?api-version=v1" \
-H "Authorization: Bearer $AGENT_TOKEN"
Erwartete Ausgabe
{
"id": "resp_xxxxxxxxxxxx",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "The factorial of 10 is 3,628,800."
}
]
}
]
}
Überprüfen Des Setups
Nachdem Sie die Infrastruktur bereitgestellt und das Beispiel ausgeführt haben:
- Bestätigen Sie, dass die Azure Bereitstellung erfolgreich abgeschlossen wurde.
- Vergewissern Sie sich, dass das Beispiel eine Verbindung mit den Werten in Ihrer
.envDatei herstellt. - Überprüfen Sie im Microsoft Foundry, ob Ihr Agent das Tool mithilfe der Tracing-Funktion aufruft. Weitere Informationen finden Sie unter Bewährte Methoden für die Verwendung von Tools im Microsoft Foundry Agent Service.
Problembehandlung
| Thema | Wahrscheinliche Ursache | Beschluss |
|---|---|---|
| Die Feature-Registrierung steht noch aus. | Der az feature register Befehl gibt den Zustand zurück Registering . |
Warten Sie, bis die Registrierung abgeschlossen ist (kann 15-30 Minuten dauern). Überprüfen Sie den Status mit az feature show --namespace Microsoft.App --name SessionPoolsSupportMCP. Führen Sie az provider register -n Microsoft.App dann erneut aus. |
| Fehler beim Deployment aufgrund eines Berechtigungsfehlers | Fehlende erforderliche Rollenzuweisungen. | Bestätigen Sie, dass Sie die Azure AI Owner und Container Apps ManagedEnvironment Contributor Rollen über das Abonnement oder die Ressourcengruppe haben. |
| Bereitstellung ist fehlgeschlagen aufgrund eines Regionsfehlers | Der ausgewählte Bereich unterstützt Azure Container Apps dynamische Sitzungen nicht. | Probieren Sie eine andere Region aus. Informationen zu unterstützten Regionen finden Sie unter Azure Container Apps. |
| Agent ruft das Tool nicht auf | Die MCP-Verbindung ist nicht ordnungsgemäß konfiguriert, oder die Agentanweisungen fordern die Verwendung des Tools nicht. | Verwenden Sie die Tracing-Funktion in Microsoft Foundry, um die Tool-Aufrufe zu bestätigen. Überprüfen Sie, ob MCP_SERVER_URL mit Ihrem bereitgestellten Container-Apps-Endpunkt übereinstimmt. Siehe Bewährte Methoden |
| Timeout für die MCP-Serververbindung | Der Container Apps-Sitzungspool wird nicht ausgeführt oder besitzt keine Standby-Instanzen. | Überprüfen Sie den Sitzungspoolstatus im Azure-Portal. Erhöhen Sie bei Bedarf standbyInstanceCount in Ihrem Bicep-Template. |
| Fehler bei der Codeausführung im Container | Fehlende Python Pakete im benutzerdefinierten Container. | Aktualisieren Sie Ihr Containerimage so, dass erforderliche Pakete enthalten sind. Erstellen Sie den Container neu und stellen Sie ihn erneut bereit. |
| Authentifizierungsfehler beim Herstellen einer Verbindung mit dem MCP-Server | Die Anmeldeinformationen für die Projektverbindung sind ungültig oder abgelaufen. | Generieren Sie die Verbindungsanmeldeinformationen neu, und aktualisieren Sie die .env Datei. Überprüfen Sie das MCP_PROJECT_CONNECTION_ID Format. |
Einschränkungen
Die APIs unterstützen keine direkte Dateieingabe oder -ausgabe oder die Verwendung von Dateispeichern. Um Daten ein- und auszugeben, müssen Sie URLs wie Daten-URLs für kleine Dateien und Azure SAS-URLs (Blob Service Shared Access Signature) für große Dateien verwenden.
Sicherheit
Wenn Sie SAS-URLs zum Übergeben von Daten in oder außerhalb der Laufzeit verwenden:
- Verwenden Sie kurzlebige SAS-Token.
- Protokollieren Sie keine SAS-URLs, oder speichern Sie sie nicht in der Quellcodeverwaltung.
- Bereichsberechtigungen auf das erforderliche Minimum beschränken (z. B. nur-Lesen oder nur-Schreiben).
Aufräumen
Um die Abrechnung für bereitgestellte Ressourcen zu beenden, löschen Sie die von der Beispielbereitstellung erstellten Ressourcen. Wenn Sie eine dedizierte Ressourcengruppe für diesen Artikel verwendet haben, löschen Sie die Ressourcengruppe.
Verwandte Inhalte
- Herstellen einer Verbindung mit Modellkontextprotokollservern (Vorschau)
- Bewährte Methoden für die Verwendung von Tools im Microsoft Foundry Agent Service
- Azure Container Apps Dynamische Sitzungen
- Sitzungspools mit benutzerdefinierten Containern
- Azure Container Apps Umgebung
- Installieren Sie den Azure CLI
- Codedolmetschertool für Agents