Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Hostovaní agenti ve službě agenta Microsoft Foundry umožňují nasadit agenty Agent Framework jako kontejnerizované aplikace do Microsoft spravované infrastruktury. Platforma zpracovává škálování, trvalost stavu relace, zabezpečení a správu životního cyklu, abyste se mohli soustředit na logiku vašeho agenta.
Pomocí hostovací integrace Agent Frameworku můžete převzít libovolný Agent nebo pracovní postup a snadno ho vystavit prostřednictvím protokolu Foundry Responses nebo Invocations s minimálním množstvím kódu.
Kdy použít hostované agenty
Zvolte agenty hostované v Foundry, pokud chcete:
- Spravovaná infrastruktura – nemusíte konfigurovat kontejnery, webové servery ani pravidla škálování sami.
- Integrovaná správa relací – platforma zachovává stav a nahrané soubory během přechodů mezi interakcemi a období nečinnosti.
- Identita vyhrazeného agenta – každý nasazený agent získá vlastní identitu Entra pro zabezpečený přístup k modelům, nástrojům a podřízeným službám.
- Koncové body kompatibilní s OpenAI – klienti můžou komunikovat s vaším agentem pomocí libovolné sady SDK kompatibilní s OpenAI prostřednictvím protokolu Odpovědi.
Poznámka:
Agenti hostovaní na Foundry jsou aktuálně v režimu Preview. Nejnovější dostupnost, limity a ceny najdete v dokumentaci k agentům hostovanými v Foundry .
Požadavky
- Předplatné Azure
- rozhraní příkazového řádku pro vývojáře Azure (
azd) s rozšířením agenta AI:azd ext install azure.ai.agents
Pro místní testování potřebujete také:
- Projekt Microsoft Foundry s nasazením modelu (například
gpt-4o) - Nainstalované a ověřené rozhraní příkazového řádku Azure (
az login)
- .NET 10 SDK nebo novější
Nainstalujte hostující balíček NuGet:
dotnet add package Microsoft.Agents.AI.Foundry.Hosting --prerelease
dotnet add package Azure.AI.Projects --prerelease
- Python 3.10 nebo novější
Nainstalujte balíček hostování Python:
pip install agent-framework agent-framework-foundry-hosting
Protokol odpovědí
Protokol odpovědi je doporučeným výchozím bodem pro většinu agentů. Zpřístupní koncový bod kompatibilní /responses s OpenAI a platforma automaticky spravuje historii konverzací, streamování a životní cyklus relací.
using Azure.AI.AgentServer.Core;
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Foundry.Hosting;
var projectEndpoint = new Uri(Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT")
?? throw new InvalidOperationException("FOUNDRY_PROJECT_ENDPOINT is not set."));
var deployment = Environment.GetEnvironmentVariable("AZURE_AI_MODEL_DEPLOYMENT_NAME") ?? "gpt-4o";
AIAgent agent = new AIProjectClient(projectEndpoint, new DefaultAzureCredential())
.AsAIAgent(
model: deployment,
instructions: "You are a helpful AI assistant.",
name: "my-agent");
var builder = AgentHost.CreateBuilder(args);
builder.Services.AddFoundryResponses(agent);
builder.RegisterProtocol("responses", endpoints => endpoints.MapFoundryResponses());
var app = builder.Build();
app.Run();
Vytváří AgentHost.CreateBuilder server aplikace předkonfigurovaný pro hostitelské prostředí Foundry.
AddFoundryResponses zaregistruje vašeho agenta pomocí obslužné rutiny protokolu Odpovědi a MapFoundryResponses mapuje /responses koncový bod HTTP.
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from agent_framework_foundry_hosting import ResponsesHostServer
from azure.identity import DefaultAzureCredential
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=DefaultAzureCredential(),
)
agent = Agent(
client=client,
instructions="You are a helpful AI assistant.",
default_options={"store": False},
)
server = ResponsesHostServer(agent)
server.run()
Zabalí ResponsesHostServer agenta a zpřístupní ho prostřednictvím protokolu Foundry Responses. Nastavení store na False v default_options zabraňuje duplikování historie konverzací, protože hostitelská infrastruktura spravuje historii automaticky.
Protokol vyvolání
Protokol Vyvolání poskytuje úplnou kontrolu nad požadavkem a odpovědí HTTP. Použijte ho, pokud potřebujete vlastní datové části, nekoverzační zpracování nebo streamovací protokoly, které nejsou kompatibilní s OpenAI.
Při použití protokolu Invocations v jazyce C# implementujete vlastní InvocationHandler, abyste zpracovali příchozí požadavky.
using Azure.AI.AgentServer.Core;
using Azure.AI.AgentServer.Invocations;
using Microsoft.Agents.AI;
var builder = AgentHost.CreateBuilder(args);
builder.Services.AddSingleton<AIAgent, MyAgent>();
builder.Services.AddInvocationsServer();
builder.Services.AddScoped<InvocationHandler, MyInvocationHandler>();
builder.RegisterProtocol("invocations", endpoints => endpoints.MapInvocationsServer());
var app = builder.Build();
app.Run();
Metoda AddInvocationsServer zaregistruje služby protokolu Invocations. Implementujete InvocationHandler , abyste definovali, jak agent zpracovává jednotlivé požadavky.
Pro odlehčenou instalaci použijte InvocationsHostServer z agent_framework_foundry_hosting balíčku. Zabalí vašeho agenta podobně jako ResponsesHostServer a automaticky spravuje relaci.
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from agent_framework_foundry_hosting import InvocationsHostServer
from azure.identity import DefaultAzureCredential
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=DefaultAzureCredential(),
)
agent = Agent(
client=client,
instructions="You are a friendly assistant. Keep your answers brief.",
default_options={"store": False},
)
server = InvocationsHostServer(agent)
server.run()
Pro úplnou kontrolu nad zpracováním požadavků použijte InvocationAgentServerHost přímo z balíčku a implementujte vlastní azure.ai.agentserver.invocations rutinu vyvolání:
import os
from collections.abc import AsyncGenerator
from agent_framework import Agent, AgentSession
from agent_framework.foundry import FoundryChatClient
from azure.ai.agentserver.invocations import InvocationAgentServerHost
from azure.identity import DefaultAzureCredential
from starlette.requests import Request
from starlette.responses import JSONResponse, Response, StreamingResponse
_sessions: dict[str, AgentSession] = {}
client = FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
credential=DefaultAzureCredential(),
)
agent = Agent(
client=client,
instructions="You are a friendly assistant. Keep your answers brief.",
default_options={"store": False},
)
app = InvocationAgentServerHost()
@app.invoke_handler
async def handle_invoke(request: Request):
"""Handle streaming multi-turn chat."""
data = await request.json()
session_id = request.state.session_id
stream = data.get("stream", False)
user_message = data.get("message", None)
if user_message is None:
return Response(content="Missing 'message' in request", status_code=400)
session = _sessions.setdefault(session_id, AgentSession(session_id=session_id))
if stream:
async def stream_response() -> AsyncGenerator[str]:
async for update in agent.run(user_message, session=session, stream=True):
yield update.text
return StreamingResponse(
stream_response(),
media_type="text/event-stream",
headers={"Cache-Control": "no-cache", "Connection": "keep-alive"},
)
response = await agent.run([user_message], session=session, stream=stream)
return JSONResponse({"response": response.text})
if __name__ == "__main__":
app.run()
Výstraha
Při restartování dojde ke ztrátě úložiště relací v paměti v příkladu vlastní obslužné rutiny. V produkčním prostředí používejte trvalé úložiště (například Cosmos DB).
Poznámka:
Podpora Go pro agenty hostované v Foundry bude brzy k dispozici. Nejnovější stav najdete v úložišti Agent Framework Go .
Tip
Příklady hostovaného projektu agenta najdete v ukázkách Python nebo ukázkách C#. Nebo pomocí azd ai agent init příkazu vygenerujte nový projekt hostovaného agenta úplně od začátku. Podrobné pokyny najdete v této příručce pro rychlý start .
Lokální spuštění
Rozhraní příkazového řádku pro vývojáře Azure (azd) poskytuje nejjednodušší způsob, jak spustit a otestovat hostovaného agenta místně.
Inicializace projektu
Vytvořte novou složku a inicializujete ji z ukázkového manifestu:
mkdir my-hosted-agent && cd my-hosted-agent
azd ai agent init -m <path-to-agent.manifest.yaml>
Tip
Manifest může být cesta k místnímu souboru YAML nebo adrese URL vzdáleného manifestu.
Nastavení proměnných prostředí
export FOUNDRY_PROJECT_ENDPOINT="https://<account>.services.ai.azure.com/api/projects/<project>"
export AZURE_AI_MODEL_DEPLOYMENT_NAME="<your-model-deployment>"
Spusťte hostitele agenta
azd ai agent run
Hostitel agenta se spustí na http://localhost:8088.
Vyvolání agenta
azd ai agent invoke --local "Hello!"
Nebo použijte curl:
curl -X POST http://localhost:8088/responses \
-H "Content-Type: application/json" \
-d '{"input": "Hello!"}'
Nebo v PowerShellu:
(Invoke-WebRequest -Uri http://localhost:8088/responses -Method POST -ContentType "application/json" -Body '{"input": "Hello!"}').Content
Nasazení do Foundry
Jakmile agenta ověříte místně, nasaďte ho do služby Microsoft Foundry:
Poskytnutí zdrojů (pokud ještě projekt Foundry nemáte):
azd provisionTím se vytvoří skupina prostředků s instancí Foundry, projektem, nasazením modelu, Application Insights a registrem kontejneru.
Nasazení agenta:
azd deployTím se váš agent zabalí jako image kontejneru, odešle ji do Azure Container Registry a nasadí ji do služby Foundry Agent Service.
Infrastruktura hostování Foundry automaticky vloží následující proměnné prostředí do kontejneru agenta za běhu:
| Proměnná | Description |
|---|---|
FOUNDRY_PROJECT_ENDPOINT |
Adresa URL koncového bodu pro projekt Foundry. |
AZURE_AI_MODEL_DEPLOYMENT_NAME |
Název nasazení modelu (nakonfigurovaný během azd ai agent init). |
APPLICATIONINSIGHTS_CONNECTION_STRING |
Řetězec připojení Application Insights pro telemetrii. |
Po nasazení je váš agent přístupný prostřednictvím vyhrazeného koncového bodu Foundry a dá se také otestovat z portálu Foundry.