Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
- Ein Azure-Konto mit einem aktiven Abonnement – Kostenlos ein Konto erstellen.
- GitHub-Konto zur Verwendung von GitHub Codespaces – Erfahren Sie mehr über GitHub Codespaces.
Ö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.
Navigieren Sie zum GitHub-Repository unter https://github.com/Azure-Samples/app-service-agentic-semantic-kernel-ai-foundry-agent.
Wählen Sie die Schaltfläche "Code ", dann die Registerkarte " Codespaces " und dann " Codespace erstellen" im Hauptfeld aus.
Warten Sie einige Augenblicke, bis Der Codespace initialisiert wird. Wenn Sie bereit sind, wird eine vollständig konfigurierte Entwicklungsumgebung in Ihrem Browser angezeigt.
Führen Sie die Anwendung lokal aus:
dotnet runWenn 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
IChatClientaus Azure OpenAI mithilfe derAzureOpenAIClient. - Ruft die
TaskCrudToolInstanz ab, die die Funktionalität der CRUD-Anwendung (in Tools/TaskCrudTool.cs) kapselt. DieDescriptionAttribute der Toolmethoden helfen dem Agent zu bestimmen, wie sie aufgerufen werden. - Erstellt einen KI-Agent mithilfe von
CreateAIAgent()mit Anweisungen und Tools, die überAIFunctionFactory.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 erstellt und deine Beispielanwendung bereitstellt. Die vom App Service systemzugeordneten verwalteten Identität wird für ausgehende Azure-KI-Aufrufe beibehalten. Eine separate, vom Benutzer zugewiesene verwaltete Identität und eine föderierte Identitätszugangsdaten ermöglichen es der App Service-Authentifizierung, als generierte Microsoft Entra-Anwendung ohne Client-Geheimnis zu fungieren.
Im Terminal melden Sie sich mit Azure Developer CLI bei Azure an:
azd auth loginFolgen Sie den Anweisungen, um den Authentifizierungsprozess abzuschließen.
Deploye die Azure App Service App mit der AZD-Vorlage:
azd upWenn 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. Suchen Sie in der AZD-Ausgabe die URL für Ihre App, und navigieren Sie im Browser dorthin. Kopiere außerdem den Wert für die Foundry OpenAPI-Zielgruppe der verwalteten Identität zur späteren Verwendung. Die Ausgabe sieht wie folgt aus:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL> Foundry OpenAPI managed identity audience: api://<generated-client-id>Wenn Microsoft Sie auffordert, melden Sie sich mit einem Konto im Deployment-Tenant an und überprüfen Sie, ob die Aufgabenliste geladen ist.
Im selben authentifizierten Browser hängen Sie
/openapi/v1.jsondem App-Service-Endpunkt an. Kopiere oder speichere das generierte OpenAPI-Schema für später.Note
Die App Service-Authentifizierung gibt eine HTTP-302-Weiterleitung für nicht authentifizierte Browseranfragen zurück. Dieses Beispiel enthält sowohl eine Browser-Benutzeroberfläche als auch APIs, sodass die Weiterleitung ein brauchbares Anmeldeerlebnis bietet. API-only-Apps verwenden stattdessen häufig HTTP 401.
Erstellen und Konfigurieren der Microsoft Foundry-Ressource
Im Foundry-Portal erstellen Sie ein Projekt.
Stellen Sie ein Modell Ihrer Wahl bereit (siehe Schnellstart von Microsoft Foundry: Erstellen von Ressourcen).
Kopieren Sie den Namen des Modells aus dem oberen Bereich des Modell-Playrounds.
Auf der Startseite kopieren Sie den Azure OpenAI-Endpunkt für später.
Zuweisen erforderlicher Berechtigungen
Im Foundry-Portal wählen Sie im oberen Menü "Verwalten " aus.
In Project Details wählen Sie die Elternressource Ihres Projekts aus und wählen Sie dann im Azure-Portal öffnen.
Vom Azure-Portal aus können Sie rollenbasierten Zugriff für die Ressource zuweisen.
Fügen Sie die folgende Rolle sowohl für die verwaltete Identität der App Service-App als auch für den Benutzer hinzu, den Sie mit
az loginverwenden: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
Öffnen Sie appsettings.json. Konfigurieren Sie mithilfe der Werte, die Sie zuvor aus dem Foundry-Portal kopiert haben, die folgenden Variablen:
Variable Description AzureOpenAIEndpointAzure OpenAI-Endpunkt (kopiert von der Startseite des Foundry-Portals). ModelDeploymentModellname 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.
Melden Sie sich mit der Azure CLI bei Azure an:
az loginDadurch 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.
Führen Sie die Anwendung lokal aus:
dotnet runWenn Sie sehen, dass Ihre Anwendung auf Port 5280 ausgeführt wird, wählen Sie "Im Browser öffnen" aus.
Validiere beide Pivots separat:
- Microsoft Agent Framework: Wählen Sie Microsoft Agent Framework Agent und bitten Sie den Agenten, eine Aufgabe zu erstellen. Das Microsoft Agent Framework ruft das In-Process-Task-Tool auf.
-
Foundry Agent Service: Wählen Sie Foundry Agent Service und bitten Sie den Agenten, eine Aufgabe zu erstellen. Der entfernte Foundry-Agent ruft den bereitgestellten, geschützten
/api/tasksEndpunkt mit verwalteter Identität auf.
Die Aufgabe, die der Foundry-Agent erstellt, erscheint in der bereitgestellten App Service-Instanz, nicht in der lokalen In-Memory-Datenbank. Das Foundry OpenAPI-Tool verwendet immer die Server-URL, die im OpenAPI-Schema eingebettet ist.
Stellen Sie ihre App-Änderungen wieder im GitHub-Codespace bereit.
azd upNavigieren Sie erneut zur bereitgestellten Anwendung, und testen Sie die Chat-Agents.
Häufig gestellte Fragen
Wie füge ich dem Foundry-Agenten Retrieval-Augmented Generation (RAG) hinzu?
Diese Anleitung gilt für den Foundry Agent Service-Weg in diesem Tutorial. Es ändert nicht die im anderen Tab gezeigten Implementierungen von LangGraph, Semantischer Kernel oder Microsoft Agent Framework.
Erstellen oder wählen Sie eine Foundry IQ Wissensdatenbank und verbinden Sie diese dann mit dem Foundry Agent Service Agenten. Die Verbindung wird dem Agenten als verwaltetes MCP-Wissenswerkzeug zur Verfügung gestellt.
Der App Service-Code ruft denselben Agenten weiterhin namentlich über seinen bestehenden Foundry-Client und agent_referenceauf. Die Webanwendung benötigt keine direkte Azure KI-Suche-Integration oder einen eigenen MCP-Client. Wenn die Benutzeroberfläche Quellen anzeigt, verarbeiten Sie die vom Agenten zurückgegebenen Zitationsanmerkungen.
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
Dann lösche die Foundry-Ressource, falls du sie separat erstellt hast.