Dela via


Steg 6: Värd din agent

När du har skapat din agent måste du vara värd för den så att användare och andra agenter kan interagera med den.

Alternativ för värdtjänster

Alternativ Description Bäst för
A2A-protokoll Exponera agenter via protokollet Agent-till-Agent System med flera agenter
OpenAI-kompatibla API-slutpunkter Exponera agenter via API:er för chattens slutföranden eller svar OpenAI-kompatibla klienter
Azure Functions (Durable) Körning av agenter som varaktiga Azure Functions Serverlösa, långvariga uppgifter
AG-UI Protocol Skapa webbaserade AI-agentprogram Webbgränssnitt

Hosting i ASP.NET Core

Agent Framework tillhandahåller värdbibliotek som gör att du kan integrera AI-agenter i ASP.NET Core-program. De här biblioteken förenklar registreringen, konfigurationen och avslöjandet av agenter via olika protokoll.

Som beskrivs i Agentöversikten, AIAgent är agentramverkets grundläggande begrepp. Den definierar en "LLM-wrapper" som bearbetar användarindata, fattar beslut, anropar verktyg och utför ytterligare arbete för att genomföra åtgärder och generera svar. Att exponera AI-agenter från ditt ASP.NET Core-program är inte trivialt. Värdbiblioteken löser detta genom att registrera AI-agenter i en container för beroendeinmatning, så att du kan lösa och använda dem i dina programtjänster. De gör också att du kan hantera agentberoenden, till exempel verktyg och sessionslagring, från samma container. Agenter kan finnas tillsammans med din programinfrastruktur, oberoende av de protokoll som de använder. På samma sätt kan arbetsflöden hanteras och utnyttja programmets gemensamma infrastruktur.

Kärnvärdbibliotek

Biblioteket Microsoft.Agents.AI.Hosting är grunden för att hosta AI-agenter i ASP.NET Core. Den innehåller tillägg för IHostApplicationBuilder att registrera och konfigurera AI-agenter och arbetsflöden. I ASP.NET Core IHostApplicationBuilder är den grundläggande typen som representerar byggare för värdbaserade program och tjänster, hantering av konfiguration, loggning, livslängd med mera.

Innan du konfigurerar agenter eller arbetsflöden registrerar du en IChatClient i containern för beroendeinmatning. I exemplen nedan registreras den som en nyckelad singleton under namnet 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

Registrera en AI-agent med beroendeinmatning:

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

Metoden AddAIAgent() returnerar en IHostedAgentBuilder, som innehåller tilläggsmetoder för att konfigurera agenten. Du kan till exempel lägga till verktyg i agenten:

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

Du kan också konfigurera sessionsarkivet (lagring för konversationsdata):

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

AddWorkflow

Registrera arbetsflöden som samordnar flera agenter. Ett arbetsflöde är i princip ett "diagram" där varje nod är en AIAgent, och agenterna kommunicerar med varandra.

I det här exemplet fungerar två agenter sekventiellt. Användarens indata skickas först till agent-1, vilket genererar ett svar och skickar det till agent-2. Arbetsflödet matar sedan ut det slutliga svaret. Det finns också en BuildConcurrent metod som skapar ett arbetsflöde för samtidig agent.

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

Exponera arbetsflöde som AIAgent

Om du vill använda protokollintegreringar (till exempel A2A eller OpenAI) med ett arbetsflöde konverterar du det till en fristående agent. För närvarande tillhandahåller arbetsflöden inte liknande integreringsfunktioner på egen hand, så det här konverteringssteget krävs:

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

Implementeringsinformation

Värdbiblioteken fungerar som protokolladapterar som överbryggar externa kommunikationsprotokoll och Agent Frameworks interna AIAgent implementation. När du använder ett värdintegreringsbibliotek hämtar biblioteket den registrerade AIAgent från beroendeinmatningen, omsluter den med protokollspecifikt mellanprogram för att översätta inkommande begäranden och utgående svar och anropar AIAgent för att bearbeta begäranden. Den här arkitekturen håller din agentimplementering protokoll-agnostisk.

Till exempel kan du använda ASP.NET Core-värdbiblioteket med A2A-protokolladaptern.

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

Tips/Råd

Se Durable Azure Functions-exempel för exempel på serverlösa värdtjänster.

Installera Azure Functions-värdpaketet:

pip install agent-framework-azurefunctions --pre

Skapa en agent:

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

# Load environment variables from .env file
load_dotenv()


# 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.",
    )

Registrera agenten med 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)

Kör lokalt med Azure Functions Core Tools:

func start

Anropa sedan:

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

Tips/Råd

Se det fullständiga exemplet för den fullständiga körbara filen och Azure Functions-hostingexempel för fler mönster.

Nästa steg

Gå djupare:

Se även