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:
- En tu navegador, ve a la página de detalles del servicio de la API de Dialogflow.
- 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:
- En la consola de Google Cloud, ve a la consola de Vertex AI Search and Conversation.
- 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.
- Para crear una app de chat nueva en Vertex AI Conversation, puedes hacer lo siguiente:
- Navega a la consola de Vertex AI Conversation y, luego, haz clic en +Nueva app cerca de la parte superior de la consola.
- 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.
- En la consola de Vertex AI Conversation, selecciona Chat como el tipo de app que quieres crear.
- 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. - Especifica un nombre de agente de
Blood Donation Agent. - Haz clic en Continuar.
- Haz clic en Crear almacén de datos nuevo.
- Elige Cloud Storage como fuente de datos para tu almacén de datos.
- 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 - Elige Documentos no estructurados como el tipo de datos que importas.
- Haz clic en Continuar.
- Especifica un nombre de almacén de datos de
Australian Red Cross Lifeblood Unstructured. - Haz clic en Crear para crear el almacén de datos.
- En la lista de almacenes de datos, selecciona el
Australian Red Cross Lifeblood Unstructuredque se acaba de crear. - 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.
- 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.
- 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.

- Completa el formulario como se indica a continuación para generar la siguiente instrucción del almacén de datos: Tu nombre es
Donatey eres unchatbotservicial y cortés enSave a life, a fictitious organization. Tu tarea es ayudar ahumans with eligibility information.

Habilita la respuesta generativa de respaldo para el evento de no coincidencia del flujo de inicio predeterminado
- Cambia a la pestaña Build y abre la Start Page.
- 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.

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.

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

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.

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.

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?

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.

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
- Abre la Página de inicio y haz clic en Editar almacenes de datos.
- 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?.

- Haz clic en el botón Guardar.
- 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.
- 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.


- 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.anycomo 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.

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.
- En la consola de Dialogflow CX, ve a la pestaña Manage, selecciona Generators y haz clic en Create new.

- 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)
- Nombre visible:
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:
$conversationLa conversación entre el agente y el usuario, sin incluir el último enunciado del usuario.$last-user-utteranceEs 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
- 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.

- 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.

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

7. Vuelve a probar tu agente
Haz clic en Test Agent para abrir el simulador de nuevo.

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.

Luego, verifica que la verificación de elegibilidad falle cuando no se cumpla uno o ambos 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)?

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.
- 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-integercomo el tipo de entidad y marca los parámetros requeridos. Proporciona los cumplimientos iniciales de la instrucción, comoHow old are you?yWhat is your correct weight?. Guarda todos los cambios.

- 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.

- 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.

- 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.

- 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.


9. Felicitaciones
¡Felicitaciones por completar este 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:
- A fin de evitar cargos innecesarios de Google Cloud, usa la consola de Google Cloud para borrar tu proyecto si no lo necesitas.
- Si usaste un proyecto existente de Google Cloud, borra los recursos que creaste para evitar que se generen cargos en tu cuenta. Para obtener más información, consulta los pasos para borrar una app.
- Si deseas inhabilitar las APIs de Vertex AI Conversation y Dialogflow, ve a la página de detalles del servicio de la API de Discovery Engine, haz clic en Inhabilitar API y confirma la acción. Luego, ve a la página de detalles del servicio de la API de Dialogflow, haz clic en Inhabilitar API y confirma la acción.
Más información
Continúa aprendiendo sobre la IA conversacional y la IA generativa con las siguientes guías y recursos:
- Documentación para Dialogflow CX
- Introducción a Vertex AI Conversation
- Crea y usa un agente de almacén de datos
- Documentación para Vertex AI Conversation
- La IA generativa en Google Cloud
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.