Toma de decisiones fundamentadas con generadores y almacenes de datos de Dialogflow CX

1. Descripción general

Última actualización: 10/10/2023

Qué compilarás

En este codelab, usarás Vertex AI Conversation y Dialogflow CX para compilar, implementar y configurar un agente virtual que ayude a las personas que quieran donar sangre y garantice que cumplan con los requisitos de elegibilidad necesarios. El agente usará datos públicos reales y los modelos de lenguaje grandes (LLM) generativos de Google durante la entrega de Dialogflow CX.

Qué funciones usarás

Para completar el codelab, configurarás y usarás tres funciones distintas:

Agentes de almacenes de datos

La función Vertex AI Conversation crea un agente especial de Dialogflow, llamado agente de almacén de datos.

Con esta función, proporcionas la URL de un sitio web, datos estructurados o no estructurados (almacenes de datos). Luego, Google analiza el contenido y crea un agente virtual potenciado por almacenes de datos y modelos de lenguaje grandes. De esta manera, tus clientes y usuarios finales pueden mantener conversaciones con el agente y hacerle preguntas sobre el contenido. Consulta la introducción a Vertex AI Conversation para obtener información sobre este tipo de agente.

Generadores

La función de generador es una función de Dialogflow CX que permite a los desarrolladores usar los modelos de lenguaje grandes (LLM) generativos más recientes de Google junto con instrucciones personalizadas para generar respuestas de agentes en el entorno de ejecución. Un generador puede producir respuestas genéricas a partir del conocimiento general de un gran conjunto de datos textuales con el que se entrenó o el contexto de la conversación.

Respuesta generativa de respaldo

La función de respuesta generativa de respaldo usa los modelos de lenguaje grandes (LLM) generativos más recientes de Google para generar respuestas de agentes virtuales cuando la entrada del usuario final no coincide con un intent o un parámetro para completar un formulario. La función se puede configurar con una instrucción de texto que le indique al LLM cómo responder. Puedes usar una instrucción de texto predefinida o agregar tus propias instrucciones. Puedes habilitar la respuesta generativa de respaldo en los controladores de eventos de no coincidencia que se usan en flujos, páginas o durante el llenado de parámetros. Cuando se habilita la respuesta generativa de respaldo para un evento de no coincidencia, cada vez que se activa ese evento, Dialogflow intentará producir una respuesta generada que se le dirá al usuario. Si la generación de la respuesta no se realiza correctamente, se emitirá la respuesta de agente prescrita habitual. Si quieres obtener más información sobre la respuesta alternativa generativa, prueba este codelab.

Qué aprenderás

  • Cómo crear un agente de almacén de datos a partir de datos no estructurados
  • Cómo usar controladores de conocimiento para permitir que los usuarios finales interactúen con un agente virtual en relación con el contenido agregado a un almacén de datos
  • Cómo configurar una instrucción de texto del generador y hacerla contextual con los marcadores de posición integrados de la instrucción del generador
  • Cómo marcar palabras como marcadores de posición de instrucciones del generador y, luego, asociarlas con parámetros de sesión en la entrega para usar sus valores durante la ejecución
  • Cómo configurar un generador para controlar las respuestas que involucran conocimiento de un gran conjunto de datos textuales y el contexto de la conversación actual
  • Cómo generar un correo electrónico formal con generadores
  • Cómo probar tu agente y simular las preguntas de los clientes que activan respuestas generadas

Requisitos

  • Un proyecto de Google Cloud
  • Un navegador, como Chrome

2. Habilita las APIs

Antes de crear un agente de almacén de datos en Vertex AI Conversation, debes habilitar las APIs de Dialogflow y de Vertex AI Search and Conversation.

Para habilitar la API de Dialogflow, sigue estos pasos:

  1. En tu navegador, ve a la página de detalles del servicio de la API de Dialogflow.
  2. Haz clic en el botón Habilitar para habilitar la API de Dialogflow en tu proyecto de Google Cloud.

Para habilitar la API de Vertex AI Search and Conversation, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la consola de Vertex AI Search and Conversation.
  2. Lee y acepta las Condiciones del Servicio y, luego, haz clic en Continuar y activar la API.

3. Crea una nueva app de chat y un almacén de datos para tu app

