Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Porównanie zarządzanych przez firmę Microsoft usług Foundry Hosted Agents, hostowania własnego oraz trwałego wykonywania przy użyciu rozszerzenia Durable można znaleźć w temacie Hostowanie aplikacji Agent Framework.
Hosting w ASP.NET Core
Struktura agentów udostępnia biblioteki hostingu, które umożliwiają integrowanie agentów sztucznej inteligencji z aplikacjami ASP.NET Core. Te biblioteki upraszczają rejestrowanie, konfigurowanie i udostępnianie agentów za pomocą różnych protokołów.
Jak opisano w temacie Agents, AIAgent jest podstawową abstrakcją agenta w strukturze Agent Framework. Definiuje "otokę LLM", która przetwarza dane wejściowe użytkownika, podejmuje decyzje, wywołuje narzędzia i wykonuje dodatkową pracę w celu wykonywania akcji i generowania odpowiedzi. Uwidacznianie agentów sztucznej inteligencji z aplikacji ASP.NET Core nie jest proste. Biblioteki hostingu rozwiążą ten problem, rejestrując agentów sztucznej inteligencji w kontenerze iniekcji zależności, umożliwiając rozpoznawanie i używanie ich w usługach aplikacji. Umożliwiają one również zarządzanie zależnościami agenta, takimi jak narzędzia i magazyn sesji, z tego samego kontenera. Agenci mogą być hostowani obok infrastruktury aplikacji niezależnie od używanych protokołów. Podobnie przepływy pracy mogą być hostowane i korzystać ze wspólnej infrastruktury aplikacji.
Podstawowa biblioteka hostingu
Biblioteka Microsoft.Agents.AI.Hosting jest podstawą hostowania agentów sztucznej inteligencji w ASP.NET Core. Udostępnia rozszerzenia IHostApplicationBuilder do rejestrowania i konfigurowania agentów i przepływów pracy AI. W ASP.NET Core IHostApplicationBuilder jest podstawowym typem reprezentującym konstruktora hostowanych aplikacji i usług, zarządzanie konfiguracją, rejestrowaniem, okresem istnienia i nie tylko.
Przed skonfigurowaniem agentów lub przepływów pracy zarejestruj IChatClient w kontenerze wstrzykiwania zależności. W poniższych przykładach jest on zarejestrowany jako kluczowy singleton pod nazwą chat-model:
// 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 jest wygodne do programowania, ale wymaga starannego rozważenia w środowisku produkcyjnym. W środowisku produkcyjnym rozważ użycie określonego poświadczenia (np. ManagedIdentityCredential), aby uniknąć problemów z opóźnieniami, niezamierzonego sondowania poświadczeń i potencjalnych zagrożeń bezpieczeństwa wynikających z mechanizmów awaryjnych.
Dodaj agenta AI
Zarejestruj agenta sztucznej inteligencji za pomocą iniekcji zależności:
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() zwraca metodę IHostedAgentBuilder, która udostępnia metody rozszerzenia do konfigurowania agenta. Na przykład, możesz dodać narzędzia do agenta:
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
Możesz również skonfigurować magazyn sesji (magazyn danych konwersacji):
var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
.WithInMemorySessionStore();
AddWorkflow
Rejestrowanie przepływów pracy, które koordynują wielu agentów. Przepływ pracy to zasadniczo "graf", w którym każdy węzeł jest elementem AIAgent, a agenci komunikują się ze sobą.
W tym przykładzie dwóch agentów działa sekwencyjnie. Dane wejściowe użytkownika są najpierw wysyłane do agent-1elementu , który generuje odpowiedź i wysyła ją do elementu agent-2. Następnie przepływ pracy zwraca ostateczną odpowiedź. Istnieje również BuildConcurrent metoda, która tworzy współbieżny przepływ pracy 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]);
});
Uwidaczniaj przepływ pracy jako AIAgent
Aby używać integracji protokołów (takich jak A2A lub OpenAI) z przepływem pracy, przekonwertuj go na autonomicznego agenta. Obecnie przepływy pracy nie zapewniają samodzielnie podobnych możliwości integracji, więc ten krok konwersji jest wymagany:
var workflowAsAgent = builder
.AddWorkflow("science-workflow", (sp, key) => { ... })
.AddAsAIAgent(); // Now the workflow can be used as an agent
Szczegóły implementacji
Biblioteki hostingu działają jako adaptery protokołów, które łączą zewnętrzne protokoły komunikacyjne i wewnętrzną AIAgent implementację ramy działania agenta. W przypadku korzystania z biblioteki integracji hostingu, biblioteka pobiera zarejestrowane AIAgent z iniekcji zależności, opakowuje je za pomocą oprogramowania middleware specyficznego dla protokołu w celu tłumaczenia przychodzących żądań i odpowiedzi wychodzących, a następnie wywołuje AIAgent w celu przetworzenia żądań. Ta architektura utrzymuje implementację agenta niezależną od protokołu.
Na przykład przy użyciu biblioteki hostingu ASP.NET Core z adapterem protokołu 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 to podstawowa opcja hostingu zarządzanego. Ukończ wymagania wstępne dotyczące Foundry Hosted Agents, w tym rozszerzenie agenta AI interfejsu wiersza polecenia dewelopera Azure oraz zalogowanie się przy użyciu interfejsu wiersza polecenia Azure CLI.
Przykład na początek tworzy agenta z wyłączonym magazynem modelu po stronie serwera i uruchamia 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()
Zastąp zakodowany na stałe punkt końcowy projektu i nazwę wdrożenia modelu, a następnie uruchom przykład PEP 723 lokalnie z katalogu głównego repozytorium Agent Framework:
uv run python/samples/01-get-started/07_hosting.py
Aby wdrożyć kompletny projekt hostowanego agenta, zainicjuj go z utrzymywanego przykładu azure.yaml:
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 .
Uruchom hosta agenta:
azd ai agent run
W innym terminalu wywołaj agenta lokalnego:
azd ai agent invoke --local "Hello!"
Tip
Zapoznaj się z pełnym przykładem rozpoczynania pracy i kompletnym przykładem wdrożenia. Aby uzyskać wskazówki dotyczące wdrażania, zobacz Foundry Hosted Agents.
Hosting przy użyciu protokołu A2A
Implementacja w Go zapewnia hostowanie A2A za pomocą a2aprovider, które opakowuje agenta w moduł obsługi HTTP zgodny z protokołem Agent-to-Agent.
Uwaga / Notatka
Hostowanie rozszerzenia Durable nie jest obecnie dostępne dla języka Go. Aby uzyskać najnowszy stan zestawu SDK języka Go, zobacz repozytorium Agent Framework Go.
Utwórz 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{
},
})
Uwidaczniaj agenta za pośrednictwem usługi 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
Zobacz pełny przykład klient-serwer A2A, aby poznać kompletny przykład gotowy do uruchomienia.
Następne kroki
Głębiej:
- Usługa agenta A2A — korzystanie ze zdalnych agentów A2A
- Hosting A2A — uwidacznianie agentów platformy Agent Framework za pośrednictwem usługi A2A
- Rozszerzenie Durable — hostowanie agentów i przepływów pracy w językach C# i Python
- AG-UI Protocol — internetowe interfejsy użytkownika agenta
- Przegląd hostingu — wybierz Foundry Hosted Agents, hosting własny lub hosting trwały
- Agenci hostowani Foundry — wdrażanie agentów programu Agent Framework do środowiska hostingu zarządzanego
- Przykład Foundry Hosted Agents (Python) — uruchom podstawowy przykład Odpowiedzi