Delen via


Stap 6: Uw agent hosten

Zodra u uw agent hebt gebouwd, moet u deze hosten, zodat gebruikers en andere agents ermee kunnen communiceren.

Hostingopties

Optie Description Geschikt voor
A2A-protocol Agents beschikbaar maken via het protocol Agent-naar-Agent Systemen met meerdere agents
OpenAI-compatible eindpunten Agents beschikbaar maken via chatvoltooiingen of antwoord-API's OpenAI-compatibele clients
Azure Functions (Durable) Agents uitvoeren als duurzame Azure Functions Serverloze, langlopende taken
AG-UI Protocol Webgebaseerde AI-agenttoepassingen bouwen Webfrontends

Hosten in ASP.NET Core

Het Agent Framework biedt hostingbibliotheken waarmee u AI-agents kunt integreren in ASP.NET Core-toepassingen. Deze bibliotheken vereenvoudigen het registreren, configureren en beschikbaar maken van agents via verschillende protocollen.

Zoals beschreven in het Agents Overview, AIAgent is het fundamentele concept van het Agent Framework. Het definieert een 'LLM wrapper' die gebruikersinvoer verwerkt, beslissingen neemt, hulpprogramma's aanroept en extra werk uitvoert om acties uit te voeren en reacties te genereren. Het beschikbaar maken van AI-agents uit uw ASP.NET Core-toepassing is niet triviaal. De hostingbibliotheken lossen dit op door AI-agents te registreren in een container voor afhankelijkheidsinjectie, zodat u deze kunt oplossen en gebruiken in uw toepassingsservices. Hiermee kunt u ook agentafhankelijkheden, zoals hulpprogramma's en sessieopslag, beheren vanuit dezelfde container. Agents kunnen naast uw toepassingsinfrastructuur worden gehost, onafhankelijk van de protocollen die ze gebruiken. Op dezelfde manier kunnen werkstromen worden gehost en gebruikmaken van de algemene infrastructuur van uw toepassing.

Kern Hosting Bibliotheek

De Microsoft.Agents.AI.Hosting bibliotheek is de basis voor het hosten van AI-agents in ASP.NET Core. Het biedt extensies voor IHostApplicationBuilder om AI-agents en werkstromen te registreren en configureren. In ASP.NET Core IHostApplicationBuilder is dit het fundamentele type dat de opbouwfunctie voor gehoste toepassingen en services vertegenwoordigt, configuratie, logboekregistratie, levensduur en meer beheert.

Voordat u agents of werkstromen configureert, registreert u een IChatClient in de container voor afhankelijkheidsinjectie. In de onderstaande voorbeelden wordt het geregistreerd als een keyed singleton met de naam chat-model:

// endpoint is of 'https://<your-own-foundry-endpoint>.openai.azure.com/' format
// deploymentName is 'gpt-4o-mini' for example

IChatClient chatClient = new AzureOpenAIClient(
        new Uri(endpoint),
        new DefaultAzureCredential())
    .GetChatClient(deploymentName)
    .AsIChatClient();
builder.Services.AddSingleton(chatClient);

AddAIAgent

Registreer een AI-agent met afhankelijkheidsinjectie:

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

De AddAIAgent() methode retourneert een IHostedAgentBuilder, dat extensiemethoden biedt voor het configureren van de agent. U kunt bijvoorbeeld hulpprogramma's toevoegen aan de agent:

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

U kunt ook het sessiearchief configureren (opslag voor gespreksgegevens):

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

AddWorkflow

Werkstromen registreren die meerdere agents coördineren. Een werkstroom is in wezen een 'grafiek' waarbij elk knooppunt een AIAgent, en de agents met elkaar communiceren.

In dit voorbeeld werken twee agents sequentieel. De invoer van de gebruiker wordt eerst verzonden naar agent-1, waarmee een antwoord wordt gegenereerd en verzonden naar agent-2. De werkstroom voert vervolgens het uiteindelijke antwoord uit. Er is ook een BuildConcurrent methode waarmee een gelijktijdige agentwerkstroom wordt gemaakt.

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

Werkstroom beschikbaar maken als AIAgent

Als u protocolintegraties (zoals A2A of OpenAI) wilt gebruiken met een werkstroom, converteert u deze naar een zelfstandige agent. Op dit moment bieden werkstromen geen vergelijkbare integratiemogelijkheden, dus deze conversiestap is vereist:

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

Implementatiedetails

De hostingbibliotheken fungeren als protocoladapters die externe communicatieprotocollen overbruggen en de interne AIAgent-implementatie van het Agent Framework ondersteunen. Wanneer u een hostingintegratiebibliotheek gebruikt, haalt de bibliotheek de geregistreerde AIAgent uit de afhankelijkheidsinjectie, verpakt deze met protocolspecifieke middleware om binnenkomende aanvragen en uitgaande antwoorden te vertalen, en roept de AIAgent aan om aanvragen te verwerken. Deze architectuur maakt uw agentimplementatie protocolagnostisch.

Gebruik bijvoorbeeld de ASP.NET Core-hostingbibliotheek met de A2A-protocoladapter:

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

Aanbeveling

Zie de Durable Azure Functions-voorbeelden voor serverloze hostingvoorbeelden.

Installeer het Azure Functions-hostingpakket:

pip install agent-framework-azurefunctions --pre

Een agent maken:

from agent_framework.azure import AgentFunctionApp, AzureOpenAIChatClient
from azure.identity import AzureCliCredential


# 1. Instantiate the agent with the chosen deployment and instructions.
def _create_agent() -> Any:
    """Create the Joker agent."""

    return AzureOpenAIChatClient(credential=AzureCliCredential()).as_agent(
        name="Joker",
        instructions="You are good at telling jokes.",
    )

Registreer de agent bij AgentFunctionApp:

# 2. Register the agent with AgentFunctionApp so Azure Functions exposes the required triggers.
app = AgentFunctionApp(agents=[_create_agent()], enable_health_check=True, max_poll_retries=50)

Lokaal uitvoeren met Azure Functions Core Tools:

func start

Roep vervolgens het volgende aan:

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

Aanbeveling

Bekijk het volledige voorbeeld voor het volledige runnable bestand en de Azure Functions-hostingvoorbeelden voor meer patronen.

Volgende stappen

Ga dieper in:

Zie ook