Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Microsoft Foundry Toolbox egy üzemeltetett eszközkonfigurációk nevesített, verziószámozott kiszolgálóoldali csomagja, például kódértelmező, fájlkeresés, képgenerálás, MCP és webes keresés. Az eszközkészletekkel egyszer kezelheti az eszközkonfigurációt a Foundryben, és újra felhasználhatja az ügynökök között.
Az Agent Framework az eszközkészletek használatát ismerteti. Eszközkészlet-verziók létrehozása és frissítése az Foundry portálon vagy az azure-ai-projects SDK-on keresztül.
Important
FoundryToolbox a bétacsomag agent-framework-foundry-hosting biztosítja, és a stabil kiadás előtt változhat.
Szolgáltatás által felügyelt FoundryAgenteszközkészlet esetén csatolja az eszközkészletet az Foundry ügynökdefinícióhoz. Az ügyféloldali .NET eszközkészlet használati útmutatója jelenleg nincs dokumentálva.
A csomagok telepítése
pip install agent-framework-foundry-hosting agent-framework-foundry --pre
FoundryToolbox importálja a rendszer, agent_framework.foundry és a rendszer a következőt adja meg: agent-framework-foundry-hosting.
Az eszközkészlet konfigurálása
Explicit Toolbox MCP-végpont beállítása:
TOOLBOX_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>/toolboxes/<name>/mcp?api-version=v1"
Vagy hozza FoundryToolbox létre a végpontot:
FOUNDRY_PROJECT_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>"
TOOLBOX_NAME="<toolbox-name>"
Az üzemeltetett ügynök mintái a következőhöz FoundryChatClientis használhatókAZURE_AI_MODEL_DEPLOYMENT_NAME: .
Használat FoundryToolbox üzemeltetett ügynökkel
FoundryToolboxfeloldja a végpontot, hitelesíti az összes MCP-kérést a megadott Azure hitelesítő adatokkal, továbbítja az Foundry kérésenkénti hívásazonosítóját, és részt vesz az ügynök kapcsolati életciklusában.
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()
Eszközkészlet-készségek felfedés
Az eszközkészletek elérhetővé tehetik az ügynöki készségeket az MCP-en keresztül. Adja meg load_tools=False , hogy csak a készségek legyenek modellel láthatóak, majd adja hozzá eszközként az eszközkészletet, hogy az MCP-munkamenet kapcsolódjon és környezetszolgáltatóként használhassa 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()
A jóváhagyás alapértelmezés szerint engedélyezve marad a készségműveletek esetében. Csak megbízható, felügyelet nélküli forgatókönyvek esetén tiltsa le az egyéni jóváhagyásokat.
Eszközkészlet használata FoundryAgent
Csatolja az eszközkészletet a Prompt vagy a Hosted Agent definícióhoz a Foundryben.
FoundryAgent ezt a tárolt eszközkonfigurációt használja; A Toolbox ügyféloldali átadása nem adja hozzá a felügyelt ügynökhöz.
Csatlakozás nyers MCP-kapcsolaton keresztül
Közvetlenül akkor használja MCPStreamableHTTPTool , ha az alkalmazás nem használja az FoundryToolbox üzemeltetési burkolót. Adja meg az Eszközkészlet végpontot és egy Entra ID tulajdonosi jogkivonatot.header_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}")
Az alsó szintű minta a következőt használja FOUNDRY_TOOLBOX_ENDPOINT: . Az eszközkészlet-készségek mintája használFOUNDRY_TOOLBOX_MCP_SERVER_URL; ezek a nevek ezekhez a mintákhoz tartoznak, és eltérnek az osztály TOOLBOX_ENDPOINT és TOOLBOX_NAME a FoundryToolbox beállításoktól.
Limitations
- Az eszközkészleten belüli MCP-eszközök kiszolgálóoldali hitelesítést használnak egy Foundryn
project_connection_idkeresztül; az Agent Framework-ügyfél nem tárolja a felsőbb rétegbeli MCP-tulajdonosi jogkivonatot. - Az eszközkészlet MCP-kiszolgálóként való használatához ügyféloldali Entra ID hitelesítés szükséges az Eszközkészlet-végponthoz.
- A hozzájárulási folyamatra adott válaszokat, például
CONSENT_REQUIREDaz ügynök futtatásakor kezelik, nem pedig az eszközkészlet-kapcsolat létrehozásakor.
Samples
| Sample | Description |
|---|---|
| foundry_toolbox/main.py |
FoundryToolbox üzemeltetett válaszügynökkel |
| foundry_toolbox_mcp_skills/main.py | Eszközkészlet-alapú ügynökkel kapcsolatos készségek |
| foundry_chat_client_with_toolbox.py | Eszközkészlet MCP-felhasználása a MCPStreamableHTTPTool |
| foundry_chat_client_with_toolbox_skills.py | Eszközkészlet által támogatott készségek konfigurálása |
| invoke_foundry_toolbox_mcp | Munkafolyamat-oldali MCP-használat |
A Go jelenleg nem tesz közzé egy Foundry Toolbox-segítőt. Konfigurálja az eszközkészleteket a Foundryn keresztül, és használjon támogatott helyi vagy üzemeltetett eszközdeklarációkat a Go-ügynökökhöz.