Verbindungen zu benutzerdefinierten Wissensquellen herstellen

Copilot Studio enthält integrierte Wissensquellen wie SharePoint und Dataverse. Viele Organisationen nutzen auch eigene Suchendpunkte wie benutzerdefinierte APIs, bestehende Unternehmenssuchsysteme oder Azure KI-Suche und behalten die volle Kontrolle über die ausgeführte Abfrage.

Copilot Studio unterstützt dieses Szenario mit dem OnKnowledgeRequested-Trigger. Jedes Thema, das diesen Trigger verwendet, fungiert als benutzerdefinierte Wissensquelle und liefert Ergebnisse für generative Antworten.

Dieser Artikel erklärt, wie man benutzerdefinierte Wissensquellen in Copilot Studio mit dem OnKnowledgeRequested-Trigger erstellt und integriert. In diesem Artikel erfahren Sie, wie Copilot Studio Anfragen umschreibt, wie Sie Ihre eigene Such-API verbinden, Ergebnisse für generative Antworten formatieren und welche Best Practices Sie beim Umgang mit benutzerdefiniertem Wissen beachten sollten.

Der OnKnowledgeRequested-Trigger

Nutzen Sie den OnKnowledgeRequested-Trigger in diesen beiden Situationen:

  • Wenn der Orchestrator feststellt, dass Wissen abgerufen werden muss, um eine Benutzeranfrage zu beantworten.
  • Wenn ein generativer Antwortknoten explizit in der Unterhaltung aufgerufen wird.

Wichtig

Dieser Trigger kann ausschließlich in der Code-Ansicht mithilfe von YAML konfiguriert werden. Der visuelle Designer wird nicht unterstützt.

Themen, die OnKnowledgeRequested verwenden, haben Zugriff auf Systemvariablen, die in regulären Themen nicht verfügbar sind:

  • System.SearchQuery: Eine kontextbewusste, umgeschriebene Version der Benutzeranfrage, die für die semantische Suche optimiert ist.
  • System.KeywordSearchQuery: Eine neu formulierte Anfrage, die für auf Suchbegriffen basierende Suchmaschinen optimiert ist.
  • System.SearchResults: Wo das Thema formatierte Wissensschnipsel speichert.

Copilot Studio schreibt Anfragen intelligent um, indem es den Unterhaltungsverlauf nutzt und sicherstellt, dass der Kontext über mehrere Unterhaltungsrunden hinweg erhalten bleibt.

Eine benutzerdefinierte Wissensquelle erstellen

Um eine benutzerdefinierte Wissensquelle zu erstellen, erstellen Sie ein Thema mit dem OnKnowledgeRequested-Trigger, der Ihre Such-API aufruft und die Ergebnisse in das von Copilot Studio erwartete Format konvertiert.

Schritt 1: Den Trigger erstellen

Erstellen Sie ein neues Thema in Copilot Studio, wechseln Sie zur Codeansicht und definieren Sie den OnKnowledgeRequested-Trigger.

kind: AdaptiveDialog
beginDialog:
  kind: OnKnowledgeRequested
  id: main
  intent: {}
  actions:
    # Actions go here
inputType: {}
outputType: {}

Diese Struktur signalisiert Copilot Studio, dass dieses Thema für das Erfüllen von Wissensanfragen zuständig ist.

Schritt 2: Eine HTTP-Anforderung hinzufügen

Fügen Sie eine HTTP-Aktion hinzu, die Ihren Suchendpunkt aufruft.

Beispiel:

- kind: HttpRequestAction
  id: searchRequest
  url: = "https://search-api.contoso.com/search?q=" & System.KeywordSearchQuery
  response: Topic.searchResults
  responseSchema:
    kind: Record
    properties:
      query: String
      results:
        type:
          kind: Table
          properties:
            snippet: String
            title: String
            url: String

Verketten Sie System.KeywordSearchQuery auf Ihre Basis-URL, da Copilot Studio die Benutzerabfrage automatisch basierend auf dem Unterhaltungskontext umformuliert, bevor die Suchanfrage gestellt wird. Dieser Schritt ist wichtig, um den Kontext über mehrteilige Unterhaltungen hinweg zu bewahren.

Tipp

Anstelle einer rohen HTTP-Anforderung können Sie jede Methode verwenden, die Ergebnisse von einem Suchendpunkt liefert, einschließlich benutzerdefinierter Connectors, integrierter Connectors wie Azure KI-Suche oder Agent-Flows.

Beispiel für das Umschreiben von Abfragen

  • Benutzerabfrage 1: „Wie lange ist die offizielle Aufbewahrungsfrist für Kundenunterlagen?“
  • Anschlussfrage: „Ändert sich die Aufbewahrungsdauer bei Finanzinformationen?“
  • Anschlussfrage: „Und gibt es Ausnahmen?“