Ahora, crearás una nueva app de chat para tu agente virtual y la configurarás con una fuente de datos. El propósito del agente que crearás es ayudar a los clientes que tienen preguntas sobre los requisitos para donar sangre. Usarás el servicio Lifeblood de la Cruz Roja Australiana como fuente de información y crearás un almacén basado en datos no estructurados del sitio web de elegibilidad para donar sangre.

  1. Para crear una app de chat nueva en Vertex AI Conversation, puedes hacer lo siguiente:
    1. Navega a la consola de Vertex AI Conversation y, luego, haz clic en +Nueva app cerca de la parte superior de la consola.
    2. Navega a la consola de Dialogflow CX, haz clic en +Create new agent, selecciona la opción Generar automáticamente y, luego, se te redireccionará al siguiente paso en la consola de Vertex AI Conversation.
  2. En la consola de Vertex AI Conversation, selecciona Chat como el tipo de app que quieres crear.
  3. Ingresa un nombre de empresa de Save a Life. Este parámetro se usa para definir la empresa a la que representa tu agente y su alcance.
  4. Especifica un nombre de agente de Blood Donation Agent.
  5. Haz clic en Continuar.
  6. Haz clic en Crear almacén de datos nuevo.
  7. Elige Cloud Storage como fuente de datos para tu almacén de datos.
  8. Especifica la siguiente carpeta de Google Cloud Storage que contiene datos de muestra para este codelab y recuerda que el prefijo gs:// no es necesario:
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. Elige Documentos no estructurados como el tipo de datos que importas.
  10. Haz clic en Continuar.
  11. Especifica un nombre de almacén de datos de Australian Red Cross Lifeblood Unstructured.
  12. Haz clic en Crear para crear el almacén de datos.
  13. En la lista de almacenes de datos, selecciona el Australian Red Cross Lifeblood Unstructured que se acaba de crear.
  14. Haz clic en Crear para crear tu app de chat.

¡Felicitaciones! Terminaste de crear tu app de chat basada en el conocimiento que está lista para ayudar a los posibles donantes. Tómate un momento para celebrarlo.

Sin embargo, aún queda trabajo por hacer para que el agente sea accesible a tus usuarios. En la siguiente sección, usarás un controlador de conocimiento para habilitar conversaciones entre el agente y los usuarios finales sobre los requisitos de elegibilidad.

4. Configura el agente para que responda preguntas frecuentes sobre los requisitos para donar sangre

Proporciona la instrucción sobre data store

Mientras el proceso de recopilación de documentos se ejecuta en segundo plano, asignemos una marca al agente editando la instrucción del almacén de datos.

  1. En la consola de Vertex AI Conversation, haz clic en el nombre de tu app de chat para que te redirija a la consola de Dialogflow CX y allí poder realizar más pruebas y personalizaciones.
  2. En la consola de Dialogflow CX y desde tu agente, haz clic en Configuración del agente (Agent settings) (esquina superior derecha de la página), luego ve a la pestaña ML y, por último, abre la pestaña IA generativa.

Navega a la instrucción del almacén de datos

  1. Completa el formulario como se indica a continuación para generar la siguiente instrucción del almacén de datos: Tu nombre es Donate y eres un chatbot servicial y cortés en Save a life, a fictitious organization. Tu tarea es ayudar a humans with eligibility information.

Completa el formulario para generar tu instrucción

Habilita la respuesta generativa de respaldo para el evento de no coincidencia del flujo de inicio predeterminado

  1. Cambia a la pestaña Build y abre la Start Page.
  2. Haz clic en el controlador de eventos sys.no-match-default. A menos que la casilla ya esté marcada, habilita la función de respuesta generativa de respaldo.

Habilita la respuesta generativa de respaldo en el evento de no coincidencia del flujo

Verifica el almacén de datos del agente

En la página de inicio, haz clic en Editar almacenes de datos para consultar la configuración del almacén de datos.

Edita almacenes de datos

Dialogflow ya seleccionó el almacén de datos que creaste anteriormente.

Asocia el almacén de datos que creaste

Desplázate hacia abajo hasta Agent Responses en Fulfillment. Una entrega es la respuesta del agente al usuario final. Dialogflow completó previamente Agent says con el parámetro $request.knowledge.answers[0], que, en el tiempo de ejecución, contiene la respuesta principal a la pregunta del usuario.

La respuesta del agente contiene la respuesta principal a la pregunta del usuario.

5. Prueba el agente

Una vez que los documentos estén disponibles y listos para que tu agente los use, comprueba qué tan buenas son las respuestas.

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

Vuelve a probar el agente

Haz preguntas que esperas encontrar en la página de preguntas frecuentes del sitio web:

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

Verifica que las respuestas provengan de la base de conocimiento

Observa que las respuestas se recuperan del sitio de Australian Red Cross Lifeblood. Como se indica en esta página, existen edades mínimas y máximas para donar sangre. La edad mínima es de 18 años y la máxima es de 75 para los donantes primerizos. El pequeño ícono de estrella que aparece en la respuesta del agente y en la respuesta JSON original es otra prueba de que estamos extrayendo información del almacén de datos.

