Sie können die Suchergebnisse, die mit Dialogflow CX-Datenspeichertools abgerufen werden, beeinflussen, indem Sie Boost- und Filterspezifikationen konfigurieren. So können personalisierte und kontextbezogene Interaktionen ermöglicht werden, wenn Ihr KI-Agent einen Datenspeicher verwendet, um Informationen zu finden.
Optional können Sie dynamische Ausdrücke einfügen, um die Ergebnisse basierend auf dem Kontext der Unterhaltung zu optimieren. Ihr Agent hat beispielsweise Informationen erfasst, die darauf hindeuten, dass der Endnutzer ein „Mobiltelefon“ besitzt. Sie können das Tool für den Datenspeicher so konfigurieren, dass Dokumente zu Mobiltelefonen bei der Beantwortung einer allgemeinen Anfrage wie „Wie rufe ich meine Voicemail ab?“ später im Gespräch priorisiert werden.
Sie können die Suchergebnisse des Datenspeichers über die Konsole, die API oder die Dialogflow CX Messenger-Integration konfigurieren.
Eingaben für Suchbedingungen
Suchergebnisse werden mit den Feldern Boost-Spezifikation (BoostSpec) und Filterspezifikation (FilterSpec) in einem SearchConfig-Objekt konfiguriert. Diese Konfigurationen werden pro Datenspeicher im Tool angewendet. So haben Sie die Möglichkeit, das Verhalten der einzelnen verbundenen Datenspeicher genau zu steuern.
Sie können Suchbedingungen auf zwei Arten konfigurieren: über die Console oder durch Senden eines direkten API-Aufrufs. Es gibt wichtige Unterschiede zwischen den beiden.
API-Aufruf:
BoostSpecundFilterSpecwerden in einemSearchConfigmit einemDetectIntent-API-Aufruf gesendet. In der Anfrage muss ein vollständigesSearchConfig-Objekt angegeben werden. EineSearchConfig, die über einen direkten API-Aufruf gesendet wird, überschreibt immer eineSearchConfig, die über die Console gesendet wird. Dynamische Ausdrücke und Parameterreferenzen werden nicht unterstützt.Console: Ihre
BoostSpec- undFilterSpec-Konfigurationen werden verwendet, um einSearchConfig-Objekt zu erstellen, das mit der Suchanfrage gesendet wird. Optional können Sie Parameterreferenzen und dynamische Ausdrücke einfügen, um die Ergebnisse an Kontextdaten anzupassen, die aus dem Gespräch aufgezeichnet wurden. Sie müssen nurConditionBoostSpec-Objekte und eine Liste von Filterstrings angeben, umFilterSpecszu erstellen, anstatt eines vollständigenSearchConfig-Objekts.
Endnutzerinformationen werden als JSON bereitgestellt. Es gibt kein erwartetes Schema. Sie können die Objekteigenschaften also kostenlos definieren.
Spezifikationen für das Boosting
Mit Boost-Spezifikationen können Sie das Ranking von Suchergebnissen ändern, indem Sie bestimmten Dokumenten einen Boost-Wert zuweisen. Sie können einem einzelnen Datenspeicher mehrere Boost-Spezifikationen hinzufügen.
Jede Boost-Spezifikation wird als JSON-String eingegeben. Dieser JSON-String muss ein einzelnes ConditionBoostSpec-Objekt darstellen.
Wichtigste Felder:
condition: (String) Ein Ausdruck, der angibt, wann der Boost angewendet werden soll. Dabei wird die Standard-Syntax für Filterausdrücke verwendet. Mit Dialogflow CX-Ausdrücken können Sie die Ergebnisse dynamisch gestalten, z. B. mit$session.params.YOUR_PARAM_NAMEoder$request.end-user-metadata.YOUR_KEY.boost: (Zahl) Ein Wert zwischen -1,0 und 1,0, der die Stärke der Optimierung bestimmt.- Ein positiver Wert fördert übereinstimmende Dokumente. Ein Wert von
1.0führt zu einer starken Aufwertung. - Ein negativer Wert stuft übereinstimmende Dokumente herab. Der Wert
-1.0führt zu einer starken Herabstufung. - Ein Wert von
0.0wendet keinen Boost an und ist nicht zulässig.
- Ein positiver Wert fördert übereinstimmende Dokumente. Ein Wert von
boostControlSpec: Bietet mehr Steuerungsmöglichkeiten für das benutzerdefinierte Ranking als die einfache Kombination aus „Bedingung“ und „Boost“. Weitere Informationen zum Konfigurieren dieses Felds finden Sie in der Referenzdokumentation.
Beispiel für Konsoleneingabe:
Wenn Sie Ihren Agent in der Console konfigurieren, müssen Sie eine Liste mit ConditionBoostSpecs im folgenden Format angeben.
In diesem Beispiel werden Dokumente mit einem URI, der dem Wert des Sitzungsparameters $session.params.doc_id entspricht, mit einer Stärke von 0,5 bewertet. JSON in diesem Format
{
"condition": "uri: ANY(\"http://www.example.com/docs/$session.params.doc_id\")",
"boost": 0.5
}
Beispiel für API-Eingabe:
Wenn Sie die API direkt aufrufen, müssen Sie ConditionBoostSpecs in einem vollständigen SearchConfig-Objekt angeben.Die folgende Suchkonfiguration beschreibt eine Boost-Spezifikation:
"searchConfig": {
"boostSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"spec": [
{
"conditionBoostSpecs": {
"condition": "CONDITION",
"boost": "1.0"
}
}
]
}
]
}
Filterspezifikationen
Mit Filterspezifikationen werden die Suchergebnisse auf Dokumente beschränkt, die den definierten Kriterien entsprechen. Sie können einem einzelnen Datenspeicher mehrere Filterspezifikationen hinzufügen.
Jede Filterspezifikation muss als Stringausdruck eingegeben werden. Der String muss der Standard-Syntax für Filterausdrücke entsprechen.
Sie können Dialogflow CX-Ausdrücke in diesem String verwenden, um die Ergebnisse dynamisch zu gestalten, z. B. $session.params.YOUR_PARAM_NAME oder $request.end-user-metadata.YOUR_KEY.
Beispiel für einen Konsolenfilterspezifikationsstring:
Wenn Sie Ihren Agenten über die Console konfigurieren, müssen Sie eine Liste mit filter-Strings angeben, um ein FilterSpec-Objekt zu erstellen.
In diesem Beispiel werden mit dem Filter nur Dokumente zurückgegeben, bei denen numeric_field größer oder gleich dem Wert von $session.params.min_value ist UND stock_availability gleich "IN_STOCK" ist.
"numeric_field >= $session.params.min_value AND stock_availability: ANY(\"IN_STOCK\")"
Beispiel für die Konfiguration eines API-Filters:
Wenn Sie die API direkt aufrufen, müssen Sie filter-Strings in einem vollständigen SearchConfig-Objekt angeben:
"searchConfig": {
"filterSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"filter": "CONDITION"
}
]
}
Dynamische Ausdrücke in Dialogflow CX
Sowohl BoostSpec-Bedingungen als auch FilterSpec-Strings können Dialogflow CX-Ausdrücke enthalten, um sie dynamisch zu gestalten. So können Sie das Suchverhalten an Kontextdaten anpassen, die aus einer laufenden Unterhaltung abgerufen werden.
Dynamische Ausdrücke werden bei direkten API-Aufrufen nicht unterstützt und können nur verwendet werden, wenn Sie die Konfiguration über die Console vornehmen.
Sie haben zwei Möglichkeiten, auf Daten zum Unterhaltungskontext zuzugreifen:
- Sitzungsparameter:Werte, die während der Unterhaltung mit
$session.params.YOUR_PARAMETER_IDerfasst werden. - Metadaten zu Endnutzern:Metadaten zum Endnutzer, die im
DetectIntentRequestüber$request.end-user-metadata.YOUR_KEYübergeben werden. Damit diese Option verfügbar ist, mussend_user_metadatain denQueryParametersIhrerDetectIntent-Anrufe enthalten sein. Weitere Informationen finden Sie unter endUserMetadata.
Weitere Informationen zu den verfügbaren Systemfunktionen und zur Ausdruckssyntax finden Sie in der Referenz zu Bedingungen und Systemfunktionen.
Zur Laufzeit angewendete Suchbedingungen
Wenn Ihr Datenspeichertool eine Suche ausführt, gilt Folgendes:
- Die JSON-Strings, die Sie für Boost-Spezifikationen angegeben haben, werden ausgewertet. Jeder gültige JSON-String wird in ein
ConditionBoostSpec-Objekt konvertiert. Diese werden dann in einemBoostSpecs-Objekt für die jeweilige Datenspeicherverbindung gruppiert, das dem allgemeinenSearchConfighinzugefügt wird. - Die von Ihnen angegebenen Strings für Filterspezifikationen werden als Dialogflow CX-Ausdrücke ausgewertet. Jeder resultierende Filterstring wird verwendet, um ein
FilterSpecs-Objekt für den Datenspeicher zu erstellen, das auch demSearchConfighinzugefügt wird. - Dieser dynamisch erstellte
SearchConfigwird dann in dieQueryParametersder Suchanfrage eingefügt, die an den Datenspeicher gesendet wird.
Suchbedingungen konfigurieren
Bevor Sie Suchbedingungen konfigurieren, müssen folgende Voraussetzungen erfüllt sein:
- Ein vorhandener Dialogflow CX-Agent.
- Ein Datenspeichertool, das für Ihren Agenten konfiguriert ist und für das mindestens ein Datenspeicher aktiviert ist.
Konsolenkonfiguration
- Öffnen Sie die Conversational Agents Console und wählen Sie ein Google Cloud-Projekt aus.
- Wählen Sie im Drop-down-Menü einen Agent aus.
- Klicken Sie im Menü auf der linken Seite auf Tools. Wählen Sie das Tool für den Datenspeicher aus, das Sie konfigurieren möchten.
- Rufen Sie auf der Seite zum Bearbeiten des Tools den Bereich Datenspeicher auf. Klicken Sie neben dem Datenspeicher, den Sie ändern möchten, auf das Symbol Einstellungen (⚙️).
- Das Menü Datenspeicher konfigurieren wird angezeigt. Hier können Sie Boost- und Filterspezifikationen hinzufügen, um Ihre Suchergebnisse zu ändern.
- Geben Sie für eine Boost Spec ein JSON-Objekt an, das eine
ConditionBoostSpecdefiniert. Weitere Informationen finden Sie unter Boost-Spezifikationen. - Geben Sie für eine Filter Spec einen String an, der die Filterkriterien definiert. Weitere Informationen finden Sie unter Filterspezifikationen.
- Geben Sie für eine Boost Spec ein JSON-Objekt an, das eine
- Klicken Sie nach dem Hinzufügen und Konfigurieren der Spezifikationen unten in der Seitenleiste auf Bestätigen.
- Klicken Sie auf der Seite zum Bearbeiten des Datenspeichertools auf Speichern, um die Änderungen zu speichern.
API-Konfiguration
Sie können Dialogflow CX Daten zur Suchkonfiguration bereitstellen, wenn Sie Anfragen zur Intent-Erkennung senden. Diese Informationen müssen in jeder „detect intent“-Anfrage angegeben werden, da sie nicht in der Sitzung gespeichert werden.
Geben Sie diese Informationen im Feld queryParams.searchConfig in der Methode Sessions.detectIntent an.
Wählen Sie ein Protokoll und eine Version für die Sitzungsreferenz aus:
| Protokoll | V3 | V3beta1 |
|---|---|---|
| REST | Sitzungsressource | Sitzungsressource |
| RPC | Sitzungsoberfläche | Sitzungsoberfläche |
| C++ | SessionsClient | Nicht verfügbar |
| C# | SessionsClient | Nicht verfügbar |
| Go | SessionsClient | Nicht verfügbar |
| Java | SessionsClient | SessionsClient |
| Node.js | SessionsClient | SessionsClient |
| PHP | Nicht verfügbar | Nicht verfügbar |
| Python | SessionsClient | SessionsClient |
| Ruby | Nicht verfügbar | Nicht verfügbar |
Dialogflow CX Messenger-Konfiguration
Sie können der Dialogflow CX Messenger-Integration Suchkonfigurationsdaten zur Verfügung stellen. Weitere Informationen finden Sie in der setContext-Methode.
Damit eine Suchspezifikation oder Suchkonfiguration angewendet werden kann, muss das folgende Snippet dem Dialogflow CX Messenger-Code hinzugefügt werden, wenn er in eine Website eingebettet wird:
<script>
document.addEventListener('df-messenger-loaded', () => {
const dfMessenger = document.querySelector('df-messenger');
const searchConfig = { ... }
dfMessenger.setQueryParameters(searchConfig);
});
</script>
Weitere Informationen finden Sie in der Methode setQueryParameters.
Fehlerbehebung
In diesem Abschnitt werden Lösungen für einige häufige Probleme beschrieben, die bei der Konfiguration auftreten können. Testen Sie Ihre Konfigurationen immer gründlich, indem Sie Konversationen simulieren, die verschiedene Sitzungsparameter und Metadatenwerte für Endnutzer auslösen.
Ungültige Ausdrücke
Wenn eine Bedingung für die Steigerungsspezifikation oder ein String für die Filterspezifikation einen ungültigen Dialogflow CX-Ausdruck enthält (z. B. eine falsche Syntax oder einen Verweis auf einen nicht vorhandenen Parameter), schlägt die Kompilierung des Ausdrucks fehl. Fehler im Zusammenhang mit der Kompilierung von Ausdrücken werden in der Regel im DetectIntentResponse im Feld diagnostic_info als SystemFunctionResults zurückgegeben.
Ungültiges ConditionBoostSpec-JSON
Die Conversational Agents Console führt beim Speichern eine Validierung des ConditionBoostSpec-JSON-Strings durch. So wird geprüft, ob es sich um gültiges JSON handelt und seine Struktur einem ConditionBoostSpec-Objekt zugeordnet werden kann. Wenn das JSON-Dokument gültig ist, aber gemäß dem zugrunde liegenden Suchdienst zu einem ungültigen SearchConfig führt (z. B. ein ungültiger Bedingungsstring nach der Parameterersetzung), gibt der Suchdienst einen Fehler zurück.
Laufzeitfehler bei der Ersetzung
Wenn ein ConditionBoostSpec-JSON-String gültig und parsbar ist, aber während der Laufzeitsubstitution von Dialogflow CX-Ausdrücken in seinen Feldern (z. B. dem Bedingungsstring) ein Fehler auftritt, werden diese Fehler in diagnostic_info als SystemFunctionResults gemeldet.
Kompilierte SearchConfig prüfen
Der SearchConfig, der bei der Ausführung der Anfrage angewendet wird, ist in der Antwort unter search_signals verfügbar. Wenn Sie sich die SearchConfig ansehen, erhalten Sie möglicherweise Informationen zu weiteren Problemen, die hier nicht aufgeführt sind.
Nächste Schritte
- Weitere Informationen zur Struktur von
SearchConfigund seinen Komponenten finden Sie in dersearch_config-Dokumentation. - Weitere Informationen zur Ausdruckssyntax finden Sie in der Referenz zu Dialogflow CX-Bedingungen und ‑Systemfunktionen.
- Weitere Informationen zur Syntax von Filterausdrücken für die Suche finden Sie unter Ergebnisse filtern und sortieren.