Freigeben über


Schritt 6: Hosten Ihres Agents

Nachdem Sie Ihren Agent erstellt haben, müssen Sie ihn hosten, damit Benutzer und andere Agents damit interagieren können.

Hostingoptionen

Option Description Am besten geeignet für
A2A-Protokoll Agenten über das Agent-zu-Agent-Protokoll freigeben Multi-Agent-Systeme
OpenAI-Compatible Endpunkte Verfügbarmachen von Agents über Chatabschluss- oder Antwort-APIs OpenAI-kompatible Klienten
Azure-Funktionen (dauerhaft) Ausführen von Agents als dauerhafte Azure-Funktionen Serverlose, lange ausgeführte Aufgaben
AG-UI Protokoll Erstellen webbasierter KI-Agent-Anwendungen Web-Frontends

Hosting in ASP.NET Core

Das Agent Framework bietet Hostingbibliotheken, mit denen Sie KI-Agents in ASP.NET Core-Anwendungen integrieren können. Diese Bibliotheken vereinfachen das Registrieren, Konfigurieren und Verfügbarmachen von Agents über verschiedene Protokolle.

Wie in der Übersicht der Agents beschrieben, AIAgent ist das grundlegende Konzept des Agent Frameworks. Es definiert einen "LLM-Wrapper", der Benutzereingaben verarbeitet, Entscheidungen trifft, Tools aufruft und zusätzliche Aufgaben ausführt, um Aktionen auszuführen und Antworten zu generieren. Das Exposieren von KI-Agents aus Ihrer ASP.NET Core-Anwendung ist nicht trivial. Die Hostingbibliotheken lösen dies durch das Registrieren von KI-Agenten in einen Dependency Injection-Container, sodass Sie sie in Ihren Anwendungsdiensten auflösen und anwenden können. Außerdem können Sie Agentabhängigkeiten wie Tools und Sitzungsspeicher aus demselben Container verwalten. Agents können zusammen mit Ihrer Anwendungsinfrastruktur gehostet werden, unabhängig von den verwendeten Protokollen. Ebenso können Workflows gehostet werden und die gemeinsame Infrastruktur Ihrer Anwendung nutzen.

Kernhostingbibliothek

Die Microsoft.Agents.AI.Hosting Bibliothek ist die Grundlage für das Hosten von KI-Agents in ASP.NET Core. Es bietet Erweiterungen, um KI-Agents und -Workflows zu registrieren und zu konfigurieren. In ASP.NET Core ist der grundlegende Typ IHostApplicationBuilder, der den Builder für gehostete Anwendungen und Dienste darstellt, der Konfiguration, Protokollierung, Lebensdauer und mehr verwaltet.

Registrieren Sie einen IChatClient im Abhängigkeitsinjektionscontainer, bevor Sie Agents oder Workflows konfigurieren. In den folgenden Beispielen wird es als Keyed Singleton unter dem Namen chat-modelregistriert:

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

Registrieren eines KI-Agents mit Abhängigkeitsinjektion:

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

Die AddAIAgent() Methode gibt eine IHostedAgentBuilder, die Erweiterungsmethoden zum Konfigurieren des Agents bereitstellt. Sie können dem Agent z. B. Tools hinzufügen:

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

Den Sitzungsspeicher (Speicher für Gesprächsdaten) können Sie auch konfigurieren.

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

AddWorkflow

Registrieren Sie Workflows, die mehrere Agents koordinieren. Ein Workflow ist im Wesentlichen ein "Diagramm", in dem jeder Knoten ein AIAgentist, und die Agents kommunizieren miteinander.

In diesem Beispiel arbeiten zwei Agents sequenziell. Die Benutzereingabe wird zuerst an agent-1 gesendet, welches eine Antwort erzeugt und an agent-2 sendet. Der Workflow gibt dann die endgültige Antwort aus. Es gibt auch eine BuildConcurrent Methode, mit der ein gleichzeitiger Agent-Workflow erstellt wird.

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

Verfügbarmachen von Workflow als AIAgent

Um Protokollintegrationen (z. B. A2A oder OpenAI) mit einem Workflow zu verwenden, konvertieren Sie sie in einen eigenständigen Agent. Derzeit stellen Workflows keine ähnlichen Integrationsfunktionen selbst bereit, daher ist dieser Konvertierungsschritt erforderlich:

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

Implementierungsdetails

Die Hostingbibliotheken fungieren als Protokolladapter, die externe Kommunikationsprotokolle und die interne AIAgent Implementierung des Agent-Frameworks überbrücken. Wenn Sie eine Hostintegrationsbibliothek verwenden, ruft die Bibliothek die registrierte AIAgent aus der Abhängigkeitsinjektion ab, umschließt sie mit protokollspezifischer Middleware, um eingehende Anforderungen und ausgehende Antworten zu übersetzen, und ruft AIAgent zur Verarbeitung der Anforderungen auf. Diese Architektur sorgt dafür, dass Ihre Agentenimplementierung protokollunabhängig bleibt.

Verwenden Sie beispielsweise die ASP.NET Core-Hostingbibliothek mit dem A2A-Protokolladapter:

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

Tipp

In den Beispielen für dauerhafte Azure-Funktionen finden Sie Serverlose Hostingbeispiele.

Installieren Sie das Azure Functions-Hostingpaket:

pip install agent-framework-azurefunctions --pre

Erstellen eines Agents:

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

Registrieren Sie den Agent bei 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)

Lokal mit Azure Functions Core Tools ausführen:

func start

Rufen Sie dann Folgendes auf:

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

Tipp

Im vollständigen Beispiel finden Sie die vollständige runnable Datei und die Azure Functions-Hostingbeispiele für weitere Muster.

Nächste Schritte

Gehen Sie tiefer:

Siehe auch