Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Les éléments indiqués comme (aperçu) dans cet article sont en aperçu public. Cette version préliminaire est fournie sans contrat de niveau de service, et nous la déconseillons pour les charges de travail en production. Certaines fonctionnalités peuvent ne pas être prises en charge ou avoir des fonctionnalités contraintes. Pour plus d’informations, consultez Conditions d'utilisation supplémentaires pour les versions préliminaires de Microsoft Azure.
Dans ce guide de démarrage rapide, vous créez une boîte à outils qui combine deux outils derrière un point de terminaison managé :
- Recherche web, qui donne lieu à des réponses dans les résultats web publics en temps réel.
- Le serveur MCP Microsoft Learn, qui s’appuie sur la documentation officielle de Microsoft pour ses réponses. Il s’agit d’un point de terminaison public qui ne nécessite aucune authentification.
Vous utilisez ensuite la boîte à outils à partir d’un agent hébergé écrit dans Python. La boîte à outils expose un point de terminaison MCP, de sorte que l’agent se connecte à une URL unique et découvre chaque outil au moment de l’exécution. Vous pouvez modifier les outils ultérieurement sans modifier le code de l’agent.
Si vous utilisez un agent de codage comme GitHub Copilot, la compétence Microsoft Foundry peut aider à générer le point de terminaison de boîte à outils, à le connecter à un agent hébergé et à ajuster les exemples d’outils.
Prerequisites
Ce guide de démarrage rapide s’appuie sur la chaîne d’outils de l’agent hébergé. Suivez d’abord les conditions préalables dans le guide de démarrage rapide de l’agent hébergé, qui couvrent l’abonnement Azure, les rôles de projet, les Python, l’interface CLI Azure développeur (azd) et l’extensionmicrosoft.foundry.
Pour le chemin du KIT de développement logiciel (SDK) Python, utilisez la section Python plus loin dans cet article au lieu du flux de travail AZURE Developer CLI ou VS Code. Ce chemin crée la boîte à outils avec project_client.toolboxes.create_version(...), puis charge le code de l’agent hébergé sous la forme d’une nouvelle version et le pointe vers cette boîte à outils par nom.
Installez les packages Python utilisés dans ce chemin d’accès :
pip install "azure-ai-projects>=2.3.0" azure-identity python-dotenv
Vous avez besoin d’un projet Foundry existant avec un modèle compatible chat déployé. L’option SDK Python dans ce démarrage rapide crée la boîte à outils et la version de l’agent hébergé, mais elle ne génère pas la structure de base d’un nouveau projet Foundry et ne crée pas de déploiement de modèle à votre place.
Vous devez également disposer de Visual Studio Code avec l’extension Microsoft Foundry Toolkit, connecté à Azure.
Étape 1 : Initialiser l’agent hébergé
Initialisez un agent hébergé à partir de l’exemple de boîte à outils Foundry, qui se connecte à une boîte à outils sur MCP et expose ses outils au modèle. Vous créez la boîte à outils (my-toolbox) à l’étape suivante et faites pointer l’agent vers son point de terminaison. Exécutez ces commandes dans un répertoire vide.
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
Suivez les instructions pour sélectionner votre projet et un déploiement de modèle existant. Lorsque vous êtes invité à sélectionner l’allocation de ressources de conteneur, choisissez 1 cœur, 2Gi mémoire. L’image de conteneur de l’agent nécessite un niveau supérieur au niveau par défaut. L’indicateur --src échafaude l’agent en src/toolbox-agent.
Note
Les manifestes de l’agent (agent.manifest.yaml) et les définitions d’agent autonome (agent.yaml) sont déconseillés. À partir des extensions Foundry azd (azure.ai.agents 1.0.0-beta.1), toute la configuration de l’agent hébergé réside dans un seul azure.yaml. Voir Créer un fichier azure.yaml pour les agents hébergés.
Étape 2 : Créer la boîte à outils
Créez la boîte à outils, puis copiez le point de terminaison MCP qu’elle renvoie. Définissez ce point de terminaison en tant que variable d’environnement dans les étapes ultérieures.
Le azure.yaml de l’exemple définit la boîte à outils comme un service azure.ai.toolbox et la connecte au service d’agent hébergé avec uses:. Si vous modifiez la configuration de la boîte à outils, modifiez le service de boîte à outils dans azure.yaml, et non src/toolbox-agent/agent.yaml.
Tout d’abord, pointez les commandes de boîte à outils sur le projet Foundry que vous avez sélectionné lors de l’initialisation. Réutilisez le point de terminaison que l’initialisation a déjà stocké dans votre environnement azd :
azd env set FOUNDRY_PROJECT_ENDPOINT "$(azd env get-value FOUNDRY_PROJECT_ENDPOINT)"
L’exemple comprend un élément toolbox.yaml dans src/toolbox-agent qui définit les deux outils via un même point de terminaison. Créez la boîte à outils à partir de ce fichier :
azd ai toolbox create my-toolbox --from-file ./src/toolbox-agent/toolbox.yaml
La première version devient automatiquement la version par défaut. La commande imprime le point de terminaison MCP versionné de la boîte à outils. Copiez la valeur Endpoint de la sortie. Définissez-la comme variable d’environnement TOOLBOX_ENDPOINT dans les étapes suivantes. Il ressemble à ceci :
https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/my-toolbox/versions/1/mcp?api-version=v1
Ouvrez Visual Studio Code et sélectionnez Foundry Toolkit dans la barre d’activité.
Connectez-vous à votre compte Azure si vous y êtes invité.
Sous Mes ressources, développez votre projet, puis développez Outils.
Dans la vue Outils , sélectionnez l’icône + Ajouter une boîte à outils .
Entrez le nom de la boîte à outils (
my-toolbox) et une description.Sélectionnez Recherche web.
Sélectionnez + Ajouter un outil, choisissez d’ajouter un serveur MCP distant, puis entrez l’URL
https://learn.microsoft.com/api/mcpdu serveur. Le serveur est public, donc aucune authentification n’est requise.Cliquez sur Publier. La publication crée la première version de la boîte à outils.
Copiez le point de terminaison MCP de la boîte à outils. Exécutez la commande suivante et copiez la
endpointvaleur à partir de la sortie. Définissez-la comme variable d’environnementTOOLBOX_ENDPOINTdans les étapes suivantes :azd ai toolbox show my-toolbox --output json
Étape 3 : Approvisionner des ressources Azure
L’agent lit le point de terminaison MCP de la boîte à outils dans la variable d’environnement TOOLBOX_ENDPOINT, que azure.yaml récupère à partir de votre environnement azd. Vous définissez cette valeur dans les étapes suivantes. Provisionnez les ressources Azure de l'agent :
azd provision
Étape 4 : Exécuter l’agent localement
Configurez l’agent local pour qu’il pointe vers votre boîte à outils en définissant ces valeurs dans le fichier
.envsitué danssrc/toolbox-agent. Collez le point de terminaison que vous avez copié à l’étape 2 :FOUNDRY_MODEL_NAME=<your-model-deployment-name> TOOLBOX_ENDPOINT=<versioned-endpoint-from-step-2>azd ai agent runinjecte et lit leFOUNDRY_PROJECT_ENDPOINTfichier pour les exécutions.envlocales. L’exemple gère pour vous la connexion à la boîte à outils, les en-têtes et l’authentification.Démarrez l’agent :
azd ai agent runCette commande crée un environnement virtuel, installe des dépendances et sert l’agent sur
http://localhost:8088. Les packages en version préliminaire peuvent générer des avertissements pip pendant l’installation. Ces avertissements ne sont pas bloquants.Dans un terminal séparé, envoyez des requêtes pour tester les outils :
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."
Étape 5 : Déployer vers Foundry Agent Service
Stockez le point de terminaison que vous avez copié à l’étape 2 dans votre environnement azd, qui azure.yaml récupère la valeur lors du déploiement. Ensuite, générez et déployez le conteneur de l’agent :
azd env set TOOLBOX_ENDPOINT "<versioned-endpoint-from-step-2>"
azd deploy
Une fois la commande terminée, la sortie affiche des liens vers le playground de l’agent et le point de terminaison de l’agent. Appelez l’agent déployé :
azd ai agent invoke "What's new in Microsoft Foundry? Use the Microsoft Learn documentation."
chemin d’accès du KIT de développement logiciel (SDK) Python
Utilisez les étapes suivantes si vous souhaitez créer la boîte à outils et déployer la version de l’agent hébergé à l’aide du kit de développement logiciel (SDK) Python au lieu du flux CLI Azure développeur ou VS Code.
1. Créer ou choisir un projet Foundry
- Ouvrez le portail Foundry et créez un projet Foundry, ou sélectionnez-en un existant.
- Dans le projet, déployez un modèle compatible conversation comme
gpt-5.4-mini. - Copiez le point de terminaison du projet depuis Vue d’ensemble et le nom du déploiement depuis Build>Deployments.
2. Télécharger l’exemple de boîte à outils pour agent hébergé
Clonez le dépôt d’exemples Foundry :
git clone https://github.com/microsoft-foundry/foundry-samples.git
Créez un dossier de travail pour les scripts de déploiement. Dans ce dossier, créez un .env fichier avec ces valeurs :
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>
Étape 3 : Créer la boîte à outils avec Python
Créez un fichier nommé create_toolbox.py dans le même dossier de travail que .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}")
Exécutez le script :
python create_toolbox.py
L’agent hébergé d’exemple peut localiser la boîte à outils à partir de TOOLBOX_ENDPOINT ou de FOUNDRY_PROJECT_ENDPOINT plus TOOLBOX_NAME. Ce chemin utilise TOOLBOX_NAME: vous n’avez donc pas besoin de stocker le point de terminaison avec version dans .env.
4. Déployer l’agent hébergé avec Python
Créez un fichier nommé deploy_toolbox_agent.py dans le même dossier de travail que .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,
)
Exécutez le script :
python deploy_toolbox_agent.py
Ce script télécharge l’exemple de boîte à outils en tant que nouvelle version de l’agent hébergé, fait temporairement pointer l’agent hébergé vers cette version, l’invoque avec une question provenant de Microsoft Learn, puis restaure la configuration précédente du point de terminaison une fois l’opération terminée.
5. Vérifier la réponse prise en charge par la boîte à outils
Si vous configurez correctement la boîte à outils, la réponse indique que l’agent hébergé a découvert les outils de la boîte à outils et a répondu en s’appuyant sur la documentation Microsoft Learn.
Nettoyer les ressources
Supprimez les ressources lorsque vous avez terminé afin de cesser d’encourir des frais.
Supprimez la boîte à outils :
azd ai toolbox delete my-toolbox --force
Après avoir supprimé la boîte à outils, son point de terminaison cesse de fonctionner. Retirez-le de src/toolbox-agent/.env et supprimez-le de votre environnement azd :
azd env set TOOLBOX_ENDPOINT ""
Supprimez l’agent et ses ressources Azure :
Warning
Si l’environnement actuel azd a créé le projet Foundry, azd down supprime définitivement le groupe de ressources du projet et tout ce qu’il contient. Si vous avez sélectionné un projet existant pendant l’initialisation, azd down quitte le projet, son groupe de ressources, l’agent hébergé et d’autres ressources de démarrage rapide en place. Pour supprimer les ressources dont vous n’avez plus besoin à partir du projet existant, supprimez-les séparément.
azd down
Supprimez la boîte à outils par nom :
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"])
Si vous avez créé un groupe de ressources ou un projet dédié pour ce guide de démarrage rapide, supprimez-le du portail Azure une fois que vous n’avez plus besoin de la boîte à outils, du déploiement de conversation ou de l’agent hébergé.
Résolution des problèmes
| Problème | Solution |
|---|---|
tools/list ne renvoie aucun outil Microsoft Learn |
Confirmez que l’outil mslearn dans toolbox.yaml pointe vers https://learn.microsoft.com/api/mcp. |
L’agent démarre mais affiche TOOLBOX_ENDPOINT is set but empty ou ne dispose d’aucun outil |
Définissez TOOLBOX_ENDPOINT sur le point de terminaison versionné de l’étape 2 dans .env pour les exécutions en local, et exécutez azd env set TOOLBOX_ENDPOINT "<endpoint>" avant de déployer. |
| Les appels au point de terminaison de boîte à outils échouent avec une erreur d’autorisation | Vérifiez que chaque requête inclut un jeton Entra limité à https://ai.azure.com/.default. L’exemple gère cela pour vous. |
Connection refused lors de l’exécution locale |
Vérifiez qu’aucun autre processus n’utilise le port 8088. |
Ce que vous avez appris
Dans ce guide de démarrage rapide, vous :
- Construit une boîte à outils qui combine la recherche web et le serveur Microsoft Learn MCP derrière un point de terminaison.
- Utilisez la boîte à outils à partir d’un agent Python hébergé qui se connecte via le Model Context Protocol à l’aide d’Azure Developer CLI ou du SDK Python.
- Exécuté l’agent localement ou l’avoir validé à distance et l’avoir déployé sur Foundry Agent Service.