Konfiguration der Datenspeichersuche

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: BoostSpec und FilterSpec werden in einer SearchConfig mit einem DetectIntent-API-Aufruf gesendet. In der Anfrage muss ein vollständiges SearchConfig Objekt angegeben werden. Eine SearchConfig, die per direktem API-Aufruf gesendet wird, überschreibt immer eine SearchConfig, die über die Console gesendet wird. Dynamische Ausdrücke und Parameterreferenzen werden nicht unterstützt.

  • Konsole: Ihre BoostSpec und FilterSpec Konfigurationen werden verwendet, um ein SearchConfig Objekt 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 nur ConditionBoostSpec-Objekte und eine Liste von Filterstrings angeben, um FilterSpecs zu erstellen, anstatt ein vollständiges SearchConfig-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_NAME oder $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.0 führt zu einer starken Bevorzugung.
    • Ein negativer Wert benachteiligt übereinstimmende Dokumente. Ein Wert von -1.0 führt zu einer starken Benachteiligung.
    • Ein Wert von 0.0 wendet keinen Boost an und ist nicht zulässig.
  • 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"
          }
        }
      ]
    }
  ]
}

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_ID erfasst werden.
  • Metadaten zu Endnutzern:Metadaten zum Endnutzer, die in der DetectIntentRequest mit $request.end-user-metadata.YOUR_KEY übergeben werden. Damit diese Option verfügbar ist, muss end_user_metadata in den QueryParameters Ihrer DetectIntent-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:

  1. 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 einem BoostSpecs-Objekt für die spezifische Datenspeicherverbindung gruppiert, das der gesamten SearchConfig hinzugefügt wird.
  2. 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 der SearchConfig hinzugefügt wird.
  3. Diese dynamisch erstellte SearchConfig wird dann in die QueryParameters der 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

  1. Öffnen Sie die Conversational Agents-Konsole und wählen Sie ein Google Cloud Projekt aus.
  2. Wählen Sie im Drop-down-Menü einen Agenten aus.
  3. Klicken Sie im Menü auf der linken Seite auf Tools. Wählen Sie das Tool für Datenspeicher aus, das Sie konfigurieren möchten.
  4. 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 (⚙️).
  5. 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 ConditionBoostSpec definiert. 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.
  6. Nachdem Sie Ihre Spezifikationen hinzugefügt und konfiguriert haben, klicken Sie unten in der Seitenleiste auf Bestätigen.
  7. 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