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.
Een Microsoft Foundry Toolbox is een benoemde, versiegebonden bundel van gehoste hulpprogrammaconfiguraties, zoals code-interpreter, bestandszoekopdrachten, het genereren van installatiekopieën, MCP en zoeken op internet. Met werksets kunt u de configuratie van hulpprogramma's eenmaal beheren in Foundry en deze opnieuw gebruiken tussen agents.
Agent Framework omvat het verbruik van werksets. Werksetversies maken en bijwerken via de Foundry-portal of de azure-ai-projects SDK.
Important
FoundryToolbox wordt geleverd door het bètapakket agent-framework-foundry-hosting en kan worden gewijzigd vóór stabiele release.
Koppel de Werkset aan de agentdefinitie in Foundry voor een door de service beheerde FoundryAgentservice. Richtlijnen .NET voor het gebruik van werksets aan de clientzijde worden momenteel niet gedocumenteerd.
De pakketten installeren
pip install agent-framework-foundry-hosting agent-framework-foundry --pre
FoundryToolbox wordt geïmporteerd uit agent_framework.foundry en geleverd door agent-framework-foundry-hosting.
De werkset configureren
Stel een expliciet MCP-eindpunt voor de werkset in:
TOOLBOX_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<name>/mcp?api-version=v1"
U kunt FoundryToolbox ook het eindpunt maken:
FOUNDRY_PROJECT_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>"
TOOLBOX_NAME="<toolbox-name>"
De voorbeelden van gehoste agents worden ook gebruikt AZURE_AI_MODEL_DEPLOYMENT_NAME voor FoundryChatClient.
Gebruiken FoundryToolbox met een gehoste agent
FoundryToolboxlost het eindpunt op, verifieert elke MCP-aanvraag met de opgegeven Azure-referentie, stuurt de aanroep-id van Foundry per aanvraag door en neemt deel aan de levenscyclus van de verbinding van de agent.
import asyncio
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient, FoundryToolbox, ResponsesHostServer
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
async def main():
credential = DefaultAzureCredential()
# FoundryToolbox resolves the toolbox endpoint from the environment
# (TOOLBOX_ENDPOINT, or FOUNDRY_PROJECT_ENDPOINT + TOOLBOX_NAME), authenticates
# every request with the credential, and transparently forwards the platform
# per-request call-id to the toolbox. The hosting server enters the agent, which
# connects the toolbox on first use and closes it at shutdown.
toolbox = FoundryToolbox(credential)
# Create the chat client
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=credential,
)
agent = Agent(
client=client,
instructions="You are a friendly assistant. Keep your answers brief.",
tools=toolbox,
# History will be managed by the hosting infrastructure, thus there
# is no need to store history by the service. Learn more at:
# https://developers.openai.com/api/reference/resources/responses/methods/create
default_options={"store": False},
)
server = ResponsesHostServer(agent)
await server.run_async()
Werksetvaardigheden beschikbaar maken
Een werkset kan agentvaardigheden beschikbaar maken via MCP. Stel load_tools=False in wanneer alleen vaardigheden model zichtbaar moeten zijn en voeg vervolgens de Werkset toe als een hulpprogramma, zodat de MCP-sessie verbinding maakt en als contextprovider wordt gebruikt as_skills_provider() .
import asyncio
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient, FoundryToolbox, ResponsesHostServer
from azure.identity import DefaultAzureCredential
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
async def main() -> None:
credential = DefaultAzureCredential()
# FoundryToolbox resolves the toolbox endpoint from the environment
# (TOOLBOX_ENDPOINT, or FOUNDRY_PROJECT_ENDPOINT + TOOLBOX_NAME), authenticates
# every request with the credential, and forwards the platform per-request
# call-id. ``load_tools=False`` keeps the toolbox's tools hidden so only its
# Agent Skills (SEP-2640) are surfaced; passing it via ``tools=`` connects the
# MCP session that ``as_skills_provider()`` reads from.
toolbox = FoundryToolbox(credential, load_tools=False)
# as_skills_provider() discovers skills from skill://index.json on the toolbox
# MCP session and exposes them as an agent context provider; SKILL.md bodies are
# fetched on demand via resources/read. disable_load_skill_approval=True registers
# the load_skill tool with approval_mode="never_require" so this unattended agent
# can load skills without an approval round-trip -- the Responses host runs the
# agent without an AgentSession, which the default approval flow requires.
skills_provider = toolbox.as_skills_provider(disable_load_skill_approval=True)
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=credential,
)
agent = Agent(
client=client,
name=os.environ.get("AGENT_NAME", "hosted-toolbox-mcp-skills"),
instructions="You are a helpful assistant.",
tools=toolbox,
context_providers=[skills_provider],
# History will be managed by the hosting infrastructure, thus there
# is no need to store history by the service. Learn more at:
# https://developers.openai.com/api/reference/resources/responses/methods/create
default_options={"store": False},
)
server = ResponsesHostServer(agent)
await server.run_async()
Goedkeuring blijft standaard ingeschakeld voor vaardigheidsbewerkingen. Schakel afzonderlijke goedkeuringen alleen uit voor vertrouwde, onbeheerde scenario's.
Een werkset gebruiken met FoundryAgent
Koppel de werkset aan de definitie prompt of hosted agent in Foundry.
FoundryAgent maakt gebruik van die opgeslagen hulpprogrammaconfiguratie; als u een Werkset aan de clientzijde doorgeeft, wordt deze niet toegevoegd aan de beheerde agent.
Verbinding maken via onbewerkte MCP
Rechtstreeks gebruiken MCPStreamableHTTPTool wanneer de toepassing de hosting-wrapper niet gebruikt FoundryToolbox . Geef het werkseteindpunt en een Entra ID bearer-token viaheader_provider.
import asyncio
import os
from collections.abc import Callable
from typing import Any, cast
from agent_framework import Agent, MCPStreamableHTTPTool
from agent_framework.foundry import FoundryChatClient
from azure.core.credentials import TokenCredential
from azure.identity import AzureCliCredential, DefaultAzureCredential, get_bearer_token_provider
from dotenv import load_dotenv
def make_toolbox_header_provider(credential: TokenCredential) -> Callable[[dict[str, Any]], dict[str, str]]:
"""Build a header_provider that injects a fresh Azure AI bearer token on every MCP request."""
get_token = get_bearer_token_provider(credential, "https://ai.azure.com/.default")
def provide(_kwargs: dict[str, Any]) -> dict[str, str]:
return {
"Authorization": f"Bearer {get_token()}",
}
return provide
async def main() -> None:
credential = DefaultAzureCredential()
toolbox_tool = MCPStreamableHTTPTool(
name="foundry_toolbox",
description="Tools exposed by the configured Foundry toolbox",
url=os.environ["FOUNDRY_TOOLBOX_ENDPOINT"],
header_provider=make_toolbox_header_provider(credential),
load_prompts=False,
)
async with Agent(
client=FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["FOUNDRY_MODEL"],
credential=credential,
),
instructions="You are a helpful assistant. Use the available toolbox tools to answer the user.",
tools=toolbox_tool,
) as agent:
query = "What tools do you have access to?"
print(f"User: {query}")
result = await agent.run(query)
print(f"Assistant: {result}")
In het voorbeeld op lager niveau wordt gebruikgemaakt van FOUNDRY_TOOLBOX_ENDPOINT. Het voorbeeld van werksetvaardigheden gebruikt FOUNDRY_TOOLBOX_MCP_SERVER_URL; deze namen behoren tot die voorbeelden en staan los van de FoundryToolbox klassen TOOLBOX_ENDPOINT en TOOLBOX_NAME instellingen.
Limitations
- MCP-hulpprogramma's in een werkset maken gebruik van verificatie aan de serverzijde via een Foundry
project_connection_id. De Agent Framework-client bevat het upstream MCP Bearer-token niet. - Voor het gebruik van een Werkset als EEN MCP-server is Entra ID verificatie aan de clientzijde vereist voor het werkseteindpunt.
- Antwoorden voor toestemmingsstromen, zoals
CONSENT_REQUIREDworden verwerkt terwijl de agent wordt uitgevoerd, niet terwijl de werksetverbinding wordt gemaakt.
Samples
| Sample | Description |
|---|---|
| foundry_toolbox/main.py |
FoundryToolbox met een gehoste antwoordenagent |
| foundry_toolbox_mcp_skills/main.py | Door werkset ondersteunde agentvaardigheden |
| foundry_chat_client_with_toolbox.py | McP-verbruik van werkset met MCPStreamableHTTPTool |
| foundry_chat_client_with_toolbox_skills.py | Op toolbox gebaseerde vaardighedenconfiguratie |
| invoke_foundry_toolbox_mcp | MCP-verbruik aan de werkstroomzijde |
Go maakt momenteel geen Foundry Toolbox-helper beschikbaar. Configureer werksets via Foundry en gebruik ondersteunde declaraties van lokale of gehoste hulpprogramma's voor Go-agents.