Aumenta la cobertura de intents y maneja errores de forma elegante con el resguardo generativo

1. Descripción general

Última actualización: 7/8/2023

Qué compilarás

En este codelab, crearás, implementarás y configurarás un agente virtual simple en Dialogflow CX para ayudar a los buceadores que viajan con reservas grupales y chárteres privados. El agente virtual usará IA generativa y los modelos generativos de lenguaje grande (LLM) generativos más recientes de Google para generar respuestas del agente virtual.

Qué aprenderás

  • Cómo habilitar las APIs relevantes
  • Cómo Dialogflow precompleta automáticamente los valores de los parámetros del formulario de la página a partir de los parámetros del intent
  • Cómo configurar controladores de eventos en Dialogflow
  • Cómo habilitar el resguardo generativo en controladores de eventos sin coincidencias que se usan en flujos y durante el llenado de parámetros
  • Cómo configurar tu propia instrucción de texto para manejar situaciones de conversación básicas y específicas del agente
  • Cómo escribir buenas descripciones de intents y parámetros a fin de generar controladores de reintentos para los parámetros obligatorios (además de los mensajes definidos por el usuario)
  • Cómo probar tu agente y simular preguntas de clientes que activan el resguardo generativo

Requisitos

  • Un proyecto de Google Cloud
  • Un navegador como Chrome

2. Cómo prepararte

Antes de comenzar a usar la función de resguardo generativo en Dialogflow CX, debes habilitar la API de Dialogflow.

Habilita la API de Dialogflow con la consola de Cloud

  1. Abre la consola de Google Cloud en tu navegador.
  2. En la consola de Google Cloud, navega a la Biblioteca de APIs para explorar las APIs y los servicios que se pueden habilitar.
  3. En la barra de búsqueda ubicada en la parte superior de la página Biblioteca de APIs, busca Dialogflow API y, luego, haz clic en el servicio resultante.
  4. Haz clic en el botón Habilitar para habilitar la API de Dialogflow en tu proyecto de Google Cloud.

Usa gcloud CLI (alternativa)

Como alternativa, la API se puede habilitar con el siguiente comando de gcloud:

gcloud services enable dialogflow.googleapis.com

Si la API se habilitó correctamente, deberías ver un mensaje similar al siguiente:

Operation "operations/..." finished successfully.

Obtén el código

No crearás el agente virtual desde cero; te proporcionaremos un agente que deberás restablecer desde la consola de Dialogflow CX y, luego, mejorarlo.

Para descargar el código fuente, haz lo siguiente:

  1. Abre una pestaña del navegador nueva, ve al repositorio del agente y clónalo desde una línea de comandos.
  2. El agente inicial se exportó como un paquete JSON. Descomprime el archivo, inspecciona la configuración del agente, observa la definición del flujo Liveaboards.json y, por último, explora las páginas de flujo, los intents y las entidades.

3. Crear un agente nuevo

Abre la consola de Dialogflow

Usarás la consola de Dialogflow CX junto con tu proyecto de Google Cloud para realizar los pasos restantes de este codelab.

  1. En tu navegador, ve a la consola de Dialogflow CX.
  2. Selecciona el proyecto de Google Cloud que deseas usar o crea uno nuevo.
  3. Deberías ver una lista de agentes en la consola de Dialogflow CX.

Si es la primera vez que usas Dialogflow CX, consulta la documentación de Dialogflow CX para obtener más información sobre cómo configurar tu proyecto y los ajustes según tus necesidades.

Crea un agente de Dialogflow CX nuevo

  1. Para restablecer el agente descargado desde el repositorio de GitHub, debes crear un agente nuevo. En la consola de Dialogflow CX, haz clic en Create new agent en la esquina superior derecha de la página.

Crea un agente nuevo

  1. Selecciona la opción Crear tu propio agente.

Elige la opción

  1. Completa el formulario con la configuración del agente que aparece a continuación y haz clic en Create para crear el agente.
  • Como nombre visible, elige Divebooker
  • Como ubicación elegida: us-central1
  • Selecciona tu zona horaria preferida
  • Seleccionar en - English como idioma predeterminado
  1. Dialogflow abrirá el agente automáticamente. Aún no hemos terminado.

