Configuración de la búsqueda del almacén de datos

Puedes influir en los resultados de la búsqueda recuperados de las herramientas de almacén de datos de Dialogflow CX configurando las especificaciones de mejora y filtro. Esto permite interacciones más personalizadas y adaptadas al contexto cuando tu agente usa un almacén de datos para encontrar información.

De manera opcional, puedes incluir expresiones dinámicas para ajustar los resultados en función del contexto de la conversación. Por ejemplo, tu agente capturó información que indica que el usuario final tiene un "teléfono celular". Puedes configurar la herramienta de almacén de datos para mejorar los documentos relacionados con los teléfonos celulares cuando respondas una consulta general más adelante en la conversación, como "¿Cómo reviso mi correo de voz?".

Puedes configurar los resultados de la búsqueda del almacén de datos con la consola, API, o la integración de Dialogflow CX Messenger.

Entradas de condición de búsqueda

Los resultados de la búsqueda se configuran con los campos especificación de mejora (BoostSpec) y especificación de filtro (FilterSpec) en un objeto SearchConfig. Estos parámetros de configuración se aplican por almacén de datos dentro de la herramienta, lo que te brinda un control detallado sobre el comportamiento de cada almacén de datos conectado.

Puedes configurar las condiciones de búsqueda de una de estas dos maneras: con la consola, o enviando una llamada a la API directa. Existen diferencias importantes entre ambas.

  • Llamada a la API: BoostSpec y FilterSpec se envían en un SearchConfig con una llamada a la API de DetectIntent. Se debe proporcionar un objeto completo SearchConfig en la solicitud. Un SearchConfig enviado por una llamada directa a la API siempre anula un SearchConfig enviado con la consola. No se admiten las expresiones dinámicas ni las referencias de parámetros.

  • Consola: Tus configuraciones de BoostSpec y FilterSpec se usan para construir un objeto SearchConfig que se envía con la solicitud de búsqueda. De manera opcional, puedes incluir referencias de parámetros y expresiones dinámicas para adaptar los resultados a los datos de contexto registrados en la conversación. Solo debes proporcionar objetos ConditionBoostSpec y una lista de cadenas de filtro para construir FilterSpecs en lugar de un objeto SearchConfig completo.

La información del usuario final se proporciona como JSON. No hay un esquema esperado, por lo que puedes definir las propiedades del objeto.

Especificaciones de mejora (especificaciones de mejora)

Las especificaciones de mejora te permiten cambiar la clasificación de los resultados de la búsqueda aplicando un valor de mejora a documentos específicos. Puedes agregar varias especificaciones de mejora a un solo almacén de datos.

Cada especificación de mejora se ingresa como una cadena JSON. Esta cadena JSON debe representar un solo objeto ConditionBoostSpec.

Campos clave:

  • condition: (String) Es una expresión que especifica cuándo se debe aplicar la mejora. Usa la sintaxis de expresión de filtro estándar. Puedes usar expresiones de Dialogflow CX para que los resultados sean dinámicos, como $session.params.YOUR_PARAM_NAME o $request.end-user-metadata.YOUR_KEY.
  • boost: (Número) Es un valor entre -1.0 y 1.0 que determina la intensidad de la mejora.
    • Un valor positivo promueve los documentos coincidentes. Un valor de 1.0 otorga una promoción sólida.
    • Un valor negativo degrada los documentos coincidentes. Un valor de -1.0 otorga una degradación sólida.
    • Un valor de 0.0 no aplica ninguna mejora y no está permitido.
  • boostControlSpec: Proporciona más controles para una clasificación personalizada que la combinación básica de condición y mejora. Para obtener más información sobre cómo configurar este campo, consulta la documentación de referencia.

Ejemplo de entrada de la consola:

Si configuras tu agente en la consola, debes proporcionar una lista de ConditionBoostSpecs en el siguiente formato.

En este ejemplo, los documentos con un URI que coincida con el valor del parámetro de sesión $session.params.doc_id se mejorarán con una intensidad de 0.5. JSON de este formato

{
  "condition": "uri: ANY(\"http://www.example.com/docs/$session.params.doc_id\")",
  "boost": 0.5
}

