Cómo testear adecuadamente tus Agentes en Dialogflow CX
Aprende a configurar correctamente tus agentes en Dialogflow CX y comprueba lo fácil que resulta crear tests y configurar tu CI/CD.
Dialogflow CX Testing strategies
Requisitos previos
Estas son las tecnologías utilizadas en este proyecto
- Google Cloud Account - Regístrate aquí de forma gratuita
- Dialogflow API enabled - Cómo habilitarla
- Dialogflow CX CLI - Instala y configura Dialogflow CX CLI
¡Tests, Tests, y Tests!
Testear las conversaciones garantiza que los componentes de un agente funcionen correctamente a un nivel en el que se incluye la infraestructura del agente (como el NLU), el webhook y la integración con sistemas externos.
Un test puede evaluar los componentes de una aplicación a un alto nivel. Podemos utilizar tests para comprobar que dos o más componentes de un agente funcionan y generan el resultado esperado.
Estos tests pueden ejecutarse de forma manual o automatizada en un sistema de integración continua, y se ejecutan en cada nueva versión del agente.
Manual
Simulador
Dialogflow Console es una interfaz web donde puedes diseñar tus conversaciones creando agentes y, dentro de un agente, crear flows, intents, entity types, etc. En la consola de Dialogflow es posible crear tests e interactuar fácilmente con ellos. Para ello, basta con acceder a la URL: https://dialogflow.cloud.google.com/cx. Este es su aspecto:
Dialogflow CX Console
La consola incluye una herramienta realmente útil para testear tu agente de forma manual. Se trata de un simulador en el que puedes interactuar con tu agente para comprobar que la conversación fluye tal y como está previsto. Para empezar a testear tu agente, haz clic en el botón Test Agent en la esquina superior derecha del canvas. Cuando inicies el simulador, deberás elegir el environment, el flow y page que quieres testear. Para interactuar con el simulador puedes simplemente escribir texto y enviarlo al agente, pero también puedes establecer parameters, enviar eventos, etc. Puedes deshacer el último turno de la conversación siempre que quieras.
Una vez que hayas terminado con la interacción manual, puedes:
- Guardar toda la conversación como un test.
- Reproducir la conversación de forma automática.
- Resetear la conversación en caso de que quieras empezar desde el principio.
Simulador de Dialogflow CX
Automatizado
CICD
En software, tener diferentes environments en los que los desarrolladores puedan desplegar diferentes versiones de su software es un patrón común (además de una buena práctica). Cada environment cuenta con sus propias configuraciones.
En Dialogflow CX tenemos el mismo concepto. Es posible crear una versión del agente y desplegarla en un environment. Lo mismo ocurre con el webhook: puedes desplegar una versión del webhook y utilizar esa versión en un environment.
Cuando guardas una conversación que has realizado en el simulador como un caso de test, puedes añadirla a un pipeline de integración continua de un environment específico. Encontrarás tus pipelines CI/CD en la pestaña Manage al hacer clic en la sección CI/CD CI/CD:
Dialogflow CX CICD
La Dialogflow CX CLI o cxcli
ies una herramienta de línea de comandos que puedes utilizar para interactuar con tus proyectos en Dialogflow CX en un terminal. Es un proyecto de código abierto creado por Xavier Portilla Edo. Con la cxcli
y puedes interactuar fácilmente con tus pipelines en Dialogflow CX.
Con la cxcli
puedes también interactuar fácilmente con los pipelines CI/CD de los environments de tus agentes en Dialogflow CX.
Puedes encontrar el uso del comando CI/CD en el comando cxcli environment execute-cicd
. Puedes leer la documentación sobre este comando aquí.
cxcli environment execute-cicd [environment] [parameters]
Este es un ejemplo simple del comando cxcli environment execute-cicd
:
cxcli environment execute-cicd cicd-env --project-id test-cx-346408 --location-id us-central1 --agent-name test-agent
El comando anterior te proporcionará un output como este:
$ cxcli environment execute-cicd cicd-env --project-id test-cx-346408 --location-id us-central1 --agent-name test-agent
INFO Executing cicd for environment cicd-env
INFO PASSED
NLU Profiling usando la Dialogflow CX CLI
Utiliza el NLU Profiler para testear los utterances de los usuarios y mejorar el modelo de interacción de tu agente.
Con el NLU Profiler puedes comprobar cómo se resuelven los utterancces con los intents y slots de tu modelo de interacción. Si un utterance no se resuelve con el intent o slot correcto, puedes actualizar el modelo de interacción y ejecutar el profiler de nuevo. Con la cxcli
, puedes comprobar los intents que se han considerado y los que se han descartado. A continuación, puedes determinar cómo utilizar frases de entrenamiento adicionales para entrenar tu modelo para que resuelva los utterances según sus intents y slots previstos.
Cada suite se ejecuta en una sesión Dialogflow CX, por lo que puedes testear no sólo tu NLU, sino también la propia conversación.
Todos los comandos que tienes disponibles en la cxcli
ara ejecutar el NLU Profiler se encuentran bajo el comando cxcli profile-nlu
.
Este comando ejecutará una suite que incluye un conjunto de tests. Es importante saber qué suites y tests se pueden ejecutar. SLas suites y los tests se definen como ficheros yaml
. Puedes ejecutar estas suites desde tu terminal o tus pipelines de CI/CD mediante la cxcli
.
Para ejecutar una suite, debes ejecutar el comando cxcli profile-nlu execute
. Para saber cómo utilizarlo, consulta esta página.
cxcli profile-nlu execute [suite-file] [parameters]
Suites
Una suite es un fichero YAML con la siguiente estructura:
# suite.yaml
# Name of the suite.
name: Example Suite
# Brief description of the suite.
description: Suite used as an example
# Project ID on Google Cloud where is located your Dialogflow CX agent.
projectId: test-cx-346408
# Location where your Dialogflow CX agent is running.
# More info here: https://cloud.google.com/dialogflow/cx/docs/concept/region
locationId: us-central1
# Agent name of your Dialogflow CX agent.
# Notice: it is the agent name, not the agent ID.
agentName: test-agent
# You can have multiple tests defined in separated files
tests:
# ID of the test.
- id: test_id
# File where the test specification is located
file: ./test.yaml
Puedes consultar la referencia completa aquí
Tests
Un test es un fichero YAML con la siguiente estructura:
# test.yaml
# Name of the test.
name: Example test
# Brief description of the test.
description: These are some tests
# Locale of the interaction model that is gonna be tested.
# You can find the locales here: https://cloud.google.com/dialogflow/cx/docs/reference/language
localeId: en
# A check is a test itself: given an input, you will validate the intents and the parameters/entities detected by Dialogflow CX
# You can have multiple checks defined
checks:
# The ID of the check
- id: test
input:
# the input type
# it could be text or audio
type: text
# The input itself in text format. For type: audio, you have to specify the audio tag.
text: I want 3 pizzas
validate:
# Intent that is supposed to be detected
intent: order_intent
# You can have multiple parameters/intents
# Notice: this could be empty if your intent does not have any entities/parameters.
parameters:
# Entity name that is supposed to be detected
- parameter: number
# Value that is supposed to be detected
value: 3
Puedes consultar la referencia completa aquï
Ejemplos
- Un ejemplo simple que muestra el NLU Profiler en acción. Encuéntralo aquí
- Un ejemplo de validación de built-in entities en Dialogflow CX. Encuéntralo aquí
- Un ejemplo completo con múltiples entities definidas por el usuario y built-in entities en Dialogflow CX. Encuéntralo aquí
- Un ejemplo en el que se utiliza un archivo de audio como input. Find it here
Puedes encontrar más ejemplos en nuestro repositorio de GitHub así como en la página de ejemplos.
Este es un ejemplo simple del comando cxcli profile-nlu execute
:
cxcli profile-nlu execute examples/suite.yaml
El comando anterior te proporcionará un output como este:
$ cxcli profile-nlu execute suite.yaml
INFO Suite Information: test-agent
INFO Test ID: test_1
INFO Input: type: text, value: hi
INFO Intent Detected: hi_intent
INFO Input: type: text, value: hello
INFO Intent Detected: hi_intent
INFO Input: type: audio, value: ./audio/hi.mp3
INFO Intent Detected: hi_intent
INFO Test ID: test_2
INFO Input: type: text, value: I want 3 pizzas
INFO Intent Detected: order_intent
INFO Param order_type: pizza
INFO Param number: 3
INFO Input: type: text, value: I want 2 cokes
INFO Intent Detected: order_intent
INFO Param number: 2
INFO Param order_type: coke
Recursos
Comprueba el uso completo del comando cxcli profile-nlu
, visita esta página.
Si quieres comprobar el uso completo del comando cxcli environment
, visita esta página.
Para obtener más información sobre cómo testear en Dialogflow CX, consulta la documentación oficial.
Conclusión
Este es un tutorial básico para aprender cómo testear adecuadamente tus Agentes en Dialogflow CX. Como hemos visto en este ejemplo, es muy sencillo crear tests y establecer pipelines de CI/CD, ya sea mediante la consola o la cxcli
.
Espero que este tutorial te resulte útil.
¡Eso es todo, amigos!
Happy coding!