Freigeben über


Lernprogramm: Erstellen einer agentischen Web-App in Azure App Service mit Microsoft Agent Framework oder Foundry Agent Service (.NET)

In diesem Lernprogramm wird veranschaulicht, wie Sie einer vorhandenen datengesteuerten ASP.NET Core CRUD-Anwendung agentische Funktionen hinzufügen. Dazu werden zwei verschiedene Ansätze verwendet: Microsoft Agent Framework und Foundry Agent Service.

Wenn Ihre Webanwendung bereits nützliche Features wie Shopping, Hotelbuchung oder Datenverwaltung aufweist, ist es relativ einfach, Ihrer Webanwendung Agent-Funktionen hinzuzufügen, indem sie diese Funktionen als Tools (für Microsoft Agent Framework) oder als OpenAPI-Endpunkt (für Foundry Agent Service) umschließen. In dieser Anleitung beginnen Sie mit einer einfachen To-Do-Listen-App. Am Ende können Sie Aufgaben mit einem Agent in einer App Service-App erstellen, aktualisieren und verwalten.

Sowohl microsoft Agent Framework als auch der Foundry Agent Service ermöglichen Es Ihnen, agentische Webanwendungen mit KI-gesteuerten Funktionen zu erstellen. In der folgenden Tabelle sind einige der Überlegungen und Kompromisse aufgeführt:

Consideration Microsoft Agent Framework Gießerei-Agentendienst
Performance Schnell (läuft lokal) Langsamer (verwalteter, Ferndienst)
Development Vollständiger Code, maximale Steuerung Geringer Code, schnelle Integration
Testing Manuelle Tests/Einheitstests im Code Integrierter Playground für schnelle Tests
Scalability App-verwaltet Von Azure verwaltet, automatisch skaliert
Sicherheitsschutzschienen Benutzerdefinierte Implementierung erforderlich Integrierte Sicherheit und Moderation von Inhalten
Identität Benutzerdefinierte Implementierung erforderlich Integrierte Agent-ID und Authentifizierung
Enterprise Benutzerdefinierte Integration erforderlich Integrierte Microsoft 365/Teams-Bereitstellung und Integrierte Microsoft 365-Toolaufrufe.

In diesem Tutorial lernen Sie Folgendes:

  • Konvertieren Sie vorhandene App-Funktionen in Tools für Microsoft Agent Framework.
  • Fügen Sie die Tools einem Microsoft Agent Framework-Agent hinzu, und verwenden Sie sie in einer Web-App.
  • Konvertieren Sie vorhandene App-Funktionen in einen OpenAPI-Endpunkt für den Foundry Agent Service.
  • Rufen Sie einen Foundry-Agent in einer Web-App auf.
  • Weisen Sie die erforderlichen Berechtigungen für verwaltete Identitätskonnektivität zu.

Prerequisites

Öffnen des Beispiels mit Codespaces

Die einfachste Möglichkeit für die ersten Schritte ist die Verwendung von GitHub Codespaces, die eine vollständige Entwicklungsumgebung mit allen erforderlichen Tools vorinstalliert bietet.

  1. Navigieren Sie zum GitHub-Repository unter https://github.com/Azure-Samples/app-service-agentic-semantic-kernel-ai-foundry-agent.

  2. Wählen Sie die Schaltfläche "Code ", dann die Registerkarte " Codespaces " und dann " Codespace erstellen" im Hauptfeld aus.

  3. Warten Sie einige Augenblicke, bis Der Codespace initialisiert wird. Wenn Sie bereit sind, wird eine vollständig konfigurierte Entwicklungsumgebung in Ihrem Browser angezeigt.

  4. Führen Sie die Anwendung lokal aus:

    dotnet run
    
  5. Wenn Sie sehen, dass Ihre Anwendung auf Port 5280 ausgeführt wird, wählen Sie "Im Browser öffnen" aus, und fügen Sie einige Aufgaben hinzu.

Überprüfen des Agentcodes

Beide Ansätze verwenden dasselbe Implementierungsmuster, bei dem der Agent als Dienst (in Program.cs) in einem Anbieter initialisiert und in die jeweilige Blazor-Komponente eingefügt wird.

