Quickstart: Baue eine ereignisgesteuerte KI-App mit Azure Functions-gehosteten Fähigkeiten

In diesem Quickstart stellst du eine ereignisgesteuerte KI-Anwendung in Azure Functions bereit, indem du die Azure Developer CLI (azd) verwendest. Die Stichprobe umfasst zwei gehostete Fähigkeiten:

  • Eine chatgehostete Fähigkeit, mit der du die bereitgestellte App im Browser testen kannst. Diese gehostete Fähigkeit kann Sandbox-Python-Code-Ausführung verwenden und das Web durchsuchen.
  • Eine von Timer ausgelöste gehostete Fähigkeit, die aktuelle Microsoft Blogbeiträge sammelt, zusammenfasst und den Digest über MCP-Tools von einem verwalteten MCP-Server für einen Microsoft 365 Outlook Connector per E-Mail senden kann.

Das Projekt verwendet die von Azure Functions gehosteten Skills. Du definierst gehostete Skills in Dateien vom Typ .agent.md, konfigurierst appweite Laufzeitstandards in agents.config.yaml, verbindest entfernte MCP-Server in mcp.json und stellst die App wie jede andere Funktions-App bereit.

Important

Von Azure Functions gehostete Skills sind derzeit als Vorschau verfügbar. Features, Konfigurationsnamen und unterstützte Connectors können sich vor der allgemeinen Verfügbarkeit ändern.

Die Vorlage stellt alle erforderlichen Azure-Ressourcen bereit, einschließlich Rechenleistung, Speicher, Überwachung, einer Modellbereitstellung, einem Sitzungspool und optionalen Connector-Ressourcen für die E-Mail-Zustellung.

Das Abschließen dieser Schnellstartanleitung kann in Ihrem Azure Konto zu geringen Kosten führen, da die App den Flex-Verbrauchsplan und die zugehörigen Azure Ressourcen verwendet.

Voraussetzungen

  • Azure Developer CLI (azd).
  • Azure CLI. Sie können auch Azure CLI-Befehle in Azure Cloud Shell ausführen.
  • Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.
  • Berechtigungen zum Erstellen von Ressourcengruppen, Function Apps, verwalteten Identitäten, Microsoft Foundry-Ressourcen, Modellbereitstellungen, Azure Container Apps-Sitzungspools, Konnektor-Namespaces und Verbindungen in Ihrem Abonnement.
  • Um die E-Mail-Zustellung zu ermöglichen, gibt es ein Microsoft 365-Konto, bei dem Sie sich anmelden können, das E-Mails senden kann und das Sie als Empfängeradresse zur Verifizierung der Ausgabe verwenden können.

Initialisieren des Projekts

Verwenden Sie den azd init Befehl, um ein lokales Projekt aus dem Beispiel-Repository zu erstellen.

  1. Öffnen Sie in Visual Studio Code einen Ordner oder Arbeitsbereich, in dem Sie Ihr Projekt erstellen möchten.

  2. Im Terminal führen Sie diesen azd init Befehl aus:

    azd init --template Azure-Samples/functions-quickstart-serverless-agents-azd -e serverless-agents
    

    Mit diesem Befehl werden die Projektdateien aus dem Beispiel-Repository serverlose Agents abgerufen und das Projekt im aktuellen Ordner initialisiert. Die -e-Kennzeichnung benennt die aktuelle azd Umgebung, die den Bereitstellungsstatus verfolgt und in Azure Ressourcennamen verwendet wird.

  3. Änderung im Projekt-Root-Verzeichnis:

    cd functions-quickstart-serverless-agents-azd
    
  4. Stellen Sie die Empfänger-E-Mail-Adresse ein, die vom Timer gehosteten Skill verwendet wird. Später in diesem Quickstart meldest du dich bei einem Microsoft 365-Konto an, um die Microsoft 365 Outlook Verbindung zu autorisieren, die die E-Mail sendet.

    azd env set TO_EMAIL <recipient@example.com>
    

    Ersetzen Sie <recipient@example.com> durch Ihre eigene E-Mail-Adresse oder durch einen anderen Empfänger, der gemäß den E-Mail-Richtlinien Ihrer Organisation zulässig ist. Einige Organisationen beschränken connectorbasierte E-Mails auf interne Empfänger oder blockieren externe Empfänger, sodass das Senden der Testnachricht an sich selbst die zuverlässigste Option ist.

    Note

    Die E-Mail-Zustellung ist im Beispiel optional. Wenn Sie diese Einstellung überspringen, erstellt azd up keinen Connector-Namespace, keine Microsoft 365 Outlook-Verbindung und keinen verwalteten MCP-Server. Die timergehostete Funktion wird weiterhin ausgeführt und gibt die Zusammenfassung in ihrer endgültigen Antwort zurück, sodass Sie die Ausführung in Protokollen oder in Application Insights überprüfen können.

