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.
Porovnání agentů Foundry Hosted Agents spravovaných Microsoftem, samoobslužného hostování a odolného spouštění s rozšířením Durable, najdete v tématu Hostování aplikací Agent Framework.
Hostování v ASP.NET Core
Agent Framework poskytuje hostitelské knihovny, které umožňují integrovat agenty AI do aplikací ASP.NET Core. Tyto knihovny zjednodušují registraci, konfiguraci a zveřejnění agentů prostřednictvím různých protokolů.
Jak je popsáno v agentech, AIAgent je základní abstrakce agenta v rozhraní Agent Framework. Definuje "obálku LLM", která zpracovává vstupy uživatelů, provádí rozhodnutí, volá nástroje a provádí další práci pro provádění akcí a generování odpovědí. Zveřejnění agentů AI z vaší aplikace ASP.NET Core není triviální. Hostitelské knihovny to řeší registrací agentů AI v kontejneru injektáže závislostí, což vám umožní je vyřešit a používat ve vašich aplikačních službách. Umožňují také spravovat závislosti agentů, jako jsou nástroje a úložiště relací, ze stejného kontejneru. Agenty je možné hostovat společně s infrastrukturou aplikací nezávisle na protokolech, které používají. Podobně je možné pracovní postupy hostovat a využívat společnou infrastrukturu vaší aplikace.
Základní knihovna hostování
Knihovna Microsoft.Agents.AI.Hosting je základem pro hostování agentů AI v ASP.NET Core. Poskytuje rozšíření pro registraci a konfiguraci agentů umělé inteligence a pracovních postupů pro IHostApplicationBuilder. V ASP.NET Core je IHostApplicationBuilder základním typem, který představuje tvůrce pro hostované aplikace a služby a spravuje konfiguraci, protokolování, životní cyklus a další.
Před konfigurací agentů nebo pracovních postupů zaregistrujte IChatClient v kontejneru pro injekci závislostí. V následujících příkladech je pod názvem chat-model registrován jako klíčový singleton:
// endpoint is your Microsoft Foundry project endpoint
// deploymentName is 'gpt-4o-mini' for example
IChatClient chatClient = new AIProjectClient(
new Uri(endpoint),
new DefaultAzureCredential())
.GetProjectOpenAIClient()
.GetProjectResponsesClient()
.AsIChatClient(deploymentName);
builder.Services.AddSingleton(chatClient);
Warning
DefaultAzureCredential je vhodný pro vývoj, ale vyžaduje pečlivé zvážení v produkčním prostředí. V produkčním prostředí zvažte použití konkrétních přihlašovacích údajů (např ManagedIdentityCredential. ) k zabránění problémům s latencí, neúmyslnému testování přihlašovacích údajů a potenciálním bezpečnostním rizikům z náhradních mechanismů.
PřidatAIAgent
Registrace agenta AI pomocí injektáže závislostí:
var pirateAgent = builder.AddAIAgent(
"pirate",
instructions: "You are a pirate. Speak like a pirate",
description: "An agent that speaks like a pirate.",
chatClientServiceKey: "chat-model");
Metoda AddAIAgent() vrátí metodu IHostedAgentBuilder, která poskytuje rozšiřující metody pro konfiguraci agenta. Do agenta můžete například přidat nástroje:
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithAITool(new MyTool()); // MyTool is a custom type derived from AITool
Můžete také nakonfigurovat úložiště relací (úložiště pro data konverzací):
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithInMemorySessionStore();
AddWorkflow
Zaregistrujte pracovní postupy, které koordinuje více agentů. Pracovní postup je v podstatě "graf", kde každý uzel je AIAgent, a agenti spolu komunikují.
V tomto příkladu pracují dva agenti postupně. Uživatelský vstup se nejprve odešle agent-1, který vytvoří odpověď a odešle ji do agent-2. Pracovní postup pak vypíše konečnou odpověď. Existuje také BuildConcurrent metoda, která vytvoří souběžný pracovní postup agenta.
builder.AddAIAgent("agent-1", instructions: "you are agent 1!");
builder.AddAIAgent("agent-2", instructions: "you are agent 2!");
var workflow = builder.AddWorkflow("my-workflow", (sp, key) =>
{
var agent1 = sp.GetRequiredKeyedService<AIAgent>("agent-1");
var agent2 = sp.GetRequiredKeyedService<AIAgent>("agent-2");
return AgentWorkflowBuilder.BuildSequential(key, [agent1, agent2]);
});
Zpřístupnit pracovní postup jako agent AIAgent
Pokud chcete použít integrace protokolů (například A2A nebo OpenAI) s pracovním postupem, převeďte je na samostatného agenta. Pracovní postupy v současné době neposkytují podobné možnosti integrace sami, takže tento krok převodu je nutný:
var workflowAsAgent = builder
.AddWorkflow("science-workflow", (sp, key) => { ... })
.AddAsAIAgent(); // Now the workflow can be used as an agent
Podrobnosti implementace
Hostitelské knihovny fungují jako adaptéry protokolu, které přemostňují externí komunikační protokoly a interní implementaci Agent Frameworku. Pokud používáte integrační knihovnu pro hostování, knihovna načte zaregistrovanou AIAgent z injektáže závislostí, obalí ji do middlewaru specifického pro protokol, jenž překládá příchozí požadavky a odchozí odpovědi, a volá AIAgent, aby zpracovalo požadavky. Tato architektura udržuje implementaci agenta nezávislou na protokolu.
Například pomocí knihovny hostování ASP.NET Core s adaptérem protokolu A2A:
// Register the agent
var pirateAgent = builder.AddAIAgent("pirate",
instructions: "You are a pirate. Speak like a pirate",
description: "An agent that speaks like a pirate.");
// Expose via a protocol (e.g. A2A)
builder.Services.AddA2AServer();
var app = builder.Build();
app.MapA2AServer();
app.Run();
Microsoft Foundry Hosted Agents jsou primární spravovanou možností hostování. Dokončete požadavky pro Foundry Hosted Agents, včetně rozšíření agenta AI pro Azure Developer CLI a přihlášení k Azure CLI.
Ukázka pro začátek vytvoří agenta se zakázaným úložištěm modelu na straně serveru a spustí ResponsesHostServer:
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient, ResponsesHostServer
from azure.identity import DefaultAzureCredential
def main() -> None:
agent = Agent(
client=FoundryChatClient(
project_endpoint="https://your-account.services.ai.azure.com/api/projects/your-project",
model="gpt-6-luna",
credential=DefaultAzureCredential(),
),
instructions="You are a friendly assistant. Keep your answers brief.",
default_options={"store": False},
)
ResponsesHostServer(agent=agent, history_source="agent_server").run()
if __name__ == "__main__":
main()
Nahraďte pevně zakódovaný koncový bod projektu a název nasazení modelu a spusťte ukázku PEP 723 místně z kořenového adresáře úložiště Agent Framework:
uv run python/samples/01-get-started/07_hosting.py
Chcete-li nasadit kompletní projekt hostovaného agenta, inicializujte ho z položky azure.yaml ve spravované ukázce:
mkdir my-hosted-agent && cd my-hosted-agent
azd ai agent init -t https://github.com/microsoft-foundry/foundry-samples/blob/main/samples/python/hosted-agents/agent-framework/responses/01-basic/azure.yaml --src .
Spusťte hostitele agenta:
azd ai agent run
V jiném terminálu vyvolejte místního agenta:
azd ai agent invoke --local "Hello!"
Tip
Podívejte se na úplnou ukázku začínáme a kompletní ukázku nasazení. Pokyny k nasazení najdete v tématu Foundry Hosted Agents.
Hostování s protokolem A2A
Port Go poskytuje hostování A2A prostřednictvím a2aprovider, který zabalí agenta do obslužné rutiny HTTP kompatibilní s protokolem Agent-to-Agent.
Poznámka:
Hostování rozšíření Durable Není aktuálně dostupné pro Go. Nejnovější stav sady Go SDK najdete v úložišti Agent Framework Go.
Vytvoření agenta:
import (
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/a2aprovider"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
"github.com/a2aproject/a2a-go/v2/a2a"
"github.com/a2aproject/a2a-go/v2/a2asrv"
)
a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
Config: agent.Config{
},
})
Zpřístupněte agenta prostřednictvím A2A:
url := "http://localhost:5000"
card := &a2a.AgentCard{
Name: "MyAgent",
Description: "A helpful assistant.",
Version: "1.0.0",
DefaultInputModes: []string{"text"},
DefaultOutputModes: []string{"text"},
Capabilities: a2a.AgentCapabilities{Streaming: false},
SupportedInterfaces: []*a2a.AgentInterface{
a2a.NewAgentInterface(url, a2a.TransportProtocolJSONRPC),
},
}
mux := http.NewServeMux()
requestHandler := a2asrv.NewHandler(
a2aprovider.NewExecutor(a, a2aprovider.ExecutorConfig{}),
a2asrv.WithExtendedAgentCard(card),
)
mux.Handle("/", a2asrv.NewJSONRPCHandler(requestHandler))
mux.Handle(a2asrv.WellKnownAgentCardPath, a2asrv.NewStaticAgentCardHandler(card))
log.Println("A2A server listening on :5000")
http.ListenAndServe(":5000", mux)
Tip
Úplný příklad spustitelného klienta A2A najdete v úplné ukázce klienta A2A .
Další kroky
Jděte hlouběji:
- Služba agenta A2A – využívání vzdálených agentů A2A
- Hostování A2A — zpřístupněte agenty Agent Frameworku přes A2A
- Durable Extension – hostování agentů a pracovních postupů Durable pro C# a Python
- protokolAG-UI – uživatelská rozhraní agenta založená na webu
- Přehled hostování – zvolte Foundry Hosted Agents, self-hosting nebo durable hosting
- Foundry Hosted Agents – nasazení agentů Agent Framework do spravovaného hostování
- Ukázka hostovaných agentů Foundry (Python) – spusťte základní ukázku odpovědí.