Die umformulierte Abfrage wird zu: „Ausnahmen von der Datenaufbewahrungsrichtlinie Ausnahmen bei der Aufbewahrung von Kunden- und Finanzdaten regulatorische Befreiungen Umgang mit Ausnahmen Compliance-Richtlinien“

Beachten Sie, dass die umgeschriebene Abfrage:

  • Löst „dort“ gemäß der Datenaufbewahrungsrichtlinie auf
  • Kontext aus beiden vorherigen Dialogabschnitten übernimmt: Kundendaten + Finanzdaten
  • Fügt Unternehmensrichtlinienformulierung hinzu: Ausnahmen, Befreiungen, regulatorisch, Richtlinien

Schritt 3: Ergebnisse transformieren

Eine benutzerdefinierte Wissensquelle muss Ergebnisse im von Copilot Studio erwarteten Format ausgeben. Dieses Format verwendet Folgendes:

  • Inhalt: Ausschnitt oder Auszug.
  • ContentLocation (optional): URL.
  • Titel (optional): Titel des Ergebnisses.

Um die Struktur der HTTP-Antwort zu definieren, konfigurieren Sie das Antwortschema in der Copilot Studio-Benutzeroberfläche.

  • Wählen Sie Aus Beispieldaten für den Antwortdatentyp aus.
  • Wählen Sie Schema aus Beispiel-JSON abrufen aus.
  • Fügen Sie Ihre Beispiel-JSON-Nutzlast ein, um das Schema automatisch zu generieren.

Dieser Prozess erzeugt das Antwortschema in der YAML-Datei.

responseSchema:
  kind: Record
  properties:
    query: String
    results:
      type:
        kind: Table
        properties:
          snippet: String
          title: String
          url: String

Als Nächstes transformieren Sie die Antwort Ihrer API so, dass sie diesem Format entspricht. Weisen Sie die transformierten Daten System.SearchResults zu.

Beispieltransformation

kind: AdaptiveDialog
beginDialog:
  kind: OnKnowledgeRequested
  id: main
  intent: {}
  actions:
    - kind: HttpRequestAction
      id: searchRequest
      url: ="https://search-api.contoso.com/search?q=" & System.KeywordSearchQuery
      response: Topic.searchResults
      responseSchema:
        kind: Record
        properties:
          query: String
          results:
            type:
              kind: Table
              properties:
                snippet: String
                title: String
                url: String
    
    - kind: SetVariable
      id: setSearchResults
      variable: System.SearchResults
      value: |-
        =ForAll(Topic.searchResults.results,
        {
          Content: snippet,
          ContentLocation: url,
          Title: title
        })

inputType: {}
outputType: {}

Die SetVariable-Aktion führt beide Vorgänge aus:

  • Die ForAll-Funktion transformiert jedes Suchergebnis, ordnet snippet zu Content, url zu ContentLocation und title zu Title zu.
  • Die transformierte Tabelle wird System.SearchResults zugewiesen, das Copilot Studio zur Generierung von Antworten verwendet.

Überlegungen

Beachten Sie diese wichtigen Überlegungen, wenn Sie benutzerdefinierte Wissensquellen erstellen.

Ergebnisgrenzwerte

Copilot Studio verwendet bis zu 15 Ausschnitte aus System.SearchResults, um eine Antwort zu generieren. Wenn Ihre API mehr Ergebnisse liefert, sollten Sie Folgendes in Betracht ziehen:

  • Eine Relevanzbewertung zu implementieren, um die besten Ergebnisse zuerst zurückzugeben.
  • Ihre API-Antwort auf 15 Ergebnisse zu begrenzen.
  • Ergebnisse vor der Transformation nach Relevanz zu sortieren.

Mehrere benutzerdefinierte Wissensthemen

Sie können mehrere Themen erstellen, indem Sie OnKnowledgeRequested verwenden. Jedes Thema kann verschiedene Back-End-Systeme abfragen. Copilot Studio ruft alle gleichzeitig auf, wenn Wissen benötigt wird. Dieser Ansatz ermöglicht es, verschiedene Suchendpunkte abzufragen oder Rückfallstrategien zu implementieren.

Warnung

Der Ereignisgrenzwert gilt für alle Wissensthemen gemeinsam. Wenn Thema A 10 Ergebnisse und Thema B 8 Ergebnisse liefert, werden nur die 15 besten kombinierten Ergebnisse verwendet.

Empfehlungen

  • Ergebnisse sollten vor der Rückgabe sortiert oder bewertet werden.
  • Halten Sie Antwortschemata konsistent.
  • Verwenden Sie klare Themennamen und Beschreibungen. Diese Praxis ist nützlich, wenn große Ergebnismengen eine Filterung nach Relevanz erfordern.