Ejemplo de entrada de la API:

Si llamas a la API directamente, debes proporcionar ConditionBoostSpecs en un objeto SearchConfig completo.La siguiente configuración de búsqueda describe una especificación de mejora:

"searchConfig": {
  "boostSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "spec": [
        {
          "conditionBoostSpecs": {
            "condition": "CONDITION",
            "boost": "1.0"
          }
        }
      ]
    }
  ]
}

Especificaciones de filtro (especificaciones de filtro)

Las especificaciones de filtro restringen los resultados de la búsqueda para que solo incluyan documentos que coincidan con los criterios definidos. Puedes agregar varias especificaciones de filtro a un solo almacén de datos.

Cada especificación de filtro debe ingresarse como una expresión de cadena. La cadena debe cumplir con la sintaxis de expresión de filtro estándar. Puedes usar expresiones de Dialogflow CX dentro de esta cadena para que los resultados sean dinámicos, como $session.params.YOUR_PARAM_NAME o $request.end-user-metadata.YOUR_KEY.

Ejemplo de cadena de especificación de filtro de la consola:

Si configuras tu agente con la consola, debes proporcionar una lista de filter cadenas para formar un FilterSpec objeto.

En este ejemplo, el filtro solo muestra documentos con numeric_field mayor que o igual que el valor de $session.params.min_value Y donde stock_availability es "IN_STOCK".

"numeric_field >= $session.params.min_value AND stock_availability: ANY(\"IN_STOCK\")"

Ejemplo de configuración de filtro de la API:

Si llamas a la API directamente, debes proporcionar cadenas filter en un objeto SearchConfig completo:

"searchConfig": {
  "filterSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "filter": "CONDITION"
    }
  ]
}

Expresiones dinámicas de Dialogflow CX

Las condiciones BoostSpec y las cadenas FilterSpec pueden incorporar expresiones de Dialogflow CX para que sean dinámicas. Esto te permite adaptar el comportamiento de la búsqueda en función de los datos de contexto recuperados de una conversación en curso. Las expresiones dinámicas no se admiten en las llamadas directas a la API y solo se pueden usar si realizas la configuración con la consola.

Puedes acceder a los datos de contexto de la conversación de dos maneras:

  • Parámetros de sesión: Son los valores recopilados durante la conversación con $session.params.YOUR_PARAMETER_ID.
  • Metadatos del usuario final: Son los metadatos sobre el usuario final que se pasan en DetectIntentRequest con $request.end-user-metadata.YOUR_KEY. Para que esta opción esté disponible, verifica que end_user_metadata esté incluida en QueryParameters de tus llamadas DetectIntent. Para obtener más información, consulta endUserMetadata.

Para obtener más detalles sobre las funciones del sistema disponibles y la sintaxis de las expresiones, consulta la referencia de condiciones y funciones del sistema.

Condiciones de búsqueda aplicadas en el tiempo de ejecución

Cuando la herramienta de almacén de datos ejecuta una búsqueda, sucede lo siguiente:

  1. Se evalúan las cadenas JSON que proporcionaste para las especificaciones de mejora. Cada cadena JSON válida se convierte en un objeto ConditionBoostSpec. Luego, se agrupan en un objeto BoostSpecs para la conexión específica del almacén de datos, que se agrega al SearchConfig general.
  2. Las cadenas que proporcionaste para las especificaciones de filtro se evalúan como expresiones de Dialogflow CX. Cada cadena de filtro resultante se usa para crear un objeto FilterSpecs para el almacén de datos, que también se agrega al SearchConfig.
  3. Luego, este SearchConfig construido de forma dinámica se incluye en el QueryParameters de la solicitud de búsqueda enviada al almacén de datos.

Configura las condiciones de búsqueda

Antes de configurar las condiciones de búsqueda, verifica que tengas lo siguiente:

