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.
Wichtig
Elemente, die in diesem Artikel als Vorschau gekennzeichnet sind, befinden sich derzeit in der Vorschau. Diese Vorschau wird ohne Service Level Agreement (SLA) bereitgestellt, und Microsoft empfiehlt sie nicht für Produktionsworkloads. 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.
In dieser Schnellstartanleitung erstellen Sie eine Toolbox , die zwei Tools hinter einem verwalteten Endpunkt kombiniert:
- Websuche, die Antworten auf Ergebnisse öffentlicher Webs in Echtzeit begründet.
- Der Microsoft Learn MCP-Server, der Antworten auf der offiziellen Microsoft-Dokumentation basiert. Es handelt sich um einen öffentlichen Endpunkt, der keine Authentifizierung erfordert.
Anschließend verwenden Sie die Toolbox von einem gehosteten Agent, der in Python geschrieben wurde. Die Toolbox macht einen MCP-Endpunkt verfügbar, sodass der Agent eine Verbindung mit einer einzelnen URL herstellt und jedes Tool zur Laufzeit ermittelt. Sie können die Tools später ändern, ohne den Agentcode zu ändern.
Wenn Sie einen Codierungs-Agent wie GitHub Copilot verwenden, kann die Microsoft Foundry Skill helfen, den Toolboxendpunkt zu erstellen, ihn mit einem gehosteten Agent zu verbinden und die Beispieltools anzupassen.
Voraussetzungen
Dieser Schnellstart basiert auf der Toolchain des gehosteten Agenten. Führen Sie zunächst die Voraussetzungen in der Schnellstartanleitung des gehosteten Agents aus, die das Azure Abonnement, Projektrollen, Python, die Azure Developer CLI (azd) und die microsoft.foundry Erweiterung abdecken.
Verwenden Sie für den Python SDK-Pfad den abschnitt Python weiter unten in diesem Artikel anstelle des Azure Developer CLI- oder VS Code-Workflows. Dieser Pfad erstellt die Toolbox mit project_client.toolboxes.create_version(...)und lädt dann den Hosted-Agent-Code als neue Version hoch und verweist ihn anhand des Namens auf diese Toolbox.
Installieren Sie die in diesem Pfad verwendeten Python Pakete:
pip install "azure-ai-projects>=2.3.0" azure-identity python-dotenv
Sie benötigen ein vorhandenes Foundry-Projekt mit einem bereitgestellten chatfähigen Modell. Der Python SDK-Pfad in dieser Schnellstartanleitung erstellt die Toolbox und die Version des gehosteten Agents, aber er erstellt kein Gerüst für ein neues Foundry-Projekt und keine Modellbereitstellung für Sie.
Verwenden Sie für den .NET SDK-Pfad weiter unten in diesem Artikel den C#-Abschnitt anstelle des Azure Developer CLI- oder VS Code-Workflows. Dieser Pfad erstellt die Toolbox mit AgentToolboxes.CreateVersion(...)und lädt dann den C#-Code für gehosteten Agent als neue Version hoch und verweist ihn anhand des Namens auf diese Toolbox.
Außerdem benötigen Sie das .NET 10 SDK oder höher und ein vorhandenes Foundry-Projekt mit einem bereitgestellten Chat-fähigen Modell.
Außerdem benötigen Sie Visual Studio Code mit der Erweiterung Microsoft Foundry Toolkit, die bei Azure angemeldet ist.
Schritt 1: Initialisieren des gehosteten Agents
Initialisieren Sie einen gehosteten Agent aus dem Beispiel für die Foundry-Toolbox, der eine Verbindung mit einer Toolbox über MCP herstellt und seine Tools dem Modell zur Verfügung stellt. Sie erstellen die Toolbox (my-toolbox) im nächsten Schritt, und zeigen Sie den Agent auf seinen Endpunkt. Führen Sie diese Befehle in einem leeren Verzeichnis aus.
mkdir my-toolbox-agent && cd my-toolbox-agent
azd ai agent init -m "https://github.com/microsoft-foundry/foundry-samples/blob/main/samples/python/hosted-agents/agent-framework/responses/04-foundry-toolbox/azure.yaml" --src src/toolbox-agent
Folgen Sie den Anweisungen, um Ihr Projekt und eine vorhandene Modellbereitstellung auszuwählen. Wenn Sie aufgefordert werden, die Containerressourcenzuordnung auszuwählen, wählen Sie "1 Kern", "2Gi-Speicher" aus. Das Containerimage des Agents benötigt mehr als die Standardebene. Das --src Flag erstellt ein Gerüst für den Agent in src/toolbox-agent.
Note
Agentmanifeste (agent.manifest.yaml) und eigenständige Agentdefinitionen (agent.yaml) sind veraltet. Ab den Foundry-Erweiterungen azd (azure.ai.agents 1.0.0-beta.1) leben alle gehosteten Agent-Konfigurationen in einem einzigen azure.yaml. Siehe Erstellen von azure.yaml für gehostete Agenten.
Schritt 2: Erstellen der Toolbox
Erstellen Sie die Toolbox, und kopieren Sie dann den zurückgegebenen MCP-Endpunkt. Legen Sie diesen Endpunkt in späteren Schritten als Umgebungsvariable fest.
Die azure.yaml des Beispiels definiert die Toolbox als einen azure.ai.toolbox-Dienst und verknüpft sie über uses: mit dem gehosteten Agentendienst. Wenn Sie die Toolboxkonfiguration ändern, bearbeiten Sie den Toolboxdienst in azure.yaml, nicht src/toolbox-agent/agent.yaml.
Zeigen Sie zunächst die Toolboxbefehle auf das Foundry-Projekt, das Sie während der Initialisierung ausgewählt haben. Verwenden Sie den Endpunkt wieder, den die Initialisierung bereits in Ihrer azd-Umgebung gespeichert hat:
azd env set FOUNDRY_PROJECT_ENDPOINT "$(azd env get-value FOUNDRY_PROJECT_ENDPOINT)"
Das Beispiel enthält ein toolbox.yaml in src/toolbox-agent, das beide Tools hinter einen Endpunkt definiert. Erstellen Sie die Toolbox aus dieser Datei:
azd ai toolbox create my-toolbox --from-file ./src/toolbox-agent/toolbox.yaml
Die erste Version wird automatisch zur Standardversion. Der Befehl druckt den versionierten MCP-Endpunkt der Toolbox. Kopieren Sie den Endpoint Wert aus der Ausgabe. Legen Sie sie in den TOOLBOX_ENDPOINT nächsten Schritten als Umgebungsvariable fest. Dies sieht wie folgt aus:
https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/my-toolbox/versions/1/mcp?api-version=v1
Öffnen Sie Visual Studio Code, und wählen Sie "Foundry Toolkit" in der Aktivitätsleiste aus.
Melden Sie sich bei Ihrem Azure Konto an, wenn Sie dazu aufgefordert werden.
Erweitern Sie unter My Resources zunächst Ihr Projekt und dann Tools.
Wählen Sie in der Ansicht "Extras " das Symbol "+Toolbox hinzufügen " aus.
Geben Sie den Toolboxnamen (
my-toolbox) und eine Beschreibung ein.Wählen Sie die Websuche aus.
Wählen Sie + Add tool aus, fügen Sie einen Remote-MCP-Server hinzu, und geben Sie die Server-URL
https://learn.microsoft.com/api/mcpein. Der Server ist öffentlich, sodass keine Authentifizierung erforderlich ist.Wählen Sie "Veröffentlichen" aus. Durch das Veröffentlichen wird die erste Version der Toolbox erstellt.
Kopieren Sie den MCP-Endpunkt der Toolbox. Führen Sie den folgenden Befehl aus, und kopieren Sie den
endpointWert aus der Ausgabe. Legen Sie sie in den nächsten Schritten alsTOOLBOX_ENDPOINTUmgebungsvariable fest:azd ai toolbox show my-toolbox --output json
Schritt 3: Bereitstellen von Azure Ressourcen
Der Agent liest den MCP-Endpunkt der Toolbox aus der TOOLBOX_ENDPOINT Umgebungsvariable, die azure.yaml aus Ihrer azd-Umgebung aufgelöst wird. Sie legen diesen Wert in den nächsten Schritten fest. Bereitstellen der Azure Ressourcen des Agents:
azd provision
Schritt 4: Agenten lokal ausführen
Verweisen Sie den lokalen Agent auf Ihre Toolbox, indem Sie diese Werte in der Datei
.envinsrc/toolbox-agentfestlegen. Fügen Sie den Endpunkt ein, den Sie in Schritt 2 kopiert haben:FOUNDRY_MODEL_NAME=<your-model-deployment-name> TOOLBOX_ENDPOINT=<versioned-endpoint-from-step-2>azd ai agent runinjiziertFOUNDRY_PROJECT_ENDPOINTund liest die Datei.envfür lokale Ausführungen. Das Beispiel übernimmt für Sie die Verbindung mit der Toolbox, die Header und die Authentifizierung.Starten Sie den Agent:
azd ai agent runDieser Befehl erstellt eine virtuelle Umgebung, installiert Abhängigkeiten und stellt den Agenten unter
http://localhost:8088bereit. Vorschaupakete können während des Setups Pip-Warnungen erzeugen. Diese Warnungen sind nicht blockierend.Senden Sie in einem separaten Terminal Aufforderungen, die die Tools ausüben:
azd ai agent invoke --local "Find the latest release notes for the Azure CLI on the web." azd ai agent invoke --local "How do I create a hosted agent in Microsoft Foundry? Use the Microsoft Learn documentation."
Schritt 5: Bereitstellen für den Foundry Agent Service
Speichern Sie den Endpunkt, den Sie in Schritt 2 kopiert haben, in Ihrer azd-Umgebung, die zur Bereitstellungszeit als azure.yaml aufgelöst wird. Erstellen und bereitstellen Sie dann den Agentcontainer:
azd env set TOOLBOX_ENDPOINT "<versioned-endpoint-from-step-2>"
azd deploy
Wenn der Befehl abgeschlossen ist, zeigt die Ausgabe Links zum Agent-Playground und zum Agent-Endpunkt an. Aufrufen des bereitgestellten Agents:
azd ai agent invoke "What's new in Microsoft Foundry? Use the Microsoft Learn documentation."
Python SDK-Pfad
Führen Sie die folgenden Schritte aus, wenn Sie die Toolbox erstellen und die Version des gehosteten Agents mithilfe des Python SDK anstelle des Azure Developer CLI- oder VS Code-Ablaufs bereitstellen möchten.
1. Erstellen oder Auswählen eines Foundry-Projekts
- Öffnen Sie das Foundry-Portal , und erstellen Sie ein Foundry-Projekt, oder wählen Sie ein vorhandenes Projekt aus.
- Stellen Sie im Projekt ein chatfähiges Modell wie
gpt-5.4-minibereit. - Kopieren Sie den Projektendpunkt aus Overview und den Namen der Bereitstellung aus Build>Deployments.
2. Laden Sie das Toolbox-Beispiel für den gehosteten Agent herunter.
Klonen Sie das Repository für Foundry-Beispiele:
git clone https://github.com/microsoft-foundry/foundry-samples.git
Erstellen Sie einen Arbeitsordner für die Bereitstellungsskripts. Erstellen Sie in diesem Ordner eine .env Datei mit den folgenden Werten:
FOUNDRY_PROJECT_ENDPOINT=<your-project-endpoint>
AZURE_AI_MODEL_DEPLOYMENT_NAME=<your-model-deployment-name>
FOUNDRY_HOSTED_AGENT_NAME=toolbox-agent
TOOLBOX_NAME=my-toolbox
FOUNDRY_SAMPLE_PATH=<full-path-to-foundry-samples/samples/python/hosted-agents/agent-framework/responses/04-foundry-toolbox/src/agent-framework-agent-with-foundry-toolbox-responses>
Schritt 3: Erstellen der Toolbox mit Python
Erstellen Sie eine Datei create_toolbox.py namens im selben Arbeitsordner wie .env:
import os
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import MCPToolboxTool, WebSearchToolboxTool
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
load_dotenv()
endpoint = os.environ["FOUNDRY_PROJECT_ENDPOINT"].rstrip("/")
toolbox_name = os.environ["TOOLBOX_NAME"]
with (
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
):
created = project_client.toolboxes.create_version(
name=toolbox_name,
description="Toolbox with web search and Microsoft Learn MCP.",
tools=[
WebSearchToolboxTool(
name="web_search",
search_context_size="medium",
),
MCPToolboxTool(
server_label="mslearn",
server_url="https://learn.microsoft.com/api/mcp",
require_approval="never",
),
],
)
print(f"Created toolbox version {created.version} for {created.name}")
mcp_endpoint = (
f"{endpoint}/toolboxes/{created.name}/versions/"
f"{created.version}/mcp?api-version=v1"
)
print(f"Toolbox version: {created.version}")
print(f"Toolbox MCP endpoint: {mcp_endpoint}")
Führen Sie das Skript aus:
python create_toolbox.py
Der gehostete Beispiel-Agent kann die Toolbox entweder über TOOLBOX_ENDPOINT oder über FOUNDRY_PROJECT_ENDPOINT plus TOOLBOX_NAME auflösen. Dieser Pfad verwendet TOOLBOX_NAME, sodass Sie den Versionsendpunkt .envnicht speichern müssen.
4. Bereitstellen des gehosteten Agents mit Python
Erstellen Sie eine Datei deploy_toolbox_agent.py namens im selben Arbeitsordner wie .env:
import os
import tempfile
import time
import zipfile
from pathlib import Path
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
AgentEndpointConfig,
CodeConfiguration,
CodeDependencyResolution,
FixedRatioVersionSelectionRule,
HostedAgentDefinition,
ProtocolConfiguration,
ProtocolVersionRecord,
ResponsesProtocolConfiguration,
VersionSelector,
)
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
load_dotenv()
endpoint = os.environ["FOUNDRY_PROJECT_ENDPOINT"]
model_name = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
agent_name = os.environ.get("FOUNDRY_HOSTED_AGENT_NAME", "toolbox-agent")
toolbox_name = os.environ["TOOLBOX_NAME"]
sample_path = Path(os.environ["FOUNDRY_SAMPLE_PATH"]).resolve()
def create_code_zip(source_dir: Path) -> Path:
zip_path = Path(tempfile.gettempdir()) / f"{agent_name}.zip"
excluded = {".git", ".venv", "__pycache__", ".env"}
with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zip_file:
for path in source_dir.rglob("*"):
if not path.is_file():
continue
if any(part in excluded for part in path.parts):
continue
zip_file.write(path, path.relative_to(source_dir))
return zip_path
def wait_for_active_version(project_client: AIProjectClient, version: str) -> None:
for attempt in range(60):
time.sleep(10)
details = project_client.agents.get_version(
agent_name=agent_name,
agent_version=version,
)
status = details["status"]
print(f"Provisioning status: {status} (attempt {attempt + 1}/60)")
if status == "active":
return
if status == "failed":
raise RuntimeError(f"Hosted agent provisioning failed: {dict(details)}")
raise RuntimeError("Timed out waiting for the hosted agent version to become active.")
code_zip_path = create_code_zip(sample_path)
with (
code_zip_path.open("rb") as code_stream,
DefaultAzureCredential() as credential,
AIProjectClient(endpoint=endpoint, credential=credential) as project_client,
):
original_agent_endpoint = None
created = None
try:
created = project_client.agents.create_version_from_code(
agent_name=agent_name,
description="Hosted agent with Foundry Toolbox integration.",
definition=HostedAgentDefinition(
cpu="1",
memory="2Gi",
code_configuration=CodeConfiguration(
runtime="python_3_13",
entry_point=["python", "main.py"],
dependency_resolution=CodeDependencyResolution.REMOTE_BUILD,
),
environment_variables={
"FOUNDRY_PROJECT_ENDPOINT": endpoint,
"AZURE_AI_MODEL_DEPLOYMENT_NAME": model_name,
"TOOLBOX_NAME": toolbox_name,
},
protocol_versions=[
ProtocolVersionRecord(protocol="responses", version="2.0.0")
],
),
code=code_stream,
)
print(f"Created hosted agent version {created.version}")
wait_for_active_version(project_client, created.version)
original_agent_endpoint = project_client.agents.get(
agent_name=agent_name
).agent_endpoint
project_client.agents.update_details(
agent_name=agent_name,
agent_endpoint=AgentEndpointConfig(
version_selector=VersionSelector(
version_selection_rules=[
FixedRatioVersionSelectionRule(
agent_version=created.version,
traffic_percentage=100,
),
]
),
protocol_configuration=ProtocolConfiguration(
responses=ResponsesProtocolConfiguration()
),
),
)
with project_client.get_openai_client(agent_name=agent_name) as openai_client:
response = openai_client.responses.create(
input=(
"How do I create a hosted agent in Microsoft Foundry? "
"Use the Microsoft Learn documentation."
),
)
if response.status != "completed":
raise RuntimeError(f"Agent invocation failed: {response.error}")
print(response.output_text)
finally:
if original_agent_endpoint is not None:
project_client.agents.update_details(
agent_name=agent_name,
agent_endpoint=original_agent_endpoint,
)
if created is not None:
project_client.agents.delete_version(
agent_name=agent_name,
agent_version=created.version,
force=True,
)
Führen Sie das Skript aus:
python deploy_toolbox_agent.py
Dieses Skript lädt das Toolboxbeispiel als neue Version des gehosteten Agents hoch, verweist den gehosteten Agent vorübergehend auf diese Version, ruft es mit einer Microsoft Frage "Lernen" auf und stellt die vorherige Endpunktkonfiguration nach Abschluss wieder her.
5. Überprüfen Sie die durch die Toolbox gestützte Antwort
Wenn Sie die Toolbox richtig konfigurieren, zeigt die Antwort, dass der gehostete Agent die Tools der Toolbox erkannt und unter Verwendung der Microsoft Learn-Dokumentation geantwortet hat.
C#-SDK-Pfad
Verwenden Sie diesen Pfad, um die Toolbox zu erstellen und das C#-Beispiel für gehosteten Agent mit dem .NET SDK anstelle des workflows Azure Developer CLI oder VS Code bereitzustellen.
1. Erstellen oder Auswählen eines Foundry-Projekts
- Öffnen Sie das Foundry-Portal , und erstellen Sie ein Foundry-Projekt, oder wählen Sie ein vorhandenes Projekt aus.
- Stellen Sie im Projekt ein chatfähiges Modell wie
gpt-4obereit. - Kopieren Sie den Projektendpunkt aus Overview und den Namen der Bereitstellung aus Build>Deployments.
2. Laden Sie das Toolbox-Beispiel für den gehosteten Agent herunter.
Klonen Sie das Repository für Foundry-Beispiele:
git clone https://github.com/microsoft-foundry/foundry-samples.git
Das C#-Beispiel für gehosteten Agent befindet sich unter samples/csharp/hosted-agents/agent-framework/foundry-toolbox-server-side/src/foundry-toolbox-server-side-dotnet-agent-framework.
Der Bereitstellungscode in den nächsten Schritten legt diese Umgebungsvariablen für den Container fest:
| Variable | Description |
|---|---|
FOUNDRY_PROJECT_ENDPOINT |
Foundry-Projekt-Endpunkt. |
AZURE_AI_MODEL_DEPLOYMENT_NAME |
Bereitstellungsname des Chatmodells. |
TOOLBOX_NAME |
Name der Toolbox, zu der der Agent eine Verbindung herstellt. |
3. Erstellen der Toolbox mit C#
Erstellen Sie eine .NET Konsolen-App, und installieren Sie die Pakete. Toolbox-APIs befinden sich in der Vorschau, installieren Sie also das Vorabversionspaket Azure.AI.Projects :
dotnet new console --name create-toolbox
cd create-toolbox
dotnet add package Azure.AI.Projects --prerelease
dotnet add package Azure.Identity
Ersetzen Sie Program.cs durch den folgenden Code und setzen Sie endpoint auf den Endpunkt Ihres Projekts:
using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
using OpenAI;
using OpenAI.Responses;
#pragma warning disable AAIP001, OPENAI001
var endpoint = "https://<account>.services.ai.azure.com/api/projects/<project>";
var toolboxName = "my-toolbox";
AIProjectClient projectClient = new(new Uri(endpoint), new DefaultAzureCredential());
AgentToolboxes toolboxes = projectClient.AgentAdministrationClient.GetAgentToolboxes();
ToolboxVersion created = toolboxes.CreateVersion(
name: toolboxName,
tools:
[
new WebSearchToolboxTool { Name = "web_search", SearchContextSize = WebSearchToolSearchContextSize.Medium },
new MCPToolboxTool(serverLabel: "mslearn")
{
ServerUri = new Uri("https://learn.microsoft.com/api/mcp"),
ToolCallApprovalPolicy = new McpToolCallApprovalPolicy(GlobalMcpToolCallApprovalPolicy.NeverRequireApproval),
},
],
description: "Toolbox with web search and Microsoft Learn MCP.");
Console.WriteLine($"Created toolbox version {created.Version} for {created.Name}");
Führen Sie die App aus:
dotnet run
Der gehostete Beispiel-Agent löst die Toolbox von FOUNDRY_PROJECT_ENDPOINT plus TOOLBOX_NAME auf, sodass Sie den versionierten Endpunkt nicht speichern müssen.
4. Bereitstellen des gehosteten Agents mit C#
Erstellen Sie eine zweite Konsolen-App für den Bereitstellungscode:
dotnet new console --name deploy-toolbox-agent
cd deploy-toolbox-agent
dotnet add package Azure.AI.Projects --prerelease
dotnet add package Azure.AI.Extensions.OpenAI
dotnet add package Azure.Identity
Ersetzen Sie Program.cs durch den folgenden Code. Setzen Sie chatModel, samplePath und endpoint auf Ihre Werte.
samplePath ist der vollständige Pfad zum foundry-toolbox-server-side-dotnet-agent-framework Quellordner, den Sie in Schritt 2 geklont haben:
using Azure.AI.Extensions.OpenAI;
using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
using OpenAI.Responses;
#pragma warning disable AAIP001, OPENAI001
var endpoint = "https://<account>.services.ai.azure.com/api/projects/<project>";
var chatModel = "gpt-4o";
var toolboxName = "my-toolbox";
var agentName = "toolbox-agent";
var samplePath =
@"<path-to-foundry-samples>\samples\csharp\hosted-agents\agent-framework\foundry-toolbox-server-side\src\foundry-toolbox-server-side-dotnet-agent-framework";
AIProjectClient projectClient = new(new Uri(endpoint), new DefaultAzureCredential());
var agentsClient = projectClient.AgentAdministrationClient;
HostedAgentDefinition definition = new(cpu: "1", memory: "2Gi")
{
Versions = { new ProtocolVersionRecord(ProjectsAgentProtocol.Responses, "2.0.0") },
CodeConfiguration = new(
runtime: "dotnet_10",
entryPoint: ["dotnet", "foundry-toolbox-server-side.dll"],
dependencyResolution: CodeDependencyResolution.RemoteBuild),
};
definition.EnvironmentVariables.Add("FOUNDRY_PROJECT_ENDPOINT", endpoint);
definition.EnvironmentVariables.Add("AZURE_AI_MODEL_DEPLOYMENT_NAME", chatModel);
definition.EnvironmentVariables.Add("TOOLBOX_NAME", toolboxName);
ProjectsAgentVersion? created = null;
AgentEndpointConfiguration? originalEndpoint = null;
try
{
created = agentsClient.CreateAgentVersionFromCode(
agentName, samplePath, new AgentVersionFromCodeMetadata(definition));
Console.WriteLine($"Created hosted agent version {created.Version}");
for (var attempt = 1; attempt <= 60; attempt++)
{
Thread.Sleep(TimeSpan.FromSeconds(10));
created = agentsClient.GetAgentVersion(agentName, created.Version);
Console.WriteLine($"Provisioning status: {created.Status} (attempt {attempt}/60)");
if (created.Status == AgentVersionStatus.Active) break;
if (created.Status == AgentVersionStatus.Failed)
throw new InvalidOperationException("Hosted agent provisioning failed.");
}
ProjectsAgentRecord agent = agentsClient.GetAgent(agentName);
originalEndpoint = agent.AgentEndpoint;
agentsClient.PatchAgent(agentName, new PatchAgentOptions
{
AgentEndpoint = new AgentEndpointConfiguration
{
VersionSelector = new([new FixedRatioVersionSelectionRule(created.Version, 100)]),
ProtocolConfiguration = new() { Responses = new ResponsesProtocolConfiguration() },
},
});
ProjectResponsesClient responsesClient = projectClient.ProjectOpenAIClient
.GetProjectResponsesClientForAgentEndpoint(agentName);
ResponseResult response = responsesClient.CreateResponse(
"How do I create a hosted agent in Microsoft Foundry? Use the Microsoft Learn documentation.");
Console.WriteLine(response.GetOutputText());
}
finally
{
if (originalEndpoint is not null)
agentsClient.PatchAgent(agentName, new PatchAgentOptions { AgentEndpoint = originalEndpoint });
if (created is not null)
agentsClient.DeleteAgentVersion(agentName, created.Version, force: true);
}
Führen Sie die App aus:
dotnet run
Dieser Code lädt das Toolboxbeispiel als neue Version des gehosteten Agents hoch, verweist den gehosteten Agent vorübergehend auf diese Version, ruft es mit einer Microsoft Frage "Lernen" auf und stellt die vorherige Endpunktkonfiguration wieder her, wenn sie abgeschlossen ist.
5. Überprüfen Sie die durch die Toolbox gestützte Antwort
Wenn Sie die Toolbox richtig konfigurieren, zeigt die Antwort, dass der gehostete Agent die Tools der Toolbox erkannt und unter Verwendung der Microsoft Learn-Dokumentation geantwortet hat.
Bereinigen von Ressourcen
Löschen Sie die Ressourcen, wenn Sie fertig sind, damit Keine Gebühren anfallen.
Löschen Sie die Toolbox:
azd ai toolbox delete my-toolbox --force
Nachdem Sie die Toolbox gelöscht haben, funktioniert der Endpunkt nicht mehr. Entfernen Sie es aus src/toolbox-agent/.env und entfernen Sie es aus Ihrer azd-Umgebung:
azd env set TOOLBOX_ENDPOINT ""
Löschen Sie den Agent und seine Azure Ressourcen:
Warning
Wenn die aktuelle azd Umgebung das Foundry-Projekt erstellt hat, löscht azd down die Ressourcengruppe des Projekts und sämtliche darin enthaltenen Ressourcen dauerhaft. Wenn Sie während der Initialisierung ein vorhandenes Projekt ausgewählt haben, azd down bleibt das Projekt, seine Ressourcengruppe, der gehostete Agent und andere Schnellstartressourcen vorhanden. Um Ressourcen zu löschen, die Sie nicht mehr aus dem vorhandenen Projekt benötigen, löschen Sie sie separat.
azd down
Löschen Sie die Toolbox nach Namen:
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
load_dotenv()
with (
DefaultAzureCredential() as credential,
AIProjectClient(
endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
credential=credential,
) as project_client,
):
project_client.toolboxes.delete(name=os.environ["TOOLBOX_NAME"])
Wenn Sie für diese Schnellstartanleitung eine dedizierte Ressourcengruppe oder ein dediziertes Projekt erstellt haben, löschen Sie sie aus dem Azure-Portal, nachdem Sie die Toolbox, die Chatbereitstellung oder den gehosteten Agent nicht mehr benötigen.
Der Bereitstellungscode löscht bereits die version des gehosteten Agents und stellt die vorherige Endpunktkonfiguration wieder her, wenn sie abgeschlossen ist. Um die Toolbox zu löschen, fügen Sie diesen Code zu einer Konsolen-App hinzu, die die Azure.AI.Projects (Vorabversion) und Azure.Identity Pakete installiert hat:
using Azure.AI.Projects;
using Azure.AI.Projects.Agents;
using Azure.Identity;
#pragma warning disable AAIP001
var endpoint = "https://<account>.services.ai.azure.com/api/projects/<project>";
var toolboxName = "my-toolbox";
AIProjectClient projectClient = new(new Uri(endpoint), new DefaultAzureCredential());
projectClient.AgentAdministrationClient.GetAgentToolboxes().Delete(toolboxName);
Console.WriteLine($"Deleted toolbox '{toolboxName}'.");
Wenn Sie für diese Schnellstartanleitung eine dedizierte Ressourcengruppe oder ein dediziertes Projekt erstellt haben, löschen Sie sie aus dem Azure-Portal, nachdem Sie die Toolbox, die Chatbereitstellung oder den gehosteten Agent nicht mehr benötigen.
Troubleshooting
| Angelegenheit | Lösung |
|---|---|
tools/listgibt keine Microsoft Lerntools zurück. |
Bestätigen Sie, dass das mslearn Werkzeug in toolbox.yaml auf https://learn.microsoft.com/api/mcp zeigt. |
Der Agent startet, meldet jedoch TOOLBOX_ENDPOINT is set but empty oder hat0 keine Tools. |
Setzen Sie TOOLBOX_ENDPOINT auf den versionierten Endpunkt aus Schritt 2 in .env für lokale Ausführungen und führen Sie azd env set TOOLBOX_ENDPOINT "<endpoint>" aus, bevor Sie bereitstellen. |
| Aufrufe an den Toolboxendpunkt schlagen mit einem Autorisierungsfehler fehl. | Stellen Sie sicher, dass jede Anfrage ein Entra-Token mit dem Gültigkeitsbereich https://ai.azure.com/.default enthält. Das Beispiel übernimmt das für Sie. |
Connection refused bei lokaler Ausführung |
Stellen Sie sicher, dass kein anderer Prozess Port 8088verwendet. |
Was Sie gelernt haben
In dieser Schnellstartanleitung führen Sie die folgenden Schritte aus:
- Eine Toolbox entwickelt, die die Websuche und den Microsoft Learn MCP-Server über einen einzigen Endpunkt kombiniert.
- Nutzung der Toolbox über einen gehosteten Agenten, der über das Model Context Protocol verbunden ist, mit der Azure Developer CLI, dem Python SDK oder dem .NET SDK.
- Sie haben den Agent lokal ausgeführt oder remote überprüft und im Foundry Agent Service bereitgestellt.