Inspecciona la respuesta JSON original

Por último, probemos el agente con una pregunta que no esté relacionada con la donación de sangre.

Usuario: "¿Cómo está el clima en Melbourne?"

Agente: "Lo siento, no puedo ayudarte con eso. ¿Cómo puedo ayudarte con la información de elegibilidad?"

Esta respuesta incluye contenido generado por IA y se deriva de la instrucción de texto que se creó con Dialogflow a partir del parámetro de configuración del conector de conocimiento proporcionado antes: "Tu nombre es Donar, y eres un chatbot servicial y cordial de Salva una vida. Tu tarea consiste en ayudar a los humanos con la información de elegibilidad". Esta instrucción de texto contiene el nombre de la empresa, el nombre del agente y, lo que es más importante, el alcance del agente, que Dialogflow usa para generar la respuesta del agente.

¡Bien hecho! Hasta ahora, usas el almacén de datos para ayudar a las personas con preguntas frecuentes relacionadas con la donación de sangre. En la siguiente parte del codelab, veremos cómo vincular una instrucción de texto del generador al mismo contenido para tomar decisiones fundamentadas.

6. Configura el agente para el cuestionario de elegibilidad

Nuestra siguiente tarea es diseñar el agente para determinar si el usuario cumple los requisitos para donar sangre. Los donantes deben cumplir con criterios estrictos, como edad, peso, afecciones existentes, viajes recientes, etc. Para el alcance de este codelab, solo consideraremos la edad y el peso. Un generador usará los modelos de lenguaje grandes (LLM) de Google para tomar una decisión fundamentada de forma dinámica según el contexto de la conversación y la base de conocimiento.

Configura rutas y parámetros nuevos

  1. Abre la Página de inicio y haz clic en Editar almacenes de datos.
  2. Cambia la respuesta existente del agente a $request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?.

Enriquece la respuesta del agente a las preguntas frecuentes del usuario

  1. Haz clic en el botón Guardar.
  2. Ahora, debemos diseñar el agente para que controle las respuestas "sí" y "no". Para comenzar, crea un intent confirmation.yes y un intent confirmation.no. Sigue estos lineamientos sobre la reutilización de la intención.
  3. Luego, en la página de inicio, crea una ruta para la intención confirmation.yes que realice la transición a una nueva página Eligibility Quiz.

Crea una ruta para el intent confirmation.yes

Cuando se activa confirmation.yes, se pasa a una nueva página del cuestionario de elegibilidad.

  1. Como mencionamos antes, simplificaremos el cuestionario y solo tendremos en cuenta la edad y el peso del usuario para determinar si es apto para donar. Abre la página Eligibility Quiz y agrega un nuevo parámetro de formulario age-weight. Elige @sys.any como el tipo de entidad. Proporciona "What is your age and weight?" como la respuesta inicial del mensaje. Queremos recopilar la edad y el peso de una sola vez. Guarda todos los cambios.

Crear parámetro

Crea y configura el generador de elegibilidad

La función de generador es una función de Dialogflow CX que permite a los desarrolladores usar los modelos de lenguaje grandes (LLM) generativos más recientes de Google durante la entrega de Dialogflow CX. Los generadores se utilizan para que el agente genere respuestas durante el tiempo de ejecución. Un generador puede producir respuestas genéricas a partir del conocimiento general de un gran conjunto de datos textuales con el que se entrenó o el contexto de la conversación.

Crearemos un nuevo generador que comparará la información proporcionada por el usuario (como la edad y el peso) con los requisitos de elegibilidad para determinar si el usuario puede donar.

  1. En la consola de Dialogflow CX, ve a la pestaña Manage, selecciona Generators y haz clic en Create new.

Cómo crear un generador nuevo

  1. A continuación, proporciona un nombre visible descriptivo y escribe la instrucción de texto. Deja la configuración predeterminada de los controles de calidad del modelo. Luego, haz clic en Guardar para crear el generador.
    • Nombre visible: Blood Donation Eligibility
    • Instrucción de texto: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

La instrucción de texto se envía al modelo generativo durante la entrega en el entorno de ejecución. Debe ser una pregunta o solicitud clara para que el modelo genere una respuesta satisfactoria. Puedes usar marcadores de posición especiales integrados en la instrucción del generador de texto:

  • $conversation La conversación entre el agente y el usuario, sin incluir el último enunciado del usuario.
  • $last-user-utterance Es el último enunciado del usuario.