Configuración mediante Console

  1. Abre la consola de Conversational Agents y elige un Google Cloud proyecto.
  2. Selecciona un agente en el menú desplegable.
  3. Navega al menú de la izquierda y haz clic en Herramientas. Selecciona la herramienta de almacén de datos que deseas configurar.
  4. En la página de edición de la herramienta, navega a la sección Almacenes de datos. Haz clic en el ícono de Configuración (⚙️) junto al almacén de datos que deseas modificar.
  5. Aparecerá el menú Configurar almacén de datos. Aquí puedes agregar especificaciones de mejora y especificaciones de filtro para modificar los resultados de la búsqueda.
    • Para una especificación de mejora, proporciona un objeto JSON que defina un ConditionBoostSpec. Consulta Especificaciones de mejora para obtener más detalles.
    • Para una especificación de filtro, proporciona una cadena que defina los criterios de filtro. Consulta Especificaciones de filtro para obtener más detalles.
  6. Después de agregar y configurar tus especificaciones, haz clic en Confirmar en la parte inferior del panel lateral.
  7. Haz clic en Guardar en la página de edición de la herramienta de almacén de datos para guardar los cambios.

Configuración de API

Puedes proporcionar datos de configuración de búsqueda a Dialogflow CX cuando envíes solicitudes de detección de intents. Esta información se debe proporcionar en cada solicitud de detección de intents, ya que no se conserva en la sesión.

Proporciona esta información en el campo queryParams.searchConfig del método Sessions.detectIntent.

Selecciona un protocolo y una versión para la referencia de sesión:

Protocolo V3 V3beta1
REST Recurso de sesión Recurso de sesión
RPC Interfaz de sesión Interfaz de sesión
C++ SessionsClient No disponible
C# SessionsClient No disponible
Go SessionsClient No disponible
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP No disponible No disponible
Python SessionsClient SessionsClient
Ruby No disponible No disponible

Configuración de Dialogflow CX Messenger

Puedes proporcionar datos de configuración de búsqueda a la integración de Dialogflow CX Messenger. Consulta el setContext para obtener más información.

Para aplicar una especificación de búsqueda o una configuración de búsqueda, se debe agregar el siguiente fragmento al código de Dialogflow CX Messenger cuando se incorpora a un sitio web:

<script>
  document.addEventListener('df-messenger-loaded', () => {
    const dfMessenger = document.querySelector('df-messenger');
    const searchConfig = { ... }
    dfMessenger.setQueryParameters(searchConfig);
  });
</script>

Consulta el setQueryParameters.

Soluciona problemas

En esta sección, se describen las soluciones para algunos problemas comunes que se producen durante la configuración. Siempre prueba tus configuraciones de forma exhaustiva simulando conversaciones que activen diferentes parámetros de sesión y valores de metadatos del usuario final.

Expresiones no válidas

Si una condición de especificación de mejora o una cadena de especificación de filtro contiene una expresión de Dialogflow CX no válida (por ejemplo, una sintaxis incorrecta o una referencia a un parámetro inexistente), fallará la compilación de la expresión. Por lo general, los errores relacionados con la compilación de expresiones se muestran en el DetectIntentResponse dentro del campo diagnostic_info como SystemFunctionResults.

JSON de ConditionBoostSpec no válido

La consola de Conversational Agents realiza una validación en la cadena JSON ConditionBoostSpec cuando la guarda. Esto es para verificar que sea un JSON válido y que su estructura se pueda asignar a un objeto ConditionBoostSpec. Si el JSON es válido, pero genera un SearchConfig no válido según el servicio de búsqueda subyacente (por ejemplo, una cadena de condición no válida después de la sustitución de parámetros), el servicio de búsqueda mostrará un error.

Errores de sustitución del entorno de ejecución

Si una cadena JSON ConditionBoostSpec es válida y se puede analizar, pero se produce un error durante la sustitución del entorno de ejecución de las expresiones de Dialogflow CX dentro de sus campos (como la cadena de condición), estos errores se informarán en diagnostic_info como SystemFunctionResults.

Revisa el SearchConfig compilado

El SearchConfig que se aplica cuando se ejecuta la consulta está disponible en search_signals en la respuesta. Revisar el SearchConfig puede proporcionar información sobre problemas adicionales que no se describen aquí.

¿Qué sigue?