Restablece el agente de Divebooker

  1. Regresa a la página de la lista de agentes y, luego, identifica el agente que acabas de crear. Haz clic en la opción 78d2781c655810e7.png y, luego, en el botón Restablecer.
  2. Selecciona la opción Subir y, luego, suelta o selecciona el archivo ZIP que descargaste anteriormente del repositorio de GitHub.
  3. Haz clic en el botón Restablecer para importar el agente que te proporcionamos.

Haz clic en el botón Restablecer para importar el agente que te proporcionamos.

¡Bien hecho! Terminaste de compilar tu agente virtual de reserva de buceo que está listo para ayudar a tus clientes. En la siguiente sección, lo probarás y comprobarás si responde las preguntas de los usuarios y ayuda con las solicitudes de reserva.

4. Prueba el agente

Dialogflow proporciona un simulador integrado para chatear con tus agentes y descubrir errores. En cada turno, puedes verificar los valores correctos del intent activado, la respuesta del agente, la página activa y los parámetros de la sesión.

Probaremos algunas situaciones y, para cada una de ellas, analizaremos el motivo por el que el agente está dando una respuesta determinada. Comencemos con la primera.

Intent sin resolver

  1. En la consola de Dialogflow y desde tu agente, haz clic en Test Agent para abrir el simulador.

Haz clic en Test Agent para abrir el simulador.

  1. Escribe un saludo para tu agente, como Hello, y pídele a what is a liveaboard?. La pregunta no coincide con ningún intent, un mensaje genérico como "Lo siento, no sé cómo ayudarte" el código fuente. Para comprobar que se invocó el evento integrado sys.no-match-default, inspeccione la respuesta original en el simulador.

Saludar al agente y preguntar qué es un vivo

Desplázate hacia abajo casi hasta el final de la respuesta de JSON. Ten en cuenta que cuando se busca un intent coincidente, Dialogflow detecta que es un NO_MATCH y genera un evento de no coincidencia.

Verifica que Dialogflow haya generado el evento sys.no-match-default.

  1. Cambia a la pestaña Build y abre la página de inicio del flujo de Liveaboards.

Cambia a la pestaña Build y abre la página de inicio del flujo de Liveaboards.

De forma predeterminada, cada flujo tiene controladores de eventos para los eventos integrados que no tienen coincidencias ni entradas. Estos controladores de eventos se crean automáticamente cuando creas un flujo y no se pueden borrar.

  1. Haz clic en el controlador de eventos sys.no-match-default y desplázate hacia abajo hasta la sección Agent answers. Dialogflow proporciona una lista de respuestas alternativas, pero también puedes definir diferentes tipos de mensajes de respuesta para proporcionar al usuario final más que solo respuestas de texto.

Observa las respuestas predefinidas del agente

Ahora, avancemos al camino ideal.

El camino ideal

En este segundo caso, finge ser un buceador que desea reservar un crucero de buceo para un grupo de 12 personas a las Islas Galápagos el próximo año en julio.

  1. En el panel del simulador, haga clic en el ícono Restablecer para iniciar una nueva conversación con el agente.

Restablece para iniciar una nueva conversación

Considera cambiar a la vista vertical para mejorar la UX.

  1. Dile al agente que deseas reservar un viaje chárter a las Islas Galápagos y proporciona los detalles del viaje. No es necesario que uses exactamente las mismas indicaciones que se indican a continuación, ¡experimenta!

Prueba el camino ideal

  1. Abre la Página de inicio y haz clic en la ruta head.send.group.request. Desplázate hacia abajo hasta la sección Transition, que le indica a Dialogflow la página que debe realizar la transición cuando este intent coincide.

Transición a la página para recopilar más información

  1. Cierra la definición de Ruta y expande la página Recopilar más información. Observa la entrega de entrada y la lista de parámetros.

Página para recopilar más información

Para cada página en Dialogflow CX, puedes definir un formulario, que es una lista de parámetros que se deben recopilar del usuario final de la página. Ten en cuenta que el agente no solicitó el destino del viaje porque lo pasamos como parte de la entrada inicial y destination también es un parámetro de intent. Cuando una página se activa inicialmente, y durante su período activo, cualquier parámetro de formulario con el mismo nombre que un parámetro de intent se establece automáticamente en el valor del parámetro de sesión y se omite el mensaje correspondiente.

  1. Cambia a la pestaña Administrar y haz clic en el intent head.send group request en la sección Intents. Observa las frases de entrenamiento proporcionadas para este intent y las partes anotadas de las frases de entrenamiento.