Überprüfen des Projekts

Bevor Sie deployen, sehen Sie sich die Projektdateien an, die die App definieren:

Datei oder Ordner Zweck
src/main.agent.md Definiert die gehostete Chat-Fähigkeit und aktiviert eingebaute Endpunkte für die Debug-Chat-Benutzeroberfläche. Diese gehostete Fähigkeit kann Python-Code in einer Sandbox ausführen und verwendet nicht den verwalteten MCP-Server für Microsoft 365 Outlook.
src/daily_microsoft_blog_summary.agent.md Definiert die gehostete Fähigkeit für die durch einen Timer ausgelöste Blogzusammenfassung. Das YAML-Front-Matter deklariert den Timer-Trigger, und der Markdown-Text enthält die gehosteten Fertigkeitsanweisungen.
src/agents.config.yaml Definiert anwendungsweite Laufzeitstandardwerte, einschließlich der Modellbereitstellung und des dynamischen Session-Pool-Endpunkts von Azure Container Apps, der von gehosteten Skills in der App genutzt wird.
src/mcp.json Listet die entfernten MCP-Server auf, die den gehosteten Fähigkeiten zur Verfügung stehen. In dieser Vorlage ist src der Stamm des Funktions-App-Projekts, und diese Datei enthält den verwalteten MCP-Serverendpunkt für Microsoft 365 Outlook, wenn die E-Mail-Zustellung aktiviert ist.
infra/ Enthält die Bicep-Dateien, die von azd verwendet werden, um die Function App, den Speicher, die Überwachung, die Foundry-Ressourcen, die Bereitstellung des Modells, den Sitzungspool, die optionalen Ressourcen des Konnektor-Namespace und die Identitätskonfiguration bereitzustellen.
src/function_app.py Erforderliche Bootstrapdatei für den Functions-Host. Normalerweise müssen Sie diese Datei nicht bearbeiten.

Die vom Timer ausgelöste gehostete Fähigkeit ist in daily_microsoft_blog_summary.agent.mddefiniert. Das Front Matter legt den Zeitplan des Timers fest, und die Markdown-Anweisungen weisen die Aufgabe an, aktuelle Microsoft-Blogbeiträge zu sammeln, eine Zusammenfassung zu erstellen und eine E-Mail zu senden, wenn TO_EMAIL konfiguriert ist.

In Azure bereitstellen

Verwenden Sie azd up, um Azure Ressourcen bereitzustellen und die Funktions-App bereitzustellen.

  1. Führen Sie im Terminal diesen Befehl aus dem Stammverzeichnis des initialisierten Projekts aus:

    azd up
    
  2. Wenn Sie dazu aufgefordert werden, wählen Sie das Azure Abonnement und den Speicherort aus, der für die Ressourcengruppe verwendet werden soll.

    Die Vorlage verwendet die Standardbereitstellungseinstellungen für das Microsoft-Foundry-Modell, sofern Sie die Bicep-Parameter nicht anpassen.

Nachdem der Befehl abgeschlossen ist, wird die App in einer neuen Funktions-App in Azure bereitgestellt. Die Bereitstellungsausgabe enthält Links zu den erstellten Ressourcen.

Autorisieren der Verbindung

Die Bereitstellung erstellt einen Connector-Namensraum mit einer Microsoft 365 Outlook-Verbindung und einem verwalteten MCP-Server. Dieses Setup ermöglicht es der von Timer gehosteten Fähigkeit, E-Mails über Connector-Tools zu senden, ohne benutzerdefinierten Outlook-API-Code. Bevor der gehostete Skill E-Mails senden kann, autorisieren Sie die Verbindung, indem Sie sich bei einem Microsoft 365-Konto anmelden, das E-Mails senden kann.

  1. Suchen Sie im Azure-Portal nach Connector Namespace.

  2. Öffnen Sie die Connector-Namespace-Ressource, die von azd erstellt wurde. Die Ressource befindet sich in der Ressourcengruppe, die von azd erstellt wurde und deren Name mit rg- beginnt und den Namen der Umgebung enthält, die Sie während azd init ausgewählt haben (serverless-agents, wenn Sie den Beispielbefehl verwendet haben).

    Wenn Sie die Ressource auswählen, wird das Connector Namespaces-Portal geöffnet, eine separate Benutzeroberfläche zum Durchsuchen und Verwalten der Verbindungen, Trigger und MCP-Server im Namespace.

  3. Suchen Sie im Portal "Connector-Namespaces" den Microsoft 365 Outlook Connector, und öffnen Sie dann die durch die Bereitstellung erstellte Verbindung.

  4. Wählen Sie Authenticate aus, und melden Sie sich dann mit dem Microsoft 365 Konto an, das E-Mails senden kann.

