Sie können die Suchergebnisse, die von den Tools für Datenspeicher in Dialogflow CX abgerufen werden, beeinflussen, indem Sie Boost- und Filterspezifikationen konfigurieren. So lassen sich personalisiertere und kontextbezogenere Interaktionen ermöglichen, wenn Ihr Agent einen Datenspeicher verwendet, um Informationen zu finden.
Optional können Sie dynamische Ausdrücke einbeziehen, um die Ergebnisse basierend auf dem Unterhaltungskontext zu optimieren. Ihr Agent hat beispielsweise Informationen erfasst, die darauf hindeuten, dass der Endnutzer ein Mobiltelefon besitzt. Sie können das Tool für Datenspeicher so konfigurieren, dass Dokumente zu Mobiltelefonen bei der Beantwortung einer allgemeinen Anfrage später in der Unterhaltung, z. B. „Wie rufe ich meine Mailbox ab?“, bevorzugt werden.
Sie können die Suchergebnisse für Datenspeicher über die Konsole, API, oder die Dialogflow CX Messenger-Integration konfigurieren.
Eingaben für Suchbedingungen
Suchergebnisse werden mit den
Boost-Spezifikation (BoostSpec)
und Filterspezifikation (FilterSpec)
Feldern in einem SearchConfig
Objekt konfiguriert. Diese Konfigurationen werden pro Datenspeicher im Tool angewendet. So können Sie genau steuern, wie sich jeder verbundene Datenspeicher verhält.
Sie können Suchbedingungen auf zwei Arten konfigurieren: über die Konsole, oder durch Senden eines direkten API-Aufrufs. Es gibt wichtige Unterschiede zwischen den beiden Methoden.
API-Aufruf:
BoostSpecundFilterSpecwerden in einerSearchConfigmit einemDetectIntent-API-Aufruf gesendet. In der Anfrage muss ein vollständigesSearchConfigObjekt angegeben werden. EineSearchConfig, die per direktem API-Aufruf gesendet wird, überschreibt immer eineSearchConfig, die über die Console gesendet wird. Dynamische Ausdrücke und Parameterreferenzen werden nicht unterstützt.Konsole: Ihre
BoostSpecundFilterSpecKonfigurationen werden verwendet, um einSearchConfigObjekt zu erstellen, das mit der Suchanfrage gesendet wird. Optional können Sie Parameterreferenzen und dynamische Ausdrücke einbeziehen, um die Ergebnisse an die aus der Unterhaltung erfassten Kontextdaten anzupassen. Sie müssen nurConditionBoostSpec-Objekte und eine Liste von Filterstrings angeben, umFilterSpecszu erstellen, anstatt ein vollständigesSearchConfig-Objekt.
Endnutzerinformationen werden als JSON bereitgestellt. Es gibt kein erwartetes Schema. Sie können die Objekteigenschaften also kostenlos definieren.
Boost-Spezifikationen
Mit Boost-Spezifikationen können Sie das Ranking der Suchergebnisse ä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 Standardsyntax für Filterausdrücke 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 des Boosts bestimmt.- Ein positiver Wert bevorzugt übereinstimmende Dokumente. Ein Wert von
1.0führt zu einer starken Bevorzugung. - Ein negativer Wert benachteiligt übereinstimmende Dokumente. Ein Wert von
-1.0führt zu einer starken Benachteiligung. - Ein Wert von
0.0wendet keinen Boost an und ist nicht zulässig.
- Ein positiver Wert bevorzugt übereinstimmende Dokumente. Ein Wert von
boostControlSpec: Bietet mehr Steuerungsmöglichkeiten für ein benutzerdefiniertes Ranking als die grundlegende Kombination aus Bedingung und Boost. Weitere Informationen zum Konfigurieren dieses Felds finden Sie in der Referenzdokumentation.
Beispiel für eine Konsoleneingabe :
Wenn Sie Ihren Agenten in der Konsole konfigurieren, müssen Sie eine Liste
von ConditionBoostSpecs
im folgenden Format angeben.
In diesem Beispiel werden Dokumente mit einer URI, die mit dem Wert des Sitzungsparameters $session.params.doc_id übereinstimmt, mit einer Stärke von 0,5 bevorzugt. JSON in diesem Format
{
"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"
}
}
]
}
]
}
und der Boost-Wert muss zwischen -1,0 und 1,0 liegen.
Filterspezifikationen
Mit Filterspezifikationen können Sie die Suchergebnisse so einschränken, dass nur Dokumente berücksichtigt werden, 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 Standardsyntax für Filterausdrücke entsprechen.
Sie können in diesem String Dialogflow CX-Ausdrücke 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 Konsole :
Wenn Sie Ihren Agenten über die Konsole konfigurieren, müssen Sie eine Liste von
filter Strings angeben, um ein FilterSpec
Objekt zu erstellen.
In diesem Beispiel werden nur Dokumente zurückgegeben, bei denen numeric_field größer
oder gleich dem Wert von $session.params.min_value ist UND bei denen
stock_availability den Wert "IN_STOCK" hat.
"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 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 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 Unterhaltungskontextdaten zugreifen:
- Sitzungsparameter:Werte, die während der Unterhaltung mit
$session.params.YOUR_PARAMETER_IDerfasst werden. - Metadaten zu Endnutzern:Metadaten zum Endnutzer, die in der
DetectIntentRequestmit$request.end-user-metadata.YOUR_KEYübergeben werden. Damit diese Option verfügbar ist, mussend_user_metadatain denQueryParametersIhrerDetectIntent-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.
Suchbedingungen, die zur Laufzeit angewendet werden
Wenn Ihr Tool für Datenspeicher eine Suche ausführt:
- 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 spezifische Datenspeicherverbindung gruppiert, das der gesamtenSearchConfighinzugefügt wird. - Die Strings, die Sie für Filterspezifikationen angegeben haben, werden als Dialogflow CX-Ausdrücke ausgewertet. Jeder resultierende Filterstring wird verwendet, um ein
FilterSpecs-Objekt für den Datenspeicher zu erstellen, das ebenfalls derSearchConfighinzugefügt wird. - Diese dynamisch erstellte
SearchConfigwird dann in dieQueryParametersder Suchanfrage aufgenommen, die an den Datenspeicher gesendet wird.
Suchbedingungen konfigurieren
Bevor Sie Suchbedingungen konfigurieren, prüfen Sie, ob Folgendes vorhanden ist:
- Ein vorhandener Dialogflow CX-Agent.
- Ein Tool für Datenspeicher , das für Ihren Agenten konfiguriert ist und für das mindestens ein Datenspeicher aktiviert ist.
Konsolenkonfiguration
- Öffnen Sie die Conversational Agents-Konsole und wählen Sie ein Google Cloud Projekt aus.
- Wählen Sie im Drop-down-Menü einen Agenten aus.
- Klicken Sie im Menü auf der linken Seite auf Tools. Wählen Sie das Tool für Datenspeicher aus, das Sie konfigurieren möchten.
- Gehen Sie auf der Seite zum Bearbeiten des Tools zum Bereich 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-Spezifikationen und Filterspezifikationen hinzufügen, um die 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 Filter kriterien definiert. Weitere Informationen finden Sie unter Filter Spezifikationen.
- Geben Sie für eine Boost-Spezifikation ein JSON-Objekt an, das eine
- Nachdem Sie Ihre Spezifikationen hinzugefügt und konfiguriert haben, klicken Sie unten in der Seitenleiste auf Bestätigen.
- Klicken Sie auf der Seite zum Bearbeiten des Tools für Datenspeicher auf Speichern , um die Änderungen zu speichern.
API-Konfiguration
Sie können Dialogflow CX bei Anfragen zur Intent-Erkennung Suchkonfigurationsdaten bereitstellen. Diese Informationen müssen in jeder Anfrage zur Intent-Erkennung 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 bereitstellen. Weitere Informationen finden Sie unter setContext.
Wenn Sie eine Suchspezifikation oder eine Suchkonfiguration anwenden möchten, muss das folgende Snippet dem Dialogflow CX Messenger-Code hinzugefügt werden, 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 unter setQueryParameters.
Fehlerbehebung
In diesem Abschnitt werden Lösungen für einige häufig auftretende Probleme beschrieben, die bei der Konfiguration auftreten können. Testen Sie Ihre Konfigurationen immer 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 Filterspezifikationsstring einen ungültigen Dialogflow CX-Ausdruck enthält (z. B. eine falsche Syntax oder eine Referenz auf einen nicht vorhandenen Parameter), schlägt die Ausdruckskompilierung fehl. Fehler im Zusammenhang mit
der Ausdruckskompilierung werden in der Regel in der DetectIntentResponse
innerhalb des Feldes diagnostic_info
als SystemFunctionResults zurückgegeben.
Ungültiges ConditionBoostSpec-JSON
Die Conversational Agents-Konsole führt beim Speichern eine Validierung des ConditionBoostSpec-JSON-Strings durch. So wird geprüft, ob es sich um gültiges JSON handelt und ob seine Struktur einem ConditionBoostSpec-Objekt zugeordnet werden kann. Wenn das JSON gültig ist, aber gemäß dem zugrunde liegenden Suchdienst zu einer ungültigen SearchConfig führt (z. B. ein ungültiger Bedingungsstring nach der Parameterersetzung), gibt der Suchdienst einen Fehler zurück.
Fehler bei der Laufzeitersetzung
Wenn ein ConditionBoostSpec-JSON-String gültig und parsbar ist, aber ein Fehler bei der Laufzeitersetzung von Dialogflow CX-Ausdrücken in den Feldern (z. B. dem Bedingungsstring) auftritt, werden diese Fehler in diagnostic_info als SystemFunctionResults gemeldet.
Kompilierte SearchConfig überprüfen
Die SearchConfig die beim Ausführen der Abfrage angewendet wird, ist in
search_signals
in der Antwort verfügbar. Wenn Sie die SearchConfig überprüfen, erhalten Sie möglicherweise Einblicke in zusätzliche Probleme, die hier nicht aufgeführt sind.
Nächste Schritte
- Weitere Informationen zur Struktur von
SearchConfigund ihren Komponenten finden Sie in dersearch_configDokumentation. - Weitere Informationen zur Ausdruckssyntax finden Sie in der Referenz zu Bedingungen und Systemfunktionen in Dialogflow CX.
- Weitere Informationen zur Syntax von Filterausdrücken für die Suche finden Sie unter Ergebnisse filtern und sortieren.