Observa las frases de entrenamiento proporcionadas para este intent y las partes anotadas de las frases de entrenamiento.

  1. Considera la frase de entrenamiento “Necesito organizar un viaje a Costa Rica para 15 buzos”. "Costa Rica" esté anotado con destination y "15" con number-of-guests. Cuando anotas partes de una frase de entrenamiento, Dialogflow reconoce que estas partes son solo ejemplos de valores reales que proporcionarán los usuarios finales en el entorno de ejecución. Es por esto que la entrada inicial "¿Ofrecen servicios chárteres a las Islas Galápagos?". Dialogflow extrajo el parámetro de destino de las “Islas Galápagos”.

A continuación, analizaremos lo que sucede si no le proporcionamos al agente una entrada válida cuando se le solicita que complete un parámetro del formulario.

Entrada no válida

  1. En el panel del simulador, haga clic en el ícono Restablecer para iniciar una nueva conversación con el agente.
  2. Expresa tu intención de hacer una reserva grupal. Esta vez, no le digas al agente a dónde quieres ir y cuando se te solicite una respuesta del destino con un valor aleatorio que no sea Costa Rica, Galápagos ni México.

Ingresa un destino no válido

  1. En la pestaña Administrar, haz clic en Tipos de entidades en la sección Recursos. Observa dos pestañas: en la pestaña Sistema, puedes encontrar las entidades del sistema que tu agente usa actualmente. La pestaña Personalizada proporciona la lista de las entidades personalizadas creadas para los datos coincidentes específicos de este agente.

Entidad personalizada de destino

  1. Haz clic en la entidad destino para averiguar con qué valores coincide. "Europa" no es una de las entradas ni es un sinónimo.
  2. En el diagrama de flujo, expande la página Recopilar más información que contiene los parámetros del formulario. Haz clic en el parámetro destino.
  3. En el panel de parámetros, desplázate hacia abajo hasta la sección Controladores de eventos Volver a solicitar y, luego, haz clic en el controlador de eventos No-match default.

Este controlador de eventos a nivel de parámetros está diseñado específicamente para controlar entradas no válidas del usuario final durante el llenado de formularios. Porque "Europa" es una entrada inesperada, se invocó un evento sys.no-match-default y se llamó al controlador de solicitudes nuevo correspondiente definido para este evento. En la sección El agente dice, se muestran dos mensajes alternativos para volver a solicitar información.

Una alternativa estática para volver a solicitar mensajes cuando el usuario final ingresa un destino no válido

¡Muy bien! Estos casos de prueba representan situaciones comunes que se espera que el agente maneje de forma adecuada. Con frecuencia, los usuarios hacen preguntas que los bots no pueden responder o solicitudes que los bots no pueden responder. Es muy complejo diseñar para la cola larga, es decir, fuera de los caminos más usados que seguirán la mayoría de los usuarios. Piensa en todo lo que puede salir mal en una conversación y todas las rutas inesperadas o no admitidas que pueden tomar los usuarios.

Los avances en el reconocimiento de voz automático (ASR) implican que casi siempre sabemos exactamente lo que dijeron los usuarios. Sin embargo, determinar qué quisieron decir los usuarios sigue siendo un desafío. Las expresiones a menudo no se pueden entender de forma aislada; solo pueden entenderse en contexto. En la siguiente sección de este codelab, exploraremos cómo los modelos generativos de lenguaje grande (LLM) más recientes de Google pueden ayudar a volver a encaminar el diálogo y hacer avanzar la conversación.

5. Habilita el resguardo generativo

¿Qué es la función de resguardo generativo?

La función de resguardo generativo es una función de Dialogflow CX que usa los modelos grandes de lenguaje (LLM) de Google para generar respuestas de agentes virtuales.

¿Cómo ayuda?

Entre los casos de uso clave, hay una serie de solicitudes de usuarios un tanto comunes, como repetir lo que dijo el agente en caso de que el usuario no entendió, mantener la línea cuando el usuario la solicita y resumir la conversación. En la primera prueba que hicimos, el agente no respondió la pregunta: “¿Qué es una patineta voladora?”. porque no creamos un intent para ello y diseñamos el flujo para manejar esos tipos de preguntas genéricas relacionadas con el buceo y juegos de mesa.