Nachdem die Authentifizierung erfolgreich war, kann die verwaltete Identität der Funktions-App den verwalteten MCP-Server aufrufen, der die autorisierte Verbindung zum Senden von E-Mails verwendet.

Nutze die Debug-Chat-UI

Das Beispiel enthält eine in einem Chat gehostete Fähigkeit, die die Ausführung von Python-Code über den dynamischen Sitzungspool von Azure Container Apps verwendet. Die Chat-Benutzeroberfläche ist eine Debug-Oberfläche zum Testen der bereitgestellten App.

Nachdem azd up abgeschlossen ist, öffnen Sie den in der Bereitstellungsausgabe angezeigten Endpunkt der Funktions-App, und wechseln Sie dann zu /agents/main/. Wenn die Chat-Benutzeroberfläche geladen wird, fordert sie eine Funktionstaste an, damit sie den Chat-Endpunkt aufrufen kann.

Rufen Sie den Standardfunktionsschlüssel für die App ab:

az functionapp keys list \
  --resource-group <RESOURCE_GROUP> \
  --name <FUNCTION_APP_NAME> \
  --query "functionKeys.default" \
  --output tsv

Fügen Sie den zurückgegebenen Schlüssel in den Chat-UI-Prompt ein.

Versuche, dem im Chat gehosteten Skill eine Frage zu stellen, für deren Beantwortung aktuelle öffentliche Informationen oder Codeausführung nützlich sind. Sie können z. B. fragen What's the weather in Seattle right now? oder Compare the current weather in Seattle and New York.

Die im Chat gehostete Fähigkeit verwendet nicht den von Microsoft 365 Outlook verwalteten MCP-Server. Die vom Timer ausgelöste gehostete Blog-Zusammenfassungs-Fähigkeit nutzt E-Mail-Zustellung.

Führen Sie die Timer-gehostete Fertigkeit auf Abruf aus

Der gehostete Skill wird automatisch gemäß seinem Zeitplan ausgeführt. Um sie sofort zu testen, führen Sie die zeitgeberauslöste Funktion manuell aus dem Azure-Portal aus.

  1. Öffnen Sie im portal Azure die von azd erstellte Funktions-App.

  2. Im Übersichtsfenster wählen Sie Funktionen aus und dann die vom Timer ausgelöste Funktion namens daily_microsoft_blog_summary.

  3. Wählen Sie Code + Test aus.

  4. Wählen Sie "Protokolle " aus, um den Protokolldatenstrom für diese Funktion zu öffnen.

  5. Wählen Sie "Testen/Ausführen" aus, lassen Sie den Anforderungstext als {}, und wählen Sie dann "Ausführen" aus.

Die Anforderung gibt eine akzeptierte Antwort zurück, und die Funktionsausführung beginnt im Hintergrund.

Überwachen der Ausführung

Kehren Sie für die zeitgesteuerte Funktion zum Bereich Protokolle in Code + Test zurück. In den Protokollen werden Funktionsausführungs- und Laufzeitmeldungen angezeigt. Abhängig von der Laufzeitprotokollebene werden möglicherweise auch Modell- und Toolaktivitäten angezeigt.

Sie können Application Insights auch verwenden, um die Ausführung zu überprüfen, nachdem Telemetrie aufgenommen wurde:

  1. Wählen Sie im linken Menü der Funktions-App "Application Insights" aus.

  2. Öffnen Sie die zugeordnete Application Insights-Ressource.

  3. Verwenden Sie die Transaktionssuche oder Protokolle , um die Ausführung zu finden, die beim manuellen Ausführen der Funktion gestartet wurde.

Die Ausführung ist abgeschlossen, wenn die Protokolle zeigen, dass die Funktionsausführung erfolgreich abgeschlossen wurde. Wenn die E-Mail-Zustellung aktiviert ist und die Microsoft 365 Outlook Verbindung autorisiert ist, überprüfen Sie den Posteingang des Empfängers auf den Microsoft Blogdigest. Ansonsten sollten Sie die endgültige Antwort in den Funktionsprotokollen oder Anwendungseinblicken überprüfen.

Bereinigen von Ressourcen

Wenn Sie fertig sind, verwenden Sie diesen Befehl, um die Funktions-App und verwandte Ressourcen aus Azure zu löschen:

azd down