AI

Microsoft 365 Copilot Erweiterung - Live Daten und Interaction “Infusion Illusion”

5 Min. Lesezeit
Freitag, 03. Mai 2024

Nachdem unser M365 Copilot nun auf die Wissensdatenbank zugreifen kann, möchten wir ihm nun auch Zugriff auf die Lagerbestände ermöglichen. Diese Daten ändern sich häufig beim Kommissionieren, Inventieren oder bei einem Wareneingang. Da der Graph Connector nicht für solche Anforderungen die geeignetste Lösung ist verwenden wir ein M365 Copilot Plugin. Dieses Plugin befindet sich derzeit im Vorschau-Modus und kann nur im Teams-Client verwendet werden.

Welche Daten sollen dem User zur Verfügung gestellt werden?

Diese Frage passt zwar für eine klassische Software-Entwicklung, aber für diesen Fall (oder im Allgemeinen für KI-Anwendungen) muss die Frage lauten: Welche Fragen wird der User stellen und welche Daten (Antworten) soll er darauf erhalten.

Für unseren Teehandel ist nun in erster Linie der Lagerstand entscheidend. Dieser soll über einen Chat abrufbar sein. Dafür haben wir nachfolgende potenzielle Fragestellungen, die der User stellt, definiert:

Gib mir bitte den Lagerstand vom Aplenkräuter Tee?
Welche Teesorten sind im Lager derzeit sonst noch vorhanden?

Jede dieser Fragen zielt darauf ab, Informationen über den Lagerbestand zu erhalten und anhand dieser Fragen erstellen wir einen Chat-Bot, der diese Fragen zum Lagerstand auch sinnvoll beantworten kann.

 2405_copilot_04_responses

 

Um den Copilot zu erweitern,  wird eine Teams Message Extension erstellt. Diese Extension basiert auf dem Microsoft Bot Framework.

Was ist das Microsoft Bot Framework?

Das Microsoft Bot Framework ist eine leistungsstarke Plattform zur Entwicklung von Conversational AI-Lösungen. Dank seiner nahtlosen Integration in Microsoft Azure und seiner breiten Palette von Funktionen ermöglicht es Entwickler:innen die Erstellung ansprechender Bots für verschiedene Anwendungsfälle.

Was ist das Teams Message Extension?

Eine "Teams Message Extension" ist eine Funktion in Microsoft Teams, die es Benutzer:innen ermöglicht, zusätzliche Apps und Dienste direkt innerhalb einer Teams-Unterhaltung zu nutzen. Diese Erweiterungen ermöglichen es Benutzer:innen, auf bestimmte Informationen und Funktionen zuzugreifen, ohne die Teams-Umgebung zu verlassen.

Mit Message Extensions können Benutzer:innen beispielsweise Dateien von verschiedenen externen Diensten wie SharePoint, OneDrive oder eigene Datenquellen direkt in eine Teams-Nachricht einfügen, ohne die jeweiligen Anwendungen verlassen zu müssen. Sie können auch spezielle Bots integrieren, um Aufgaben zu automatisieren oder Informationen abzurufen, oder sie können auf andere Apps und Dienste zugreifen, die in Microsoft Teams integriert sind.

2405_copilot_04_Extention

 

2405_copilot_04_actionCard          2405_copilot_04_Action

 

Welche Komponenten sind in dieser Lösung im Einsatz?

ActionCards für das Benutzeroberflächen-Design (UI):

Wir verwenden ActionCards als zentrales Element für die Gestaltung der Benutzeroberfläche (UI) unserer Teams-Message-Extension. Diese interaktiven Elemente ermöglichen es den Benutzer:innen, nahtlos mit unserer Extension zu interagieren, ohne die Teams-Konversation verlassen zu müssen.

Durch die Verwendung von ActionCards können wir das UI der Extension in verschiedene Abschnitte und Funktionen strukturieren. Jede ActionCard repräsentiert eine spezifische Aktion, Aufgabe oder Information.

Design mittels ActionCards

2405_copilot_04_AdaptiveCard

https://www.adaptivecards.io/designer/

2405_copilot_04_Designer

 

Teams Manifest

Für das Erstellen des Manifests und die Integration in Teams ist es wichtig, die entsprechenden Eigenschaften im Manifest korrekt zu konfigurieren. Dazu gehören der Titel, die Beschreibung von der Teams-Erweiterung. Es ist auch wichtig sicherzustellen, dass die Beschreibung des Plugins klar und verständlich ist, sowohl für den Copilot als auch für den/die Endbenutzer:in.

Beschreibung der Erweiterung

2405_copilot_04_manifest

 

Beschreibung der Funktionen in der Teams Message Extension

2405_copilot_04_methoden

 

Bot Framework

Das Bot Framework ist verantwortlich, dass die Natürliche Sprache in die definierten Methoden übersetzt werden und dieses führt dann eine programmierte Funktion aus.

In der Funktion werden die Parameter vom User ausgelesen und mittels einer Datenbankabfrage verarbeitet. Als Resultat der Funktion wird eine ActionCard zurückgegeben.

Verwendung vom Plugin im Copilot (Teams):

Das Plugin muss nun für den Copilot aktiviert werden:

2405_copilot_04_Enable_Plugin

 

Im Anschluss können die Fragen gestellt werden:

2405_copilot_04_responsewithactioncard

 

Wie funktioniert das Plugin im Zusammenhang mit M365 Copilot?

Wir stellen die Fragen:

2405_copilot_04_responsewithactioncard

Auch kleine Tippfehler werden durch das LLM verziehen, die Parameter verzeihen leider keine Tippfehler. In unserem Beispiel haben wir aber nur Parameter vom Alpenkräuter Tee. Wir sehen, dass auch im Copilot Chat die ActionCard vorhanden ist und somit stehen uns auch unterschiedliche Funktionen bereit, mit dem System zu interagieren.

 

Wie funktioniert die Auswahl des Plugins?

Mit dem Befehl “-developer on” kann geschaut werden ob und wie es funktioniert:

2405_copilot_04_developeron

 

Bei einer Antwort wird eine Developer Ausgabe angezeigt.
Diese Ausgabe umfasst 4 Punkte:

  • Enabled plug-ins
    Welche Plugins waren zum Zeitpunkt der Anfrage aktiv
  • Matched Functions
    Welche Funktionen hat das Plugin und kann der Copilot verarbeiten. Aktuell nur Abfragen keine Aktionen
  • Selected functons for execution
    Welche Funktion vom Plugin ist für diese Fragestellung sinnvoll. Dies wird über das LLM entscheiden
  • Function execution details
    Was wurde wirklich ausgeführt und welcher Status kam vom Botframework zurück

2405_copilot_04_botframework

 

Wie steht es um die Sicherheit?

Das Botframework und die Abfrage vom Copilot laufen im Benutzerkontext. Somit liegt es in der Verantwortung des/der Entwickler:in, diesen Kontext gezielt zu nutzen, um nur die berechtigten Daten zur Verfügung zu stellen und auch im Kontext vom aktuellen User zu arbeiten.