Incluso con intents sólidos, existe margen de error. Los usuarios pueden desactivar la secuencia de comandos permaneciendo en silencio (un error de falta de entrada) o diciendo algo inesperado (un error de no coincidencia). Si bien evitar que ocurran errores es mejor que manejarlos después de que ocurren, los errores no se pueden evitar por completo. Mensajes genéricos, como "Lo siento, no sé cómo ayudarte" o soluciones mínimamente viables similares no suelen ser lo suficientemente buenas. Los mensajes de error deben estar inspirados en el Principio cooperativo según el cual, la comunicación eficiente se basa en el supuesto de que hay una cooperación entre los participantes de la conversación.

En la siguiente sección, veremos cómo se puede configurar la función de resguardo generativo para aumentar la cobertura de intents y simplificar el manejo de errores para mejorar la experiencia del cliente.

Habilita el resguardo generativo para todo el evento sin coincidencias de todo el flujo

Puedes habilitar el resguardo generativo en controladores de eventos sin coincidencias que se usan en flujos, páginas o durante el relleno de parámetros. Cuando el resguardo generativo está habilitado para un evento sin coincidencias, cada vez que se activa ese evento, Dialogflow intenta producir una respuesta generada que se enviará al usuario. Si no se realiza correctamente la generación de la respuesta, se emitirá la respuesta normal del agente prescrito.

Puedes habilitar el resguardo generativo en tu agente en controladores de eventos sin coincidencias, que se pueden usar en la entrega de parámetros, flujos o páginas.

Comenzaremos a habilitar el resguardo generativo para todo el flujo de Liveaboards evento sin coincidencias predeterminados.

  1. Expande la página de inicio del flujo.
  2. Haz clic en sys.no-match-default, en Controladores de eventos.
  3. Marca Habilitar resguardo generativo en Respuestas del agente y, luego, haz clic en Guardar

Marca Habilitar el resguardo generativo en Respuestas del agente

Guarda para habilitar el resguardo generativo en la página de inicio de Liveaboards

Habilita el resguardo generativo en eventos específicos sin coincidencias

Ahora queremos habilitar el resguardo generativo para controlar las entradas no válidas cuando el agente solicita la cantidad de pasajeros:

  1. Abre la página Recopilar más información que contiene los parámetros del formulario. Haz clic en el parámetro number-of-guests.
  2. Navega al controlador del evento No-match de destino (desplázate hacia abajo hasta la sección Controladores de eventos de nueva solicitud y, luego, haz clic en el controlador de eventos No-match default).

Navega al controlador de eventos sin coincidencias de destino (desplázate hacia abajo hasta la sección de controladores de eventos de nueva solicitud y, luego, haz clic en el controlador de eventos predeterminado sin coincidencias).

  1. Marca Habilitar resguardo generativo en Respuestas del agente.

Habilita el resguardo generativo en el parámetro number-of-guest

  1. Por último, haz clic en Guardar.
  2. Ahora repite los pasos exactos para habilitar el resguardo generativo para destination y email-address

¡Muy bien! Habilitaste el resguardo generativo para controlar intents inesperados y valores de parámetros no válidos. A continuación, veremos cómo configurar la función de resguardo generativo con una instrucción de texto que le indica al LLM cómo responder.

6. Configura el resguardo generativo

La función de resguardo generativo pasa una solicitud a un modelo de lenguaje grande para producir la respuesta generada. La solicitud toma la forma de un mensaje de texto que es una combinación de lenguaje natural e información sobre el estado actual del agente y de la conversación. La función se puede configurar de varias maneras:

  1. Elige una instrucción específica (ya definida) para usar en la generación de respuestas.
  2. Definir una instrucción personalizada

Elige una instrucción ya definida

  1. En la consola de Dialogflow CX, haz clic en Agent Settings.

Ir a la configuración del agente

  1. Navega a la pestaña ML y, luego, a la pestaña secundaria ML.

Pestaña secundaria IA generativa

La función viene lista para usarse con dos plantillas: la predeterminada (que no está visible) y la ejemplo, que te guía para escribir tus propias instrucciones.

  1. Selecciona la plantilla Example y haz clic en el botón Edit en el lado derecho del menú desplegable para inspeccionarla.

Haz clic en el botón Editar del lado derecho del menú desplegable de la plantilla para inspeccionarla.