Die AgentFrameworkProvider Initialisierung erfolgt in Services/AgentFrameworkProvider.cs. Der Initialisierungscode führt folgendes aus:

  • Erstellt eine IChatClient aus Azure OpenAI mithilfe der AzureOpenAIClient.
  • Ruft die TaskCrudTool Instanz ab, die die Funktionalität der CRUD-Anwendung (in Tools/TaskCrudTool.cs) kapselt. Die Description Attribute der Toolmethoden helfen dem Agent zu bestimmen, wie sie aufgerufen werden.
  • Erstellt einen KI-Agent mithilfe von CreateAIAgent() mit Anweisungen und Tools, die über AIFunctionFactory.Create() registriert werden.
  • Erstellt einen Thread für den Agenten, um den Dialog über die Navigation hinweg aufrechtzuerhalten.
// Create IChatClient
IChatClient chatClient = new AzureOpenAIClient(
        new Uri(endpoint),
        new DefaultAzureCredential())
    .GetChatClient(deployment)
    .AsIChatClient();

// Get TaskCrudTool instance from service provider
var taskCrudTool = sp.GetRequiredService<TaskCrudTool>();

// Create agent with tools
var agent = chatClient.CreateAIAgent(
    instructions: @"You are an agent that manages tasks using CRUD operations. 
        Use the provided functions to create, read, update, and delete tasks. 
        Always call the appropriate function for any task management request.
        Don't try to handle any requests that are not related to task management.
        When handling requests, if you're missing any information, don't make it up but prompt the user for it instead.",
    tools:
    [
        AIFunctionFactory.Create(taskCrudTool.CreateTaskAsync),
        AIFunctionFactory.Create(taskCrudTool.ReadTasksAsync),
        AIFunctionFactory.Create(taskCrudTool.UpdateTaskAsync),
        AIFunctionFactory.Create(taskCrudTool.DeleteTaskAsync)
    ]);

// Create thread for this scoped instance (persists across navigation)
var thread = agent.GetNewThread();

return (agent, thread);

Jedes Mal, wenn der Benutzer eine Nachricht sendet, ruft die Blazor-Komponente (in Components/Pages/AgentFrameworkAgent.razor) Agent.RunAsync() mit der Benutzereingabe und dem Agentthread auf. Der Agentthread verfolgt den Chatverlauf.

var response = await this.Agent.RunAsync(sentInput, this.agentThread);

Bereitstellen der Beispielanwendung

Das Beispiel-Repository enthält eine Azure Developer CLI (AZD)-Vorlage, die eine App Service-App mit verwalteter Identität erstellt und Ihre Beispielanwendung bereitstellt.

  1. Melden Sie sich im Terminal mit Azure Developer CLI bei Azure an:

    azd auth login
    

    Folgen Sie den Anweisungen, um den Authentifizierungsprozess abzuschließen.

  2. Stellen Sie die Azure App Service-App mit der AZD-Vorlage bereit:

    azd up
    
  3. Wenn Sie dazu aufgefordert werden, geben Sie die folgenden Antworten:

    Question Answer
    Geben Sie einen neuen Umgebungsnamen ein: Geben Sie einen eindeutigen Namen ein.
    Wählen Sie ein Azure-Abonnement aus, das Sie verwenden möchten: Wählen Sie das Abonnement aus.
    Wählen Sie eine zu verwendende Ressourcengruppe aus: Wählen Sie Eine neue Ressourcengruppe erstellen aus.
    Wählen Sie einen Speicherort aus, in dem die Ressourcengruppe erstellt werden soll: Wählen Sie "Schweden Zentral" aus.
    Geben Sie einen Namen für die neue Ressourcengruppe ein: Geben Sie Eingeben ein.
  4. Suchen Sie in der AZD-Ausgabe die URL für Ihre App, und navigieren Sie im Browser dorthin. Die URL sieht in der AZD-Ausgabe wie folgt aus:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  5. Wählen Sie das OpenAPI-Schemaelement aus, um das automatisch generierte OpenAPI-Schema im Standardpfad /openapi/v1.json zu öffnen. Sie benötigen dieses Schema später.

  6. Nach erfolgreicher Bereitstellung wird eine URL für Ihre bereitgestellte Anwendung angezeigt.

    Sie verfügen jetzt über eine App Service-App mit einer vom System zugewiesenen verwalteten Identität.

