Puedes influir en los resultados de búsqueda obtenidos de las herramientas de almacén de datos de Conversational Agents (Dialogflow CX) configurando especificaciones de refuerzo y filtro. De esta forma, las interacciones serán más personalizadas y contextuales cuando tu agente use un almacén de datos para buscar información.
También puedes incluir expresiones dinámicas para afinar los resultados en función del contexto de la conversación. Por ejemplo, tu agente ha recogido información que indica que el usuario final tiene un "teléfono móvil". Puedes configurar la herramienta de almacén de datos para que potencie los documentos relacionados con teléfonos móviles cuando responda a una consulta general más adelante en la conversación, como "¿Cómo puedo consultar mi buzón de voz?".
Puedes configurar los resultados de búsqueda del almacén de datos mediante la consola, la API o la integración de Dialogflow CX Messenger.
Entradas de condiciones de búsqueda
Los resultados de búsqueda se configuran mediante los campos especificación de impulso (BoostSpec
) y especificación de filtro (FilterSpec
) de un objeto SearchConfig
. Estas configuraciones se aplican por cada almacén de datos de la herramienta, lo que te permite controlar con precisión el comportamiento de cada almacén de datos conectado.
Puedes configurar las condiciones de búsqueda de dos formas: mediante la consola o enviando una llamada directa a la API. Hay diferencias importantes entre ambos.
Llamada a la API:
BoostSpec
yFilterSpec
se envían en unSearchConfig
mediante una llamada a la APIDetectIntent
. En la solicitud se debe proporcionar un objetoSearchConfig
completo. UnaSearchConfig
enviada mediante una llamada directa a la API siempre anula unaSearchConfig
enviada mediante la consola. No se admiten expresiones dinámicas ni referencias de parámetros.Console: las configuraciones de
BoostSpec
yFilterSpec
se usan para crear un objetoSearchConfig
que se envía con la solicitud de búsqueda. También 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 tienes que proporcionarConditionBoostSpec
objetos y una lista de cadenas de filtro para crearFilterSpecs
en lugar de un objetoSearchConfig
completo.
La información del usuario final se proporciona en formato JSON. No hay ningún esquema esperado, por lo que puedes definir las propiedades del objeto como quieras.
Especificaciones de la mejora
Especificaciones de la mejora: te permiten cambiar la clasificación de los resultados de búsqueda aplicando un valor de mejora a documentos específicos. Puedes añadir varias especificaciones de impulso a un mismo almacén de datos.
Cada Boost Spec se introduce como una cadena JSON. Esta cadena JSON debe representar un solo objeto ConditionBoostSpec
.
Campos clave:
condition
: (String) Expresión que especifica cuándo se debe aplicar el aumento. Se usa la sintaxis de expresiones de filtro estándar. Puedes usar expresiones de Dialogflow para que los resultados sean dinámicos, como$session.params.YOUR_PARAM_NAME
o$request.end-user-metadata.YOUR_KEY
.boost
: (Número) Valor entre -1,0 y 1,0 que determina la intensidad del aumento.- Un valor positivo favorece la coincidencia de documentos. El valor
1.0
indica una promoción destacada. - Un valor negativo reduce la importancia de los documentos coincidentes. El valor
-1.0
supone una degradación importante. - El valor
0.0
no aplica ningún aumento y no se permite.
- Un valor positivo favorece la coincidencia de documentos. El valor
boostControlSpec
: proporciona más controles para una clasificación personalizada que la combinación básica de condición y refuerzo. Para obtener más información sobre cómo configurar este campo, consulta la documentación de referencia.
Ejemplo de entrada de consola:
Si vas a configurar tu agente en la consola, debes proporcionar una lista de ConditionBoostSpecs
con 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 potenciarán con una intensidad de 0,5. JSON con 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 impulso:
"searchConfig": {
"boostSpecs": [
{
"dataStores": [ "DATASTORE_ID" ],
"spec": [
{
"conditionBoostSpecs": {
"condition": "CONDITION",
"boost": "1.0"
}
}
]
}
]
}
Especificaciones de los filtros
Las especificaciones de filtro restringen los resultados de búsqueda para que solo se incluyan los documentos que coincidan con los criterios definidos. Puede añadir varias especificaciones de filtro a un solo almacén de datos.
Cada especificación de filtro debe introducirse como una expresión de cadena. La cadena debe cumplir la sintaxis de expresiones de filtro estándar.
Puedes usar expresiones de Dialogflow en esta cadena para que los resultados sean dinámicos, como $session.params.YOUR_PARAM_NAME
o $request.end-user-metadata.YOUR_KEY
.
Cadena de especificación de filtro de consola de ejemplo:
Si configuras tu agente mediante la consola, debes proporcionar una lista de
filter
cadenas para formar un objeto FilterSpec
.
En este ejemplo, el filtro solo devuelve documentos con numeric_field
mayor 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 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
Tanto las condiciones BoostSpec
como las cadenas FilterSpec
pueden incorporar expresiones de Dialogflow para que sean dinámicas. De esta forma, puedes adaptar el comportamiento de búsqueda en función de los datos de contexto obtenidos 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 se configura mediante la consola.
Puedes acceder a los datos de contexto de la conversación de dos formas:
- Parámetros de sesión: valores recogidos durante la conversación mediante
$session.params.YOUR_PARAMETER_ID
. - Metadatos de usuario final: metadatos sobre el usuario final que se transfieren en el
DetectIntentRequest
mediante$request.end-user-metadata.YOUR_KEY
. Para que esta opción esté disponible, comprueba queend_user_metadata
se incluya enQueryParameters
de tus llamadas aDetectIntent
. Para obtener más información, consulta endUserMetadata.
Para obtener más información sobre las funciones del sistema y la sintaxis de las expresiones disponibles, consulta la referencia de condiciones y funciones del sistema.
Condiciones de búsqueda aplicadas en el tiempo de ejecución
Cuando tu herramienta de almacenamiento de datos ejecuta una búsqueda:
- Se evalúan las cadenas JSON que has proporcionado para las especificaciones de la mejora. Cada cadena JSON válida se convierte en un objeto
ConditionBoostSpec
. A continuación, se agrupan en un objetoBoostSpecs
para la conexión de la tienda de datos específica, que se añade alSearchConfig
general. - Las cadenas que ha proporcionado para Filter Specs se evalúan como expresiones de Dialogflow. Cada cadena de filtro resultante se usa para crear un objeto
FilterSpecs
para el almacén de datos, que también se añade alSearchConfig
. - Este
SearchConfig
creado dinámicamente se incluye en elQueryParameters
de la solicitud de búsqueda enviada al almacén de datos.
Configurar condiciones de búsqueda
Antes de configurar las condiciones de búsqueda, comprueba que tienes lo siguiente:
- Un agente de Conversational Agents (Dialogflow CX).
- Una herramienta de almacén de datos configurada para tu agente con uno o varios almacenes de datos habilitados.
Configuración desde la consola
- Abre la consola de agentes conversacionales y elige un proyecto. Google Cloud
- Selecciona un agente en el menú desplegable.
- Ve al menú de la izquierda y haz clic en Herramientas. Selecciona la herramienta de almacenamiento de datos que quieras configurar.
- En la página de edición de la herramienta, ve a la sección Almacenes de datos. Haga clic en el icono Configuración (⚙️) situado junto al almacén de datos que quiera modificar.
- Aparecerá el menú Configurar almacén de datos. Aquí puedes añadir especificaciones de aumento y de filtro para modificar los resultados de búsqueda.
- En el caso de una especificación de impulso, proporciona un objeto JSON que defina un
ConditionBoostSpec
. Consulta las especificaciones de Boost para obtener más información. - En Filter Spec, proporcione una cadena que defina los criterios del filtro. Consulta Especificaciones de los filtros para obtener más información.
- En el caso de una especificación de impulso, proporciona un objeto JSON que defina un
- Después de añadir y configurar las especificaciones, haz clic en Confirmar en la parte inferior del panel lateral.
- En la página de edición de la herramienta de almacenamiento de datos, haz clic en Guardar para guardar los cambios.
Configuración de API
Puede proporcionar datos de configuración de búsqueda a los agentes conversacionales (Dialogflow CX) al enviar solicitudes de detección de intenciones. Esta información debe proporcionarse en cada solicitud detectIntent, ya que no se conserva en la sesión.
Proporciona esta información en el campo queryParams.searchConfig
del método Sessions.detectIntent
.
Seleccione un protocolo y una versión para la referencia de la 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
Puede proporcionar datos de configuración de búsqueda a la integración de Dialogflow CX Messenger. Consulta más información sobre el método setContext.
Para aplicar una especificación de búsqueda o una configuración de búsqueda, debe añadir el siguiente fragmento al código de Dialogflow CX Messenger al insertarlo en un sitio web:
<script>
document.addEventListener('df-messenger-loaded', () => {
const dfMessenger = document.querySelector('df-messenger');
const searchConfig = { ... }
dfMessenger.setQueryParameters(searchConfig);
});
</script>
Consulta el método setQueryParameters.
Solución de problemas
En esta sección se describen las soluciones a algunos problemas habituales que se producen durante la configuración. Prueba siempre tus configuraciones a fondo simulando conversaciones que activen diferentes parámetros de sesión y valores de metadatos de usuario final.
Expresiones no válidas
Si una condición de Boost Spec o una cadena de Filter Spec contiene una expresión no válida de agentes conversacionales (Dialogflow CX), por ejemplo, una sintaxis incorrecta o una referencia a un parámetro que no existe, la compilación de la expresión fallará. Los errores relacionados con la compilación de expresiones suelen devolverse en el campo DetectIntentResponse
del campo diagnostic_info
como SystemFunctionResults
.
JSON de ConditionBoostSpec
no válido
La consola Agentes Conversacionales realiza algunas validaciones en la cadena JSON ConditionBoostSpec
al guardarla. De esta forma, se comprueba que es un archivo JSON válido y que su estructura se puede asignar a un objeto ConditionBoostSpec
. Si el formato JSON es válido, pero da como resultado 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 devolverá un error.
Errores de sustitución en tiempo de ejecución
Si una cadena JSON de ConditionBoostSpec
es válida y se puede analizar, pero se produce un error durante la sustitución en tiempo de ejecución de las expresiones de Dialogflow en sus campos (como la cadena de condición), estos errores se registrarán en diagnostic_info como SystemFunctionResults
.
Consulta el SearchConfig
compilado
El SearchConfig
que se aplica cuando se ejecuta la consulta está disponible en search_signals en la respuesta. Si revisas el SearchConfig
, puede que descubras otros problemas que no se mencionan aquí.
Siguientes pasos
- Para obtener más información sobre la estructura de
SearchConfig
y sus componentes, consulta la documentación desearch_config
. - Para obtener más información sobre la sintaxis de las expresiones, consulta la referencia de condiciones y funciones del sistema de Dialogflow.
- Para obtener más información sobre la sintaxis de las expresiones de filtro para la búsqueda, consulta Filtrar y ordenar resultados.