7. lépés: Az ügynök kezelése

Miután elkészítette az ügynököt, meg kell üzemeltetnie, hogy a felhasználók és más ügynökök kapcsolatba léphessenek vele.

Üzemeltetési beállítások

Lehetőség Description Legjobb
A2A protokoll Ügynökök felfedése az Ügynökről ügynökre protokollon keresztül Többügynök-rendszerek
OpenAI-Compatible végpontok Ügynökök felfedése csevegőüzenetek vagy válaszok API-kkal OpenAI-kompatibilis ügyfelek
Tartós bővítmény Tegye tartóssá a C#- és Python-ügynököket és -munkafolyamatokat az Azure Functionsben vagy saját üzemeltetésű környezetben Hosszú ideig futó, megbízható számítási feladatok
AG-UI Protokoll Webes AI-ügynökalkalmazások létrehozása Webes előtérrendszerek

Üzemeltetés a ASP.NET Core-ban

Az Ügynök keretrendszer olyan üzemeltetési kódtárakat biztosít, amelyek lehetővé teszik az AI-ügynökök integrálását ASP.NET Core-alkalmazásokba. Ezek a kódtárak leegyszerűsítik az ügynökök regisztrálását, konfigurálását és felfedését különböző protokollokon keresztül.

Az ügynökökbenAIAgent leírtak szerint az ügynök-absztrakció az Ügynök keretrendszerben. Meghatároz egy "LLM-burkolót", amely feldolgozza a felhasználói bemeneteket, döntéseket hoz, eszközöket hív meg, és további műveleteket hajt végre és válaszokat hoz létre. Az AI-ügynökök ASP.NET Core-alkalmazásból való felfedése nem triviális. Az üzemeltetési kódtárak ezt úgy oldják meg, hogy egy függőséginjektálási tárolóban regisztrálják az AI-ügynököket, így feloldhatja és használhatja őket az alkalmazásszolgáltatásokban. Emellett lehetővé teszik az ügynökfüggőségek, például az eszközök és a munkamenet-tárolók kezelését ugyanabból a tárolóból. Az ügynökök az alkalmazásinfrastruktúra mellett üzemeltethetők, az általuk használt protokolltól függetlenül. Hasonlóképpen, a munkafolyamatok üzemeltethetők, és kihasználhatják az alkalmazás közös infrastruktúráját.

Alapvető tárhely-szolgáltatási könyvtár

A Microsoft.Agents.AI.Hosting kódtár az AI-ügynökök ASP.NET Core-ban való üzemeltetésének alapja. Bővítményeket biztosít az AI-ügynökök és munkafolyamatok regisztrálásához IHostApplicationBuilder és konfigurálásához. Az ASP.NET Core-ban a IHostApplicationBuilder az alapvető típus, amely az üzemeltetett alkalmazások és szolgáltatások készítőjeként működik, és kezeli a konfigurációt, a naplózást, az élettartamot stb.

Mielőtt ügynököket vagy munkafolyamatokat konfigurál, regisztrálja a IChatClient egy függőséginjektáló tárolóba. Az alábbi példákban a(z) chat-model név alatt kulcsos singletonként van regisztrálva.

// 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);

Figyelmeztetés

DefaultAzureCredential a fejlesztéshez kényelmes, de a termelési környezetben gondos megfontolást igényel. Éles környezetben fontolja meg egy adott hitelesítő adat (pl. ManagedIdentityCredential) használatát a késési problémák elkerülése, a hitelesítő adatok nem szándékos próbálgatásának és a tartalék mechanizmusokból eredő esetleges biztonsági kockázatok elkerülése érdekében.

AddAIAgent

AI-ügynök regisztrálása függőséginjektálással:

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");

A AddAIAgent() metódus egy IHostedAgentBuilder-t ad vissza, amely bővítő metódusokat biztosít az ügynök konfigurálásához. Például hozzáadhat eszközöket az ügynökhöz:

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

A munkamenet-tárolót is konfigurálhatja (a beszélgetési adatok tárolásához):