La instrucción de texto que configuraste espera que el usuario proporcione la edad y el peso en un solo turno de conversación (la `$last-user-utterance``).

Usa el generador en la entrega y configura todos los parámetros obligatorios

  1. En la página Eligibility Quiz, agrega una ruta nueva que se producirá cuando se hayan completado todos los parámetros. Ingresa el requisito de la condición $page.params.status = "FINAL" y haz clic en Guardar.

Agrega una nueva ruta que se producirá cuando se hayan completado todos los parámetros.

  1. Ve a la sección Generators del panel Fulfillment y expándela. Luego, haz clic en Add generator y selecciona el generador Blood Donation Eligibility. Después de seleccionar el generador, debes definir el parámetro de salida que contendrá el resultado del generador después de la ejecución.

Selecciona el generador “Blood Donation Eligibility”, asocia los marcadores de posición de la instrucción con los parámetros de sesión y define el parámetro de salida.

  1. Usa el parámetro de salida en la respuesta del agente y guarda la ruta. Ya puedes probar todo.

Usa el parámetro de salida en la respuesta del agente

7. Vuelve a probar tu agente

Haz clic en Test Agent para abrir el simulador de nuevo.

Vuelve a probar el agente

En el Simulador, inicia una nueva conversación con el agente. Primero, pregunta sobre los requisitos de edad y, luego, continúa con el cuestionario de elegibilidad. Primero, prueba la ruta "apta", así que ingresa una edad entre 18 y 75 años y un peso superior a 50 kg.

Ruta apta

Luego, verifica que la verificación de elegibilidad falle cuando no se cumpla uno o ambos requisitos.

Ruta para clientes que no cumplen con los requisitos

Excelente, el generador funciona según lo esperado. ¿O no? ¿Qué sucede si el usuario proporciona la edad, pero no el peso (o viceversa)?

Proporcionar la edad, pero no el peso

8. Ajuste de instrucciones del generador

Parece que recopilar la edad y el peso de una sola vez no funciona, ya que siempre se deben proporcionar ambos datos. Deberíamos crear un formulario que recopile ambos valores como parámetros de entidades. Para que la instrucción sea contextual en relación con todos los requisitos de elegibilidad (como la edad y el peso), podemos usar marcadores de posición agregando un signo de dólar antes de la palabra. Más adelante, asociaremos estos marcadores de posición de instrucciones del generador con parámetros de sesión en la entrega, y se reemplazarán por los valores de los parámetros de sesión durante la ejecución.

  1. Abre la página Eligibility Quiz y agrega dos parámetros de formulario separados: uno para el peso y otro para la edad. Elige @sys.number-integer como el tipo de entidad y marca los parámetros requeridos. Proporciona los cumplimientos iniciales de la instrucción, como How old are you? y What is your correct weight?. Guarda todos los cambios.

Formulario de elegibilidad

  1. Antes de cambiar la instrucción de texto del generador, ya que agregaremos dos marcadores de posición personalizados nuevos, primero debemos quitar el generador del cumplimiento de la ruta. Haz clic en Guardar.

Cómo quitar el generador

  1. Ve a la pestaña Manage, selecciona Generators y actualiza la instrucción de texto del generador Blood Donation Eligibility con lo siguiente: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.. Haz clic en Guardar.

Ten en cuenta que no solo hicimos que la instrucción de texto sea contextual en relación con los parámetros del formulario de edad y peso, sino que también cambiamos la última oración para generar un correo electrónico formal dirigido al usuario que contenga el resultado oficial del cuestionario de elegibilidad.

Vuelve a configurar la instrucción de texto

  1. En la página Eligibility Quiz, selecciona la ruta y expande la sección Generators del panel Fulfillment. Luego, haz clic en Add generator y selecciona el generador Blood Donation Eligibility. Después de seleccionar el generador, debes asociar los nuevos marcadores de posición de la instrucción con los parámetros de sesión respectivos. Además, debes volver a configurar el parámetro de salida. Haz clic en Guardar.

Actualiza las vinculaciones del generador

  1. Vuelve a probar el agente. Ahora, la verificación de elegibilidad tiene en cuenta la edad y el peso, y la redacción cambió de un tono conversacional a una respuesta más cortés que está lista para enviarse sin ninguna interacción humana.

Correo electrónico que indica que el usuario no es apto

Correo electrónico que indica que el usuario es apto

9. Felicitaciones

¡Felicitaciones por completar este codelab!

¡Felicitaciones por completar el codelab!

Hoy investigamos los generadores en el contexto de los cuestionarios de elegibilidad. Viste que los generadores usan LLM para generar respuestas de agentes y que, cuando funcionan con una base de conocimiento, también pueden tomar decisiones bien fundamentadas. Sin duda, existen muchos otros casos de uso que se pueden implementar aprovechando los generadores y los almacenes de datos, y estamos ansiosos por conocerlos.

Limpieza

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

Más información

Continúa aprendiendo 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.