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 quieren donar sangre y se aseguren de que cumplan con los requisitos de elegibilidad necesarios. El agente usará datos públicos reales y los modelos generativos de lenguaje grande (LLM) 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 del almacén de datos.
Con esta función, proporcionas una URL de sitio web, datos estructurados o datos no estructurados (almacenes de datos). Luego, Google analiza tu contenido y crea un agente virtual impulsado por almacenes de datos y modelos grandes de lenguaje. 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 generativos de lenguaje grande (LLM) generativo de Google más recientes y mensajes personalizados para generar respuestas del agente en el entorno de ejecución. Un generador puede manejar respuestas genéricas que implican conocimiento general de un gran conjunto de datos textuales con el que se entrenó o el contexto de la conversación.
Resguardo generativo
La función de resguardo generativo usa los modelos generativos de lenguaje grande (LLM) generativos más recientes de Google para generar respuestas de agente virtual cuando la entrada del usuario final no coincide con un intent o parámetro para completar formularios. 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 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. Si quieres obtener más información sobre el resguardo generativo, 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 tengan conversaciones con un agente virtual sobre el contenido agregado a un almacén de datos
- Cómo configurar una instrucción de texto del generador y hacerla contextual usando marcadores de posición de instrucción del generador integrados
- 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 manejar respuestas que implican conocimiento de un gran conjunto de datos textuales y contexto de la conversación actual.
- Cómo crear un correo electrónico formal con generadores
- Cómo probar tu agente y simular preguntas de 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 Dialogflow y las APIs de Vertex AI Search and Conversation.
Para habilitar la API de Dialogflow, sigue estos pasos:
- En tu navegador, ve a la página 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, navega 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 app de chat y un almacén de datos nuevos 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 tengan preguntas sobre la elegibilidad de la sangre. Usarás la sangre de la Cruz Roja Australiana como fuente de información y crearás un almacén de datos basado en datos no estructurados del sitio web de elegibilidad de la 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 + App nueva cerca de la parte superior de la consola.
- Navega a la consola de Dialogflow CX, haz clic en +Crear agente nuevo y, luego, selecciona la opción Generar automáticamente. A continuación, 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 la empresa de
Save a Life
. Este parámetro se usa para definir la empresa a la que representa tu agente y su alcance. - En Agent name, especifica
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 ten en cuenta que no es necesario el prefijo
gs://
: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 del 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 Unstructured
recién creado. - Haz clic en Crear para crear tu app de chat.
¡Felicitaciones! Completaste la compilación de tu app de chat potenciada por conocimiento, lista para ayudar a donantes potenciales, así que tómate un momento para celebrar.
Sin embargo, aún hay más trabajo por hacer para que los usuarios puedan acceder al agente. 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 las preguntas frecuentes sobre la elegibilidad de la sangre
Proporciona el mensaje de almacenamiento de fecha
Mientras el proceso de recopilación de documentos se ejecuta en segundo plano, editemos la instrucción del almacén de datos para darle al agente una marca.
- En la consola de Vertex AI Conversation, haz clic en el nombre de tu app de chat, que te redireccionará a la consola de Dialogflow CX para realizar más pruebas y personalizaciones.
- En la consola de Dialogflow CX y desde tu agente, haz clic en Configuración del agente (en la esquina superior derecha de la página) y, luego, ve a la pestaña AA y, por último, abre la pestaña IA generativa.
- Completa el formulario como se muestra a continuación para generar la siguiente instrucción del almacén de datos: Tu nombre es
Donate
y eres unchatbot
servicial y amable enSave a life, a fictitious organization
. Tu tarea es ayudar ahumans with eligibility information
.
Habilita el resguardo generativo para el evento sin coincidencias del flujo de inicio predeterminado
- Cambia a la pestaña Build y abre la Página de inicio.
- Haz clic en el controlador de eventos sys.no-match-default. A menos que la casilla ya esté marcada, habilita la función de resguardo generativo.
Verifica el almacén de datos del agente
En la página de inicio, haz clic en Editar almacenes de datos para revisar la configuración del almacén de datos.
Dialogflow ya seleccionó para ti el almacén de datos que creaste anteriormente.
Desplázate hacia abajo hasta Agent Responses en Fulfillment (Entrega). Una entrega es la respuesta del agente al usuario final. Dialogflow prepropagó El agente dice 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, verifica qué tan buenas son las respuestas.
Haz clic en Test Agent para volver a abrir el simulador.
Haz las 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 obtuvieron del sitio Lifeblood de la Cruz Roja Australiana. Según 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 edad máxima es de 75 para quienes hacen donaciones por primera vez. El pequeño ícono de estrella que aparece en la respuesta del agente y la respuesta JSON original proporcionan evidencia más del hecho de que extraemos información del almacén de datos.
Por último, intentemos desafiar al agente con una pregunta que no se relacione totalmente 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 tiene contenido generado por IA y deriva de la instrucción de texto que Dialogflow creó a partir de la configuración del conector de conocimiento proporcionada antes: "Your name is Donate, and you are a útil y amable chatbot en Save a Life. Tu tarea es ayudar a las personas con la información sobre la elegibilidad”. Esta instrucción de texto contiene el nombre de la empresa, el nombre del agente y, lo que es más importante, lo que se encuentra dentro de su alcance, que Dialogflow usa para generar la respuesta del agente.
¡Bien hecho! Hasta ahora, estás usando 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 generador al mismo contenido para tomar decisiones fundamentadas.
6. Configura el agente para la prueba de elegibilidad
Nuestra próxima tarea es diseñar el agente para determinar la elegibilidad del usuario para donar sangre. Existen requisitos estrictos que los donantes deben cumplir, como la edad, el peso, las condiciones existentes, los viajes recientes, etc. En el alcance de este codelab, solo consideraremos la edad y el peso. Un generador usará los modelos grandes de lenguaje (LLM) de Google para tomar decisiones fundamentadas de forma dinámica en función del 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 del agente existente 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 maneje "sí" y "no" de respuestas ante incidentes. Para comenzar, crea un intent confirmation.yes y un intent confirmation.no. Sigue estos lineamientos sobre la reutilización de intents.
- Luego, en la Página de inicio, crea una ruta para el intent confirmation.yes que pasa a una nueva página Cuestionario de elegibilidad.
- Como mencionamos antes, simplificaremos el cuestionario y solo consideraremos la edad y el peso del usuario para determinar si es apto para donar o no. Abre la página Cuestionario de elegibilidad, agrega un nuevo parámetro de formulario age-weight y elige
@sys.any
como el tipo de entidad. Proporciona"What is your age and weight?"
como la entrega inicial del mensaje. Queremos recopilar datos de edad y peso a la 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 generativos de lenguaje grande (LLM) más recientes de Google durante la entrega de Dialogflow CX. Generadores para generar respuestas de agentes en el entorno de ejecución. Un generador puede manejar respuestas genéricas que implican 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 Administrar, selecciona Generadores y haz clic en Crear nuevo.
- A continuación, proporciona un nombre visible descriptivo y escribe la instrucción de texto. Deja la configuración predeterminada del control 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 tiempo de ejecución. Debe ser una pregunta o solicitud clara para que el modelo genere una respuesta satisfactoria. Puedes usar marcadores de posición de instrucciones especiales integrados en el generador en tu instrucción de texto:
$conversation
La conversación entre el agente y el usuario, sin incluir la última declaración del usuario.$last-user-utterance
La última declaración del usuario.
La instrucción de texto que configuraste espera que el usuario proporcione la edad y el peso en un turno de conversación (la `$last-user-statement``).
Usa el generador en la entrega y configura todos los parámetros obligatorios
- En la página Cuestionario de elegibilidad, agrega una ruta nueva que se producirá cuando se completen todos los parámetros. Ingresa el requisito de 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 Agregar generador y selecciona el generador Elegibilidad para la donación de sangre. 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 probarlo todo.
7. Vuelve a probar tu agente
Haz clic en Test Agent para volver a abrir el simulador.
En el simulador, inicia una nueva conversación con el agente. Primero pregunta sobre los requisitos de edad y, luego, realiza el cuestionario de elegibilidad. Prueba la categoría "apto" ruta, así que introduce una edad entre 18-75 y un peso superior a 50 Kg.
Luego, comprueba que la verificación de elegibilidad falle cuando no se cumpla uno o ambos requisitos.
Genial, el generador funciona como se esperaba. ¿O no? ¿Qué sucede si el usuario proporciona la edad, pero no el peso (o viceversa)?
8. Ajuste de mensaje del generador
Recopilar la edad y el peso de hace uno no parece funcionar, a menos que se proporcionen la edad y el peso. En su lugar, debemos crear un formulario que recopile ambos valores como parámetros de entidad. Para que la instrucción sea contextual de todos los requisitos de elegibilidad (como la edad y el peso), podemos usar marcadores de posición agregando $ antes de la palabra. Más adelante, asociaremos estos marcadores de posición de instrucciones del generador con los 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 Cuestionario de elegibilidad 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 obligatorios. Proporciona las entregas iniciales de instrucciones, comoHow old are you?
yWhat is your correct weight?
. Guarda todos los cambios.
- Antes de poder cambiar la instrucción de texto del generador, ya que vamos a agregar dos nuevos marcadores de posición personalizados, primero debemos quitar el generador de la entrega de rutas. Haz clic en Guardar.
- Ve a la pestaña Manage, selecciona Generators y actualiza el mensaje de texto del generador Blood Donation Eligibility con:
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 de los parámetros de edad y peso, sino que también cambiamos la última oración para que pueda generar un correo electrónico formal para el usuario con el resultado oficial del cuestionario de elegibilidad.
- En la página Cuestionario de elegibilidad, selecciona la ruta y expande la sección Generators del panel Fulfillment. Luego, haz clic en Agregar generador y selecciona el generador de elegibilidad para la donación de sangre. Después de seleccionar el generador, debes asociar los nuevos marcadores de posición de instrucciones con los parámetros de sesión correspondientes. Además, debes volver a configurar el parámetro de salida. Haz clic en Guardar.
- Vuelve a probar el agente. La verificación de elegibilidad ahora tiene en cuenta la edad y el peso, y la redacción cambió de un tono informal a una respuesta más cortés que está lista para enviarse sin ninguna interacción humana potencial.
9. Felicitaciones
Felicitaciones por completar este codelab.
Hoy investigamos los generadores en el contexto de los cuestionarios de elegibilidad. Ya viste que los generadores usan LLM para generar respuestas de agentes y, cuando se basan en 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.
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:
- Para evitar cargos innecesarios de Google Cloud, usa la consola de Google Cloud y borra tu proyecto si no lo necesitas.
- Si usaste un proyecto existente de Google Cloud, borra los recursos que creaste para evitar que se apliquen cargos a 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, navega a la página de detalles del servicio de la API de Discovery Engine y haz clic en Inhabilitar API y confirma. Luego, navega a la página Detalles del servicio de la API de Dialogflow y haz clic en Inhabilitar API y confirma la acción.
Más información
Sigue aprendiendo sobre la IA conversacional y la IA generativa con estos recursos y guías:
- 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
- IA generativa en Google Cloud
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.