Hinzufügen mehrerer Kategorien zu Ihrem FAQ-Bot
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines Projekts und Markieren von Frage-Antwort-Paaren in unterschiedlichen Kategorien mit Metadaten
- Erstellen eines separaten Projekts für jede Domäne
- Erstellen einer separaten Sprachressource für jede Domäne
Wenn Sie einen FAQ-Bot erstellen, werden Sie möglicherweise auf Anwendungsfälle stoßen, bei denen Sie Abfragen aus verschiedenen Domänen beantworten müssen. Angenommen, das Marketingteam von Microsoft möchte einen Bot für den Kundensupport erstellen, der häufige Abfragen von Benutzern zu verschiedenen Surface-Produkten beantwortet. Der Einfachheit halber verwenden wir hier zwei FAQ-URLs für Surface Pen und Surface Earbuds, um das Projekt zu erstellen.
Erstellen eines Projekts mit domänenspezifischen Metadaten
Die Inhaltsautoren können Dokumente verwenden, um Frage/Antwort-Paare zu extrahieren oder dem Projekt benutzerdefinierte Frage/Antwort-Paare hinzuzufügen. Um diese Fragen und Antworten in bestimmte Domänen oder Kategorien zu gruppieren, können Sie Metadaten hinzufügen.
Für den Bot für Surface-Produkte können Sie die folgenden Schritte ausführen, um einen Bot zu erstellen, der Abfragen für beide Produkttypen beantwortet:
Fügen Sie die folgenden FAQ-URLs als Quellen hinzu. Wählen Sie dazu Quelle hinzufügen>URLs> und dann Alle hinzufügen aus, wenn Sie die folgenden URLs hinzugefügt haben:
In diesem Projekt gibt es Frage/Antwort-Paare für zwei Produkte, und wir möchten zwischen ihnen unterscheiden, damit wir in Fragen und Antworten für ein bestimmtes Produkt nach Antworten suchen können. Hierzu könnten wir das Metadatenfeld für die Frage-Antwort-Paare aktualisieren.
Wie Sie im Beispiel unten sehen können, haben wir ein Metadatenelement mit Produkt als Schlüssel und surface_pen oder surface_earbuds an den entsprechenden Stellen als Werte hinzugefügt. Sie können dieses Beispiel so erweitern, dass Daten für mehrere Produkte extrahiert werden und für jedes Produkt ein anderer Wert hinzugefügt wird.
Um nun das System auf die Suche nach der Antwort für ein bestimmtes Produkt einzuschränken, müssen Sie dieses Produkt als Filter in der REST-API für benutzerdefinierte Fragen und Antworten übergeben.
Die REST-API-Vorhersage-URL kann aus dem Bereich „Projekt bereitstellen“ abgerufen werden:
Im JSON-Rumpf des API-Aufrufs haben wir surface_pen als Wert für die Metadaten zu product übergeben. Daher sucht das System nur nach der Antwort unter den QnA-Paaren mit den gleichen Metadaten.
{ "question": "What is the price?", "top": 3 }, "answerSpanRequest": { "enable": true, "confidenceScoreThreshold": 0.3, "topAnswersWithSpan": 1 }, "filters": { "metadataFilter": { "metadata": [ { "key": "product", "value": "surface_pen" } ] } }
Sie können Metadatenwerte auf Grundlage von Benutzereingaben auf folgende Weisen abrufen:
Verwenden Sie die Domäne explizit als Eingabe des Benutzers über den Botclient. Zum Beispiel können Sie, wie unten gezeigt, die Produktkategorie als Eingabe vom Benutzer übernehmen, wenn die Unterhaltung eingeleitet wird.
Identifizieren Sie die Domäne implizit anhand des Kontexts des Bots. Wenn sich die vorherige Frage z. B. auf ein bestimmtes Surface-Produkt bezog, kann sie vom Client als Kontext gespeichert werden. Wenn der Benutzer das Produkt bei der nächsten Abfrage nicht angibt, könnten Sie den Kontext des Bots als Metadaten an die GenerateAnswer-API weitergeben.
Extrahieren Sie die Entität aus der Abfrage des Benutzers, um die Domäne zu bestimmen, die als Metadatenfilter verwendet werden soll. Sie können andere Azure KI Services verwenden, z. B. Erkennung benannter Entitäten (Named Entity Recognition, NER) und Conversational Language Understanding für die Entitätsextraktion.
Wie groß können unsere Projekte sein?
Sie können einem einzelnen Projekt bis zu 50 000 Frage/Antwort-Paare hinzufügen. Wenn Ihre Daten 50 000 Frage/Antwort-Paare überschreiten, sollten Sie erwägen, das Projekt aufzuteilen.
Erstellen eines separaten Projekts für jede Domäne
Sie können auch ein separates Projekt für jede Domäne erstellen und die Projekte separat unterhalten. Alle APIs erfordern, dass der Benutzer den Projektnamen übergibt, um eine Aktualisierung des Projekts vorzunehmen oder eine Antwort auf die Frage des Benutzers abzurufen.
Wenn die Frage des Benutzers vom Dienst empfangen wird, müssen Sie den projectName
im gezeigten REST-API-Endpunkt übergeben, um eine Antwort aus dem relevanten Projekt abzurufen. Sie finden die URL auf der Seite Projekt bereitstellen unter Vorhersage-URL abrufen:
https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production
Erstellen einer separaten Sprachressource für jede Domäne
Angenommen, das Marketingteam von Microsoft möchte einen Bot für den Kundensupport erstellen, der häufige Abfragen von Benutzern zu Surface- und Xbox-Produkten beantwortet. Es ist geplant, verschiedenen Teams den Zugriff auf Projekte für Surface und Xbox zuzuweisen. In diesem Fall ist es ratsam, zwei Ressourcen für benutzerdefinierte Fragen und Antworten zu erstellen: eine für Surface und eine für Xbox. Sie können jedoch unterschiedliche Rollen für Benutzer definieren, die auf dieselbe Ressource zugreifen.