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 KI-Aufgaben:

  • Eine Chat-Aufgabe, mit der du die bereitgestellte App im Browser testen kannst. Diese Aufgabe kann Sandbox-Python-Code-Ausführung verwenden und das Web durchsuchen.
  • Eine von Timern ausgelöste Aufgabe, 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 KI-Aufgaben in .agent.md-Dateien, konfigurierst appweite Laufzeitstandardwerte in agents.config.yaml, bindest Remote-MCP-Server in mcp.json ein und stellst die App wie jede andere Function 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, Funktions-Apps, verwalteten Identitäten, Microsoft Foundry-Ressourcen, Modellbereitstellungen, Azure Container Apps-Sitzungspools, Connector-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. Aktivieren Sie die E-Mail-Zustellung, indem Sie die Empfängeradresse festlegen, die für die Timer-Aufgabe verwendet wird. Später in dieser Schnellstartanleitung müssen Sie sich bei einem Microsoft 365 Konto anmelden, 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 Timer-Aufgabe läuft weiterhin und gibt den Digest in seiner endgültigen Antwort zurück, sodass Sie den Run in Logs oder 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 Chat-Aufgabe und aktiviert integrierte Endpunkte für die Debug-Chat-Benutzeroberfläche. Diese Aufgabe kann Sandbox-Python Code-Ausführung verwenden und nutzt nicht den Microsoft 365 Outlook verwalteten MCP-Server.
src/daily_microsoft_blog_summary.agent.md Definiert die zeitgesteuerte Blog-Zusammenfassungsaufgabe. Das YAML-Front-Matter definiert den Timertrigger, und der Markdown-Text enthält die Anweisungen für die Aufgabe.
src/agents.config.yaml Definiert Anwendungsweite Laufzeitstandardwerte, einschließlich der Modellbereitstellung und des dynamischen Session-Pool-Endpunkts von Azure Container Apps, der von Aufgaben in der App verwendet wird.
src/mcp.json Listet die entfernten MCP-Server auf, die den KI-Aufgaben 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 Funktions-App, Speicher, Überwachung, Foundry-Ressourcen, Modellbereitstellung, Sitzungspool, optionale Connector-Namespaceressourcen und 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 Aufgabe 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.

Nach Abschluss des Befehls wird die App in Azure in einer neuen Funktions-App bereitgestellt. Die Bereitstellungsausgabe enthält Links zu den erstellten Ressourcen.

Autorisieren der Verbindung

Wenn Sie TO_EMAIL festlegen, erstellt die Bereitstellung einen Connector Namespace mit einer Microsoft 365 Outlook-Verbindung und einem verwalteten MCP-Server. Dieses Setup ermöglicht es der Timer-Aufgabe, E-Mails über Connector-Tools zu senden, ohne benutzerdefinierten Outlook-API-Code. Bevor die Aufgabe E-Mails senden kann, autorisieren Sie die Verbindung, indem Sie sich mit einem Microsoft 365-Konto anmelden, das E-Mails versenden kann.

Wenn Sie nicht festlegen TO_EMAIL, überspringen Sie diesen Abschnitt.

  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 Chat-Aufgabe, die Python-Code-Ausführung über den dynamischen Session Pool 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, der Chat-Aufgabe eine Frage zu stellen, die von aktuellen öffentlichen Informationen oder Code-Ausführung profitiert. 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 Chat-Aufgabe nutzt nicht den Microsoft 365 Outlook verwalteten MCP-Server. Die vom Timer ausgelöste Blog-Zusammenfassungs-Aufgabe nutzt die E-Mail-Zustellung.

Führe die Timer-Aufgabe auf Abruf aus

Die Aufgabe läuft automatisch nach ihrem Timer-Zeitplan. 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