Sie können die Suchergebnisse, die von Dialogflow CX-Datenspeichertools abgerufen werden, beeinflussen, indem Sie Boost- und Filterspezifikationen konfigurieren. So können Sie personalisiertere und kontextbezogene Interaktionen führen, wenn Ihr KI-Agent einen Datenspeicher verwendet, um Informationen zu finden.
Optional können Sie dynamische Ausdrücke einfügen, um die Ergebnisse anhand des Konversationskontexts zu optimieren. Ihr Agent hat beispielsweise Informationen erfasst, die darauf hindeuten, dass der Endnutzer ein „Mobiltelefon“ besitzt. Sie können das Datenspeichertool so konfigurieren, dass Dokumente zu Smartphones hervorgehoben werden, wenn später in der Unterhaltung eine allgemeine Anfrage wie „Wie rufe ich meine Mailbox ab?“ beantwortet wird.
Sie können Suchergebnisse für Datenspeicher über die Console, die API oder die Dialogflow CX Messenger-Integration konfigurieren.
Eingaben für Suchbedingungen
Sie konfigurieren Suchergebnisse mithilfe der Felder Boost-Spezifikation (BoostSpec) und Filterspezifikation (FilterSpec) in einem SearchConfig-Objekt. Diese Konfigurationen gelten pro Datenspeicher im Tool. So können Sie das Verhalten der einzelnen verbundenen Datenspeicher 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: Sie senden
BoostSpecundFilterSpecin einerSearchConfigmit einemDetectIntent-API-Aufruf. Sie müssen in der Anfrage ein vollständigesSearchConfig-Objekt angeben. EinSearchConfig, der per direktem API-Aufruf gesendet wird, überschreibt immer einenSearchConfig, der über die Console gesendet wird. Dynamische Ausdrücke und Parameterverweise werden nicht unterstützt.Console: Die Console verwendet Ihre
BoostSpec- undFilterSpec-Konfigurationen, 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 auf die Kontextdaten aus der Unterhaltung abzustimmen. Sie müssen nurConditionBoostSpec-Objekte und eine Liste von Filterstrings angeben, umFilterSpecszu erstellen, anstatt ein vollständigesSearchConfig-Objekt.
Endnutzerinformationen werden als JSON in detectIntentRequest bereitgestellt. Es gibt kein erwartetes Schema, sodass Sie die Objektattribute definieren können.
Spezifikationen optimieren (Boost-Spezifikationen)
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 Boosting-Spezifikationen hinzufügen.
Sie geben jede Boost-Spezifikation als JSON-String ein, der ein einzelnes ConditionBoostSpec-Objekt darstellt.
Wichtigste Felder:
condition: (String) Ein Ausdruck, der angibt, wann der Boost angewendet werden soll. Dabei wird die standardmäßige Filterausdruckssyntax verwendet. Sie können Dialogflow CX-Ausdrücke verwenden, um die Ergebnisse dynamisch zu gestalten, z. B.$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 Erhöhung bestimmt.- Ein positiver Wert fördert übereinstimmende Dokumente. Der Wert
1.0führt zu einer starken Aufwertung. - Ein negativer Wert stuft übereinstimmende Dokumente herab. Der Wert
-1.0führt zu einer starken Herabstufung. - Der Wert
0.0wendet kein Boosting an und ist nicht zulässig.
- Ein positiver Wert fördert übereinstimmende Dokumente. Der Wert
boostControlSpec: Bietet mehr Steuerungsmöglichkeiten für ein benutzerdefiniertes 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 Agenten in der Console konfigurieren, geben Sie eine Liste von ConditionBoostSpecs im folgenden Format an:
{
"condition": "uri: ANY(\"http://www.example.com/docs/$session.params.doc_id\")",
"boost": 0.5
}
Beispiel für eine 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
Durch 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 Syntax für Standardfilterausdrü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 Filterspezifikationsstring in der Console:
Wenn Sie Ihren Agenten über die Console konfigurieren, müssen Sie eine Liste von filter-Strings angeben, um ein FilterSpec-Objekt zu erstellen.
In diesem Beispiel gibt der Filter nur Dokumente zurück, bei denen numeric_field größer oder gleich dem Wert von $session.params.min_value ist und bei denen stock_availability gleich "IN_STOCK" ist:
"numeric_field >= $session.params.min_value AND stock_availability: ANY(\"IN_STOCK\")"
Beispiel für eine API-Filterkonfiguration:
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 Dialogflow CX-Ausdrücke
Sowohl BoostSpec-Bedingungen als auch FilterSpec-Strings können Dialogflow CX-Ausdrücke enthalten, um sie dynamisch zu machen. So können Sie das Suchverhalten anhand von Kontextdaten anpassen, die aus einer laufenden Unterhaltung abgerufen werden. Dynamische Ausdrücke werden in direkten API-Aufrufen nicht unterstützt und können nur verwendet werden, wenn Sie die Konfiguration über die Console vornehmen.
Sie können auf zwei Arten auf Kontextdaten von Unterhaltungen zugreifen:
- Sitzungsparameter: Die Werte, die während der Unterhaltung mit
$session.params.YOUR_PARAMETER_IDerfasst wurden. - Endnutzer-Metadaten: Die Metadaten zum Endnutzer, die mit
$request.end-user-metadata.YOUR_KEYin derDetectIntentRequestübergeben werden. Damit diese Option verfügbar ist, mussend_user_metadatain derQueryParametersIhrerDetectIntent-Aufrufe enthalten sein. Weitere Informationen finden Sie unter endUserMetadata.
Weitere Informationen zu 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:
- Werten Sie die JSON-Strings aus, die Sie für die Boost-Spezifikationen angegeben haben. 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 gesamtenSearchConfighinzugefügt wird. - Wertet die Strings, die Sie für Filterspezifikationen angegeben haben, als Dialogflow CX-Ausdrücke aus. Jeder resultierende Filterstring wird verwendet, um ein
FilterSpecs-Objekt für den Datenspeicher zu erstellen, das auch demSearchConfighinzugefügt wird. - Fügen Sie diesen dynamisch erstellten
SearchConfigin dieQueryParametersder Suchanfrage ein, die an den Datenspeicher gesendet wird.
Suchbedingungen konfigurieren
Damit Sie Suchbedingungen konfigurieren können, müssen die folgenden Voraussetzungen erfüllt sein:
- Ein vorhandener Dialogflow CX-Agent.
- Ein Datenspeichertool, das für Ihren Agenten konfiguriert ist und für das ein oder mehrere Datenspeicher aktiviert sind.
Konsolenkonfiguration
- Öffnen Sie die Conversational Agents-Konsole und wählen Sie einGoogle 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 Datenspeichertool aus, das Sie konfigurieren möchten.
- Gehen Sie auf der Seite zum Bearbeiten des Tools zum Abschnitt Datenspeicher. 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-Spezifikation ein JSON-Objekt an, das eine
ConditionBoostSpecdefiniert. Weitere Informationen finden Sie unter Boost-Spezifikationen. - Geben Sie für eine Filterspezifikation einen String an, der die Filterkriterien definiert. Weitere Informationen finden Sie unter Filterspezifikationen.
- Geben Sie für eine Boost-Spezifikation ein JSON-Objekt an, das eine
- Nachdem Sie die Spezifikationen hinzugefügt und konfiguriert haben, klicken Sie unten in der Seitenleiste auf Bestätigen.
- Klicken Sie auf der Bearbeitungsseite des Datenspeichertools auf Speichern, um die Änderungen zu speichern.
API-Konfiguration
Sie können Dialogflow CX Suchkonfigurationsdaten bereitstellen, wenn Sie Intent-Erkennungsanfragen senden. Sie müssen diese Informationen in jeder Intent-Erkennungsanfrage angeben, 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 im Artikel zur Methode setContext.
Wenn Sie eine Suchspezifikation oder Suchkonfiguration anwenden möchten, müssen Sie das folgende Snippet in den Dialogflow CX Messenger-Code einfügen, wenn Sie ihn in eine Website einbetten:
<script>
document.addEventListener('df-messenger-loaded', () => {
const dfMessenger = document.querySelector('df-messenger');
const searchConfig = { ... }
dfMessenger.setQueryParameters(searchConfig);
});
</script>
Weitere Informationen finden Sie im Artikel zur Methode setQueryParameters.
Fehlerbehebung
Die folgenden Lösungen behandeln einige häufige Probleme, die während der Konfiguration auftreten können. Testen Sie Ihre Konfigurationen gründlich, indem Sie Unterhaltungen simulieren, die verschiedene Sitzungsparameter und Metadatenwerte für Endnutzer auslösen.
Ungültige Ausdrücke
Wenn eine Boost-Spezifikationsbedingung oder ein Filter-Spezifikationsstring einen ungültigen Dialogflow CX-Ausdruck enthält (z. B. falsche Syntax oder Verweis auf einen nicht vorhandenen Parameter), schlägt die Kompilierung des Ausdrucks fehl. Fehler im Zusammenhang mit der Ausdruckskompilierung werden normalerweise im Feld diagnostic_info als SystemFunctionResults in DetectIntentResponse zurückgegeben.
Ungültiges ConditionBoostSpec-JSON
Die Conversational Agents-Konsole führt beim Speichern des JSON-Strings ConditionBoostSpec eine Validierung durch, um zu prüfen, ob es sich um gültiges JSON handelt und ob die Struktur einem ConditionBoostSpec-Objekt zugeordnet werden kann. Wenn die JSON-Datei 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.
Laufzeitsubstitutionsfehler
Wenn ein ConditionBoostSpec-JSON-String gültig und parstbar ist, aber während der Laufzeit-Ersetzung von Dialogflow CX-Ausdrücken in seinen Feldern (z. B. dem Bedingungsstring) ein Fehler auftritt, werden diese Fehler in diagnostic_info als SystemFunctionResults gemeldet.
Kompiliertes SearchConfig prüfen
Der SearchConfig, der bei der Ausführung der Abfrage angewendet wird, ist in der Antwort unter search_signals verfügbar. Die Überprüfung von SearchConfig kann Aufschluss über weitere Probleme geben, die hier nicht aufgeführt sind.
Nächste Schritte
- Weitere Informationen zur Struktur des
SearchConfigund seiner Komponenten finden Sie in der Dokumentation zusearch_config. - 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.