var pirateAgent = builder.AddAIAgent("pirate", instructions: "You are a pirate. Speak like a pirate")
    .WithInMemorySessionStore();

AddWorkflow

Több ügynököt koordináló munkafolyamatok regisztrálása. A munkafolyamat lényegében egy "gráf", ahol minden csomópont egy AIAgent, és az ügynökök kommunikálnak egymással.

Ebben a példában két ügynök egymás után működik. A felhasználói bemenetet először elküldi a rendszer agent-1-hez, amely választ hoz létre, és elküldi azt agent-2-nek. A munkafolyamat ezután a végső választ adja ki. Létezik egy BuildConcurrent metódus is, amely egyidejű ügynök-munkafolyamatot hoz létre.

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]);
});

Munkafolyamat megjelenítése AIAgentként

Ha protokollintegrációkat (például A2A vagy OpenAI) szeretne használni egy munkafolyamattal, konvertálja azt önálló ügynökké. A munkafolyamatok jelenleg önmagukban nem biztosítanak hasonló integrációs képességeket, ezért erre a konverziós lépésre van szükség:

var workflowAsAgent = builder
    .AddWorkflow("science-workflow", (sp, key) => { ... })
    .AddAsAIAgent();  // Now the workflow can be used as an agent

Megvalósítás részletei

Az üzemeltetési kódtárak protokolladapterként működnek, amelyek hidat képeznek a külső kommunikációs protokollok és az Ügynök keretrendszer belső AIAgent implementációja között. Ha üzemeltetési integrációs kódtárat használ, a kódtár lekéri a regisztrált AIAgent adatokat a függőséginjektálásból, protokollspecifikus köztes szoftverrel csomagolja a bejövő kérések és kimenő válaszok lefordításához, és meghívja a AIAgent kérések feldolgozására. Ez az architektúra az ügynök implementációját protokollfüggetlenné teszi.

Használja például a ASP.NET Core üzemeltetési kódtárat az A2A protokolladapterrel:

// 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();

Jótanács

Tekintse meg az Azure Functionshöz és a saját üzemeltetésű példákhoz készült Durable Agents-mintákat.

Azure Functions egy ön által felügyelt üzemeltetési lehetőség. A Microsoft által felügyelt Foundry Hosted Agents, a saját üzemeltetés és az Azure Functions tartós számítási feladatainak összehasonlítását lásd itt: Az Agent Framework-alkalmazások üzemeltetése.

Telepítse a Azure Functions üzemeltetési csomagot, a Foundry-ügyfelet és a Azure hitelesítési csomagot:

pip install agent-framework-azurefunctions agent-framework-foundry azure-identity

Ügynök létrehozása:

Regisztrálja az ügynököt a(z) AgentFunctionApp segítségével:

Helyi futtatás az Azure Functions Core Tools használatával:

az login
pip install -r requirements.txt
# Start Azurite and copy local.settings.json.template to local.settings.json first.
func start

Ezután hívja meg ezt:

curl -X POST http://localhost:7071/api/agents/Joker/run \
  -H "Content-Type: text/plain" \
  -d "Tell me a short joke about cloud computing."

Jótanács

További mintákért tekintse meg a teljes futtatható fájl teljes mintáját , valamint a mintákat üzemeltető Azure Functionst .

Üzemeltetés A2A protokollal

A Go-port a a2aprovider révén biztosít A2A-hosztolást, amely egy ügynököt az Agent-to-Agent protokollal kompatibilis HTTP-kezelőbe burkol.

Note

A Durable Extension üzemeltetése jelenleg nem érhető el a Go számára. A Go SDK legújabb állapotáról az Agent Framework Go-adattárban olvashat.

Ügynök létrehozása:

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{
    },
})

Tegye elérhetővé az ügynököt A2A-n keresztül:

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)

Jótanács

Lásd a teljes A2A ügyfél-kiszolgáló mintát a teljes, futtatható példáért.

Következő lépések

Mélyedjen el:

Lásd még