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.
Copilot Studio enthält integrierte Wissensquellen wie SharePoint und Dataverse. Viele Organisationen verwenden auch eigene Suchendpunkte, z. B. benutzerdefinierte APIs, vorhandene Unternehmenssuchsysteme oder Azure AI Search, während die vollständige Kontrolle über die ausgeführte Abfrage erhalten bleibt.
Copilot Studio unterstützt dieses Szenario mit dem OnKnowledgeRequested Trigger. Jedes Thema, das diesen Auslöser verwendet, dient als benutzerdefinierte Wissensquelle und trägt zu generierenden Antworten bei.
In diesem Artikel wird erläutert, wie Sie benutzerdefinierte Wissensquellen mithilfe des OnKnowledgeRequested Triggers in Copilot Studio erstellen und integrieren. Sie erfahren, wie Copilot Studio Abfragen umschreibt, wie Sie eine Verbindung mit Ihrer eigenen Such-API herstellen, wie Sie Ergebnisse für generative Antworten formatieren und bewährte Methoden beim Arbeiten mit benutzerdefiniertem Wissen verwenden.
Der OnKnowledgeRequested-Trigger
Verwenden Sie den OnKnowledgeRequested Trigger in diesen beiden Situationen:
- Wenn der Orchestrator feststellt, dass der Abruf von Wissen erforderlich ist, um eine Benutzerabfrage zu beantworten.
- Wenn ein generativer Antwortknoten in der Unterhaltung explizit aufgerufen wird.
Von Bedeutung
Sie können diesen Trigger nur in der Codeansicht mithilfe von YAML konfigurieren. Es gibt keine Unterstützung für visuelle Designer.
Themen, die OnKnowledgeRequested verwenden, haben Zugriff auf Systemvariablen, die in regulären Themen nicht verfügbar sind.
-
System.SearchQuery: Eine kontextabhängige, umgeschriebene Version der Abfrage des Benutzers, die für die semantische Suche optimiert ist. -
System.KeywordSearchQuery: Eine umgeschriebene Abfrage, die für Schlüsselwortbasierte Suchmaschinen optimiert ist. -
System.SearchResults: Wo das Thema formatierte Wissensausschnitte speichert.
Copilot Studio schreibt Abfragen mithilfe des Gesprächsverlaufs intelligent um und stellt sicher, dass der mehrstufige Kontext beibehalten wird.
Erstellen einer benutzerdefinierten Wissensquelle
Um eine benutzerdefinierte Wissensquelle zu erstellen, erstellen Sie ein Thema mit dem Trigger, der OnKnowledgeRequested Ihre Such-API aufruft, und transformiert Ergebnisse in das Format, das Copilot Studio erwartet.
Schritt 1: Erstellen des Triggers
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 teilt Copilot Studio mit, dass dieses Thema für die Erfüllung von Wissensanforderungen verantwortlich ist.
Schritt 2: Hinzufügen einer HTTP-Anforderung
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 in mehrstufigen Unterhaltungen aufrechtzuerhalten.
Tipp
Statt einer rohen HTTP-Anforderung können Sie jede Methode nutzen, die Ergebnisse von einem Suchendpunkt abruft, einschließlich benutzerdefinierter Connectoren, integrierter Connectoren wie Azure AI Search oder Agentenflüsse.
Beispiel für die Abfrageumschreibung
- Benutzerabfrage 1: "Was ist unser offizieller Datenaufbewahrungszeitraum für Kundendatensätze?"
- Nachverfolgungsabfrage: "Ändert sich dies für Finanzinformationen?"
- Nachverfolgungsabfrage: "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
- Zieht den Kontext aus beiden vorherigen Wendungen voran: Kundendaten + Finanzdaten
- Fügt Unternehmensrichtlinienformulierung hinzu: Ausnahmen, Befreiungen, regulatorisch, Richtlinien
Schritt 3: Transformieren von Ergebnissen
Eine benutzerdefinierte Wissensquelle muss Ergebnisse im Format ausgeben, das Copilot Studio erwartet. Dieses Format verwendet:
- Inhalt: Snippet oder Ausschnitt.
- 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 als Antwortdatentyp aus.
- Wählen Sie " Schema aus JSON-Beispiel abrufen" aus.
- Fügen Sie Ihre JSON-Beispielnutzlast ein, um das Schema automatisch zu generieren.
Dieser Prozess generiert das Antwortschema in Ihrer YAML-Datei.
responseSchema:
kind: Record
properties:
query: String
results:
type:
kind: Table
properties:
snippet: String
title: String
url: String
Transformieren Sie als Nächstes die Antwort Ihrer API so, dass sie diesem Format entspricht. Weisen Sie die umgewandelten 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, indem siesnippetzuContent,urlzuContentLocationundtitlezuTitlezuordnet. - Die transformierte Tabelle wird
System.SearchResultszugewiesen, was die Variable ist, die Copilot Studio zum Generieren von Antworten verwendet.
Überlegungen
Beachten Sie diese wichtigen Überlegungen beim Erstellen benutzerdefinierter Wissensquellen.
Ergebnisgrenzen
Copilot Studio verwendet bis zu 15 Codeausschnitte aus System.SearchResults , um eine Antwort zu generieren. Wenn Ihre API weitere Ergebnisse zurückgibt, sollten Sie Folgendes in Betracht ziehen:
- Implementieren der Relevanzbewertung, um zuerst die besten Ergebnisse zurückzugeben.
- Wir beschränken die API-Antwort auf 15 Ergebnisse.
- Sortieren von Ergebnissen nach Relevanz vor der Transformation.
Mehrere benutzerdefinierte Wissensthemen
Sie können mehrere Themenbereiche mit OnKnowledgeRequested erstellen, und jedes Themenbereich kann unterschiedliche Back-End-Systeme abfragen. Copilot Studio ruft alle gleichzeitig auf, wenn es Wissen benötigt. Mit diesem Ansatz können Sie verschiedene Suchendpunkte abfragen oder Fallbackstrategien implementieren.
Warnung
Das Ergebnislimit gilt für alle kombinierten Wissensthemen. Wenn Thema A 10 Ergebnisse zurückgibt und Thema B 8 zurückgibt, werden nur die 15 besten kombinierten Ergebnisse verwendet.
Empfehlungen
- Sortieren oder bewerten Sie Ergebnisse, bevor sie zurückgegeben werden.
- Halten Sie Antwortschemas konsistent.
- Verwenden Sie klare Themennamen und Beschreibungen. Diese Vorgehensweise ist nützlich, wenn große Ergebnismengen durch Relevanzfilterung verarbeitet werden müssen.