Con la instrucción predefinida, el agente virtual puede controlar situaciones conversacionales básicas. Por ejemplo:

  • Saludar y despedir al usuario.
  • Repite lo que dijo el agente en caso de que el usuario no haya entendido.
  • Mantén la línea cuando el usuario la solicite.
  • Resume la conversación.

Intentemos definir una instrucción de texto específica para el agente de Divebooker.

7. Define tu propia instrucción

  1. Copia la siguiente instrucción y pégala en el área Instrucción de texto.
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:
  1. Selecciona Guardar como plantilla nueva para almacenar la instrucción nueva como plantilla nueva (elige un nombre de plantilla nuevo) y selecciona Guardar en la esquina inferior derecha del panel.

Crear una instrucción de texto personalizada específica para el agente y guardarla como una plantilla nueva

  1. Para hacer que la instrucción recién creada se convierta en la instrucción activa, también debes Guardar la configuración.

Guardar la nueva configuración

Cuando escribas tu propia instrucción de texto, sé claro, conciso y prescriptivo. La forma en que se crea la instrucción para el LLM puede afectar en gran medida la calidad de la respuesta del LLM. Los LLM están entrenados para seguir instrucciones y, por lo tanto, cuanto más parezca una instrucción precisa, mejores resultados obtendrás. Crea una instrucción y, en función de los resultados que obtengas, luego itera para mejorarla.

Para crear instrucciones efectivas, sigue las siguientes prácticas recomendadas:

  1. Proporciona una descripción clara y concisa de la tarea que quieres que realice el LLM. Ni más ni menos. Asegúrate de que sea completo y breve.
  2. Además, la instrucción debe ser específica y estar bien definida, y evitar un lenguaje vago o ambiguo.
  3. Desglosa las tareas complejas en partes más pequeñas y fáciles de administrar. Al dividir la tarea en pasos más pequeños, puedes ayudar al modelo a enfocarse en un aspecto a la vez y reducir la probabilidad de errores o confusión.
  4. Para mejorar la calidad de las respuestas, agrega ejemplos en la instrucción. El LLM aprende en contexto a partir de los ejemplos sobre cómo responder.

Cuando creas una instrucción, además de una descripción en lenguaje natural del tipo de contexto que se debe generar, también se pueden usar los siguientes marcadores de posición:

  • $conversation La conversación entre el agente y el usuario, sin incluir la última declaración del usuario. Puedes adaptar los prefijos de giro (p.ej.: "Humano", "IA" o "Tú" o "Agente") en el mensaje de texto
  • $last-user-utterance La última declaración del usuario.
  • $flow-description: Es la descripción del flujo activo.
  • $route-descriptions Son las descripciones de los intents activos.

Ahora que tenemos una instrucción de texto inicial, la siguiente tarea es garantizar que el flujo y los intents tengan buenas descripciones.

8. Cómo agregar descripciones de intents y flujos

Agrega la descripción del flujo

  1. Para agregar una descripción al flujo de Liveaboards, coloca el cursor del mouse sobre el flujo en la sección Flujos para acceder a su configuración.

Coloca el cursor del mouse sobre el flujo en la sección Flows para acceder a su configuración.

  1. Haz clic en el botón de opciones 78d2781c655810e7.png.
  2. Selecciona Configuración de flujo y agrega la siguiente descripción (o una similar): search, find and book liveaboards.

Agrega una descripción al flujo de Liveaboards.

  1. Haga clic en Guardar.

Cómo agregar la descripción del intent

  1. Ahora, agreguemos una buena descripción al intent head.send.group.request. Cambia a la pestaña Administrar, elige Intents en la sección Recursos y selecciona el intent head.send.group.request.
  2. Agrega la siguiente descripción: assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands

Ten en cuenta que la descripción contiene información importante, como la cantidad mínima y máxima de pasajeros que se permiten en una embarcación. Ten esto en cuenta.

  1. Haga clic en Guardar.

Y eso es todo. Habilitaste el resguardo generativo en controladores de eventos sin coincidencias para la entrega de flujos y parámetros. También definiste tu propia instrucción de texto que la función de resguardo generativo pasa a un modelo grande de lenguaje para producir respuestas generativas.

En la siguiente sección, volverás a probar tu agente para ver cómo puede responder las mismas preguntas desafiantes de antes.

9. Vuelve a probar tu agente