Erstellen und Konfigurieren der Microsoft Foundry-Ressource

  1. Vergewissern Sie sich im Foundry-Portal, dass die obere Neue Foundry-Schaltfläche auf aktiv festgelegt ist und erstellen Sie ein Projekt.

  2. Stellen Sie ein Modell Ihrer Wahl bereit (siehe Schnellstart von Microsoft Foundry: Erstellen von Ressourcen).

  3. Kopieren Sie den Namen des Modells aus dem oberen Bereich des Modell-Playrounds.

  4. Die einfachste Möglichkeit zum Abrufen des Azure OpenAI-Endpunkts ist noch aus dem klassischen Portal. Wählen Sie die Schaltfläche Neues Foundry, dann Azure OpenAI und kopieren Sie die URL in Azure OpenAI Endpunkt für später.

    Screenshot, der zeigt, wie der OpenAI-Endpunkt und der Gießereiprojektendpunkt im Gießereiportal kopiert werden.

Zuweisen erforderlicher Berechtigungen

  1. Wählen Sie im oberen Menü des neuen Gießereiportals "Betreiben" und dann "Administrator" aus. In der Zeile für Ihr Foundry-Projekt sollten zwei Links angezeigt werden. Die Ressource in der Spalte "Name" ist die Foundry-Projektressource, und die Ressource in der Spalte "Übergeordnete Ressource" ist die Foundry-Ressource.

    Screenshot, der zeigt, wie Sie schnell zur Gießereiressource oder Gießereiprojektressource wechseln.

  2. Wählen Sie die Foundry-Ressource in der übergeordneten Ressource aus, und wählen Sie dann im Azure-Portal "Diese Ressource verwalten" aus. Im Azure-Portal können Sie der bereitgestellten Web-App rollenbasierten Zugriff für die Ressource zuweisen.

  3. Fügen Sie die folgende Rolle für die verwaltete Identität der App-Service-App hinzu.

    Zielressource Erforderliche Rolle Erforderlich für
    Gießerei Kognitive Dienste OpenAI-Nutzer Der Chatabschlussdienst in Microsoft Agent Framework.

    Anweisungen hierzu finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Konfigurieren von Verbindungsvariablen in Ihrer Beispielanwendung

  1. Öffnen Sie appsettings.json. Konfigurieren Sie mithilfe der Werte, die Sie zuvor aus dem Foundry-Portal kopiert haben, die folgenden Variablen:

    Variable Description
    AzureOpenAIEndpoint Azure OpenAI-Endpunkt (kopiert aus dem klassischen Foundry-Portal).
    ModelDeployment Modellname in der Bereitstellung (kopiert aus dem Modell-Playground im New Foundry Portal).

    Note

    Um das Lernprogramm einfach zu halten, verwenden Sie diese Variablen in appsettings.json, anstatt sie mit App-Einstellungen in App Service zu überschreiben.

    Note

    Um das Lernprogramm einfach zu halten, verwenden Sie diese Variablen in appsettings.json, anstatt sie mit App-Einstellungen in App Service zu überschreiben.

  2. Melden Sie sich mit der Azure CLI bei Azure an:

    az login
    

    Dadurch kann die Azure Identity-Clientbibliothek im Beispielcode ein Authentifizierungstoken für den angemeldeten Benutzer empfangen. Denken Sie daran, dass Sie die erforderliche Rolle für diesen Benutzer zuvor hinzugefügt haben.

  3. Führen Sie die Anwendung lokal aus:

    dotnet run
    
  4. Wenn Sie sehen, dass Ihre Anwendung auf Port 5280 ausgeführt wird, wählen Sie "Im Browser öffnen" aus.

  5. Wählen Sie den Link "Microsoft Agent Framework-Agent" und den Link " Foundry Agent Service " aus, um die Chatschnittstelle auszuprobieren. Wenn Sie eine Antwort erhalten, stellt Ihre Anwendung eine erfolgreiche Verbindung mit der Microsoft Foundry-Ressource her.

  6. Stellen Sie ihre App-Änderungen wieder im GitHub-Codespace bereit.

    azd up
    
  7. Navigieren Sie erneut zur bereitgestellten Anwendung, und testen Sie die Chat-Agents.

Bereinigen von Ressourcen

Wenn Sie mit der Anwendung fertig sind, können Sie die App Service-Ressourcen löschen, um weitere Kosten zu vermeiden:

azd down --purge

Da die AZD-Vorlage die Microsoft Foundry-Ressourcen nicht enthält, müssen Sie sie bei Bedarf manuell löschen.

Weitere Ressourcen