Ahora que ya configuraste y habilitaste el resguardo de resguardo generativo en el agente virtual, puedes hacer preguntas complejas similares y ver cómo controla las respuestas.

Haz clic en Test Agent para volver a abrir el simulador.

Vuelve a probar el agente

Vuelve a preguntarle al agente sobre los juegos de mesa y los saltos de botellón. A partir de ahora, observa cómo cada diálogo tiene mensajes definidos por el usuario y respuestas generadas destacadas en los cuadros rojos.

Vuelve a probar al agente y pregúntale nuevamente qué es un Liveaboard.

¿Obtuviste una respuesta informativa agradable en lugar de un mensaje genérico? ¡Genial! Después de proporcionar una descripción clara y concisa de las tareas que deseas que realice el agente (en la instrucción de texto y en la descripción del flujo), tu bot ahora es mucho más inteligente cuando se trata de responder preguntas detalladas sin crear intents específicos. Tu cliente apreciará que el agente pueda brindarle una respuesta más informada en lugar de una respuesta sin acción.

No seas tímido y desafía al agente, pregunta si puede ayudarte a encontrar un curso de buceo, ya que aún no eres un buceador certificado.

 Pregúntale al agente si puede ayudarte a encontrar un curso de buceo

Correcto, en este momento no diseñamos el agente para que te ayude en cursos de buceo. ¿Cómo sabe eso el agente? En el mensaje de texto definimos claramente en qué puede ayudarte el agente y en qué no. "Por el momento, no se puede ayudar a los clientes con actividades de buceo y cursos en tierra. No puedes recomendar tiendas ni complejos turísticos de buceo locales".

Ahora, vuelve a probar el escenario feliz y enriquece la conversación. Veamos cómo cambió la experiencia.

Vuelve a probar la situación alegre y sé creativo en el diálogo.

Vuelve a probar la situación alegre y sé creativo en el diálogo.

Cuando Dialogflow detecta una coincidencia con un intent o intenta recopilar un parámetro según el diseño del flujo, se mostrarán las entregas definidas en el momento del diseño. Cuando el usuario abandona el guion para solicitar un resumen de los detalles del viaje u ofrecer su número de teléfono, entra en juego la función de resguardo generativo.

¡Genial! Volviste a probar la situación ideal y espero que hayas tenido una conversación agradable y natural con el agente lo más parecida posible a la que tendrías con un agente humano.

Lamentablemente, puede haber problemas en una conversación. Hagamos otra prueba. Esta vez, cuando se te pregunte el número de invitados, digamos un número mayor que 15.

Proporciona una cantidad de huéspedes mayor que 15

Proporciona una cantidad de huéspedes mayor que 15

Ten en cuenta los siguientes aspectos:

  1. ¿Por qué 20 no es un número válido? Porque establecimos un límite para la cantidad de huéspedes permitidos como parte de la descripción del intent: "El agente recopila información como el período de salida, el destino, la cantidad de invitados***(mín 4, 15 personas)*** *, detalles de contacto*". de Google Cloud. Respuesta generativa que indica que el LLM devolvió el mensaje "Lo sentimos, solo podemos ayudar con reservas de grupos de hasta 15 huéspedes" es perfectamente congruente con las restricciones que establecimos sobre la cantidad de huéspedes. Para reforzar esto, la cantidad de invitados es una entidad de regex personalizada que solo coincide con números incluidos en el rango de 4 a 15.
  2. La conversación continúa porque, al final, el usuario sigue dispuesto a conseguir una oferta para 15 buceadores. Esto sucede frecuentemente durante las conversaciones naturales, y cambiamos de opinión con bastante frecuencia. Observa cómo el agente es cooperativo y dirige suavemente al usuario hacia la ruta correcta.

El diseño de conversación implica escribir un guion en una mitad de un diálogo con la esperanza de que sea lo suficientemente sólido como para que cualquiera pueda intervenir y actuar en la otra mitad. Cuando diseñan para la cola larga, los desarrolladores deben enfocarse en lo que el usuario podría decir en cada paso del diálogo para definir tus rutas, controladores y parámetros. Por este motivo, agregamos la función de resguardo generativo a Dialogflow CX, lo que permite que los desarrolladores se enfoquen en los principios de diseño de conversaciones y menos en los detalles de implementación a fin de brindar experiencias de conversación sólidas a los usuarios.

Hagamos una prueba más. Esta vez, desafía al bot de nuevo con un lugar que no esté en la lista de destinos disponibles, como las Maldivas. Luego, veremos con rapidez lo que ocurre detrás de escena.

Vuelve a probar al bot con un lugar que no esté en la lista de destinos disponibles, como las Maldivas

Ten en cuenta que, como también habilitamos el resguardo generativo en el evento no-match para el parámetro destino, se envía una solicitud a un modelo grande de lenguaje para producir la respuesta generada. Se ignoran las respuestas prescritas normales (en la sección Agente).

Los cuadros de texto que aparecen a continuación te ayudarán a comprender mejor cómo los marcadores de posición ayudan a dar forma a la solicitud enviada al modelo de lenguaje grande.

Esta es la instrucción de texto personalizado que configuramos en Dialogflow con los marcadores de posición destacados en negrita:

You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:

En el cuadro de texto a continuación, incluí la entrada que recibió el modelo de lenguaje extenso y el resultado que contiene la respuesta generada que se le dirá al usuario:

llm_input:
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help search, find and book liveaboards.

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands.

The conversation between the human and you so far was:
Human: Hi, my name's Alessia
AI Hi Alessia, what can I help you with today?
Human: Can you help me find a nice boat for myself and my family?
AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly.
Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico

Then the human asked:
The kids want to go to the Maldives

llm_output:
You say:
I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.

De manera similar a la prueba realizada anteriormente, el modelo genera la respuesta que se envía al usuario y se basa en la información que proporcionamos en la descripción del intent: "El destino debe ser uno de los siguientes en el Pacífico: Costa Rica, México, Islas Galápagos".

Modificar la lista de frases prohibidas

La función de resguardo generativo se puede configurar de varias maneras:

  1. Elige una instrucción específica (ya definida) para usar en la generación de respuestas.
  2. Definir una instrucción personalizada
  3. Cambiar la lista de frases prohibidas.

Hasta ahora, analizamos las dos primeras formas. Exploremos el tercero.

  1. En Configuración del agente, navega a la pestaña AA y, luego, a la pestaña secundaria IA generativa.
  2. En la sección Frases bloqueadas, agrega las siguientes oraciones a la lista:
  3. Dangerous country
  4. Hateful place
  5. Medical assistance
  6. Haz clic en Guardar.
  7. Haz clic en el ícono Restablecer y vuelve a probar la última situación. En lugar de proporcionar un hermoso destino para bucear en todo el mundo, escribe una de las frases prohibidas.

Prueba una de las frases prohibidas

La instrucción y la respuesta generada se comparan con la lista de frases prohibidas. Las frases prohibidas son aquellas que están prohibidas para la IA generativa. Si la entrada incluye frases prohibidas o que se consideran no seguras, la generación no se realizará correctamente y, en su lugar, se emitirá la respuesta prescrita habitual (si el agente dice en la misma entrega).

Excelente. Hemos cubierto una variedad de situaciones conversacionales en las que las respuestas generativas realmente pueden marcar la diferencia. ¡No dudes en seguir haciendo pruebas!

10. Felicitaciones

¡Felicitaciones por completar el codelab! ¡Hora de relajarse!

CBV

Creaste correctamente un agente virtual y habilitaste el resguardo generativo en los controladores de eventos no-match que se usan en flujos y durante el relleno de parámetros.

La función de resguardo generativo combinada con un buen flujo y descripciones de intents pueden proporcionar respuestas cooperativas y específicas del agente, a diferencia de los mensajes genéricos como “Lo siento, no sé cómo ayudarte”. o "Lo sentimos, has ingresado una opción no válida". Los mensajes de error generados por modelos grandes de lenguaje pueden guiar suavemente a los usuarios hacia rutas exitosas o restablecer sus expectativas sobre lo que es y no es posible.

Puedes probar otras situaciones de conversación y explorar otras funciones disponibles relacionadas con Dialogflow CX y la IA generativa.

Realiza una limpieza

Puedes realizar la siguiente limpieza para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que se usaron en este codelab:

  • Navega a la consola de Dialogflow CX y borra todos los agentes que creaste.
  • En la consola de Google Cloud, navega a la página APIs y servicios y, luego, inhabilita la API de Dialogflow.

Lecturas adicionales

Continúa con el aprendizaje sobre la IA conversacional y la IA generativa con las siguientes guías y recursos:

Licencia

Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.