1. Descripción general
Última actualización: 07/08/2023
Qué compilarás
En este codelab, crearás, implementarás y configurarás un agente virtual simple en Dialogflow CX para ayudar a buzos que viajan con reservas grupales y chárteres privados. El agente virtual usará la IA generativa y los modelos de lenguaje grandes (LLMs) generativos más recientes de Google para generar respuestas de agentes virtuales.
Qué aprenderás
- Cómo habilitar las APIs pertinentes
- Cómo Dialogflow completa previamente de forma automática los valores de los parámetros de los formularios de página a partir de los parámetros de intents
- Cómo configurar controladores de eventos en Dialogflow
- Cómo habilitar la respuesta generativa de respaldo en los controladores de eventos de no coincidencia que se usan en los flujos y durante el llenado de parámetros
- Cómo configurar tu propia instrucción de texto para manejar situaciones conversacionales básicas y, también, específicas del agente
- Cómo escribir buenas descripciones de intents y parámetros para generar controladores de repeticiones de instrucciones para los parámetros obligatorios (además de las repeticiones de instrucciones definidas por el usuario)
- Cómo probar tu agente y simular las preguntas de los clientes que activan la respuesta generativa de respaldo
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 Cloud Console
- Abre la consola de Google Cloud en tu navegador.
- En la consola de Google Cloud, navega a la Biblioteca de APIs para explorar las APIs y los servicios que se pueden habilitar.
- En la barra de búsqueda que se encuentra en la parte superior de la página Biblioteca de APIs, busca
Dialogflow APIy, luego, haz clic en el servicio resultante. - Haz clic en el botón Habilitar para habilitar la API de Dialogflow en tu proyecto de Google Cloud.
Usa la CLI de gcloud (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 CX de Dialogflow y, luego, mejorar.
Para descargar el código fuente, sigue estos pasos:
- Abre una pestaña nueva del navegador, ve al repositorio del agente y clónalo desde una línea de comandos.
- 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.jsony, por último, explora las páginas de flujo, los intents y las entidades.
3. Crea 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 en este codelab.
- En tu navegador, ve a la consola de Dialogflow CX.
- Selecciona el proyecto de Google Cloud que deseas usar o crea uno nuevo.
- 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 parámetros según tus necesidades.
Crea un agente nuevo de Dialogflow CX
- Para restablecer el agente descargado del 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.

- Selecciona la opción Build your own para el agente.

- Completa el formulario con la configuración del agente que se muestra a continuación y haz clic en Create para crear el agente.
- Como nombre visible, elige
Divebooker. - Como ubicación, elige
us-central1. - Selecciona tu zona horaria preferida.
- Selecciona
en - Englishcomo idioma predeterminado
- Dialogflow abrirá automáticamente el agente por ti. ¡Aún no terminamos!
Restablece el agente Divebooker
- Vuelve a la página de la lista de agentes y busca el agente que acabas de crear. Haz clic en la opción
y, luego, en el botón Restore. - Selecciona la opción Upload y, luego, arrastra o selecciona el archivo ZIP que descargaste previamente del repositorio de GitHub.
- Haz clic en el botón Restaurar para importar el agente que te proporcionamos.

¡Bien hecho! Terminaste de crear tu agente virtual de reservas de buceo que está listo para ayudar a tus clientes. En la siguiente sección, lo probarás y comprobarás su capacidad para responder preguntas de los usuarios y ayudar con las solicitudes de reserva.
4. Prueba el agente
Dialogflow proporciona un simulador integrado para chatear con tus agentes y descubrir errores. Para 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, analizaremos el motivo por el que el agente da una respuesta determinada. Comencemos con la primera.
Intent no resuelto
- En la consola de Dialogflow y desde tu agente, haz clic en Test Agent para abrir el Simulador.

- Escríbele un saludo a tu agente, como
Hello, y pregúntalewhat is a liveaboard?. La pregunta no coincide con ningún intent, por lo que se muestra una instrucción genérica como "Lo siento, no sé cómo ayudarte". Puedes verificar que se invocó el evento integrado sys.no-match-default inspeccionando la respuesta original en el simulador.

Desplázate hacia abajo casi hasta el final de la respuesta JSON. Observa que, cuando busca un intent que coincida, Dialogflow determina que es NO_MATCH y genera un evento de no coincidencia.

- Cambia a la pestaña Create y abre la Start Page del flujo Liveaboards.

De forma predeterminada, cada flujo tiene controladores de eventos para los eventos integrados no-match y no-input. Estos controladores de eventos se crean automáticamente cuando creas un flujo y no se pueden borrar.
- Haz clic en el controlador de eventos sys.no-match-default y desplázate hacia abajo hasta la sección Agent responses. 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.

Ahora, pasemos al camino ideal.
El camino ideal
En este segundo caso, simula ser un buzo que quiere reservar un crucero de buceo para un grupo de 12 personas a las islas Galápagos en julio del próximo año.
- En el panel Simulator, haz clic en el ícono Reset para iniciar una nueva conversación con el agente.


- Dile al agente que quieres reservar un vuelo chárter a las islas Galápagos y proporciona los detalles de tu viaje. No es necesario que uses las mismas instrucciones que se indican a continuación. ¡Experimenta!

- Abre la Start Page 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 a la que debe pasar cuando se encuentra una coincidencia con este intent.

- Cierra la definición de Route y expande la página Collect Further Infor. Observa la entrega de la entrada y la lista de parámetros.

Para cada página de Dialogflow CX, puedes definir un formulario, que es una lista de parámetros que se deben recopilar del usuario final para la página. Ten en cuenta que el agente no preguntó por el destino del viaje porque lo pasamos como parte de la entrada inicial y destination también es un parámetro del intent. Cuando una página se activa en un principio, 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 la instrucción correspondiente.
- Cambia a la pestaña Manage y haz clic en el intent head.send group request en la sección Intents. Mira las frases de entrenamiento proporcionadas para este intent y las partes anotadas de las frases de entrenamiento.

- Considera la frase de entrenamiento "I need to organize a trip to Costa Rica for 15 divers". "Costa Rica" se anotó con destination y "15" con number-of-guests. Cuando anotas fragmentos de una frase de entrenamiento, Dialogflow reconoce que estos fragmentos son solo ejemplos de valores reales que proporcionarán los usuarios finales en el entorno de ejecución. Por eso, para la entrada inicial "Do you offer charters to the Galapagos Islands?", Dialogflow extrajo el parámetro de destino de "Islas Galápagos".
A continuación, veremos qué sucede si no proporcionamos al agente una entrada válida cuando se le pide que complete un parámetro de formulario.
Entrada no válida
- En el panel Simulator, haz clic en el ícono Reset para iniciar una nueva conversación con el agente.
- Expresa la intención de hacer una reserva grupal. Esta vez, no le digas al agente adónde quieres ir y, cuando te pregunte por un destino, responde con un valor aleatorio que no sea Costa Rica, Galapagos o México.

- En la pestaña Manage, haz clic en Entity types en la sección Resources. Observa las dos pestañas: en la pestaña System, puedes encontrar las entidades del sistema que usa tu agente en este momento. La pestaña Custom proporciona la lista de las entidades personalizadas creadas para los datos de coincidencia específicos de este agente.

- Haz clic en la entidad destination para descubrir qué valores coinciden con la entidad. "Europe" no es una de las entradas ni tampoco un sinónimo.
- En el diagrama de flujo, expande la página Collect Further Info que contiene los parámetros del formulario. Haz clic en el parámetro destination.
- En el panel de parámetros, desplázate hacia abajo hasta la sección Reprompt event handlers y, luego, haz clic en el controlador de eventos No-match default.
Este controlador de eventos a nivel de parámetros está diseñado, en particular, para manejar entradas de usuario final no válidas cuando se completan formularios. Como "Europa" es una entrada inesperada, se invocó un evento sys.no-match-default y se llamó al controlador de repetición de instrucción correspondiente definido para este evento. En la sección Agent says, se enumeran dos mensajes alternativos de repetición de la instrucción.

¡Muy bien! Estos casos de prueba representan situaciones comunes que se espera que el agente maneje de manera adecuada. Muy a menudo, los usuarios hacen preguntas que los bots no pueden responder o realizan solicitudes que los bots no pueden completar. Es muy complejo diseñar para la cola larga, es decir, fuera de los caminos más habituales que la mayoría de los usuarios seguirán. Piensa en todo lo que puede salir mal en una conversación y en todos los caminos inesperados o no compatibles que los usuarios podrían tomar.
Los avances en el reconocimiento de voz automático (ASR) significan que casi siempre sabemos exactamente lo que dijeron los usuarios. Sin embargo, determinar lo que los usuarios quisieron decir sigue siendo un desafío. A menudo, las expresiones no se pueden entender de forma aislada, sino solo en contexto. En la siguiente sección de este codelab, exploraremos cómo los modelos de lenguaje grandes (LLM) generativos más recientes de Google pueden ayudar a retomar el diálogo y avanzar en la conversación.
5. Habilita la respuesta generativa de respaldo
¿Qué es la función de respuesta generativa de respaldo?
La función de respuesta generativa de respaldo es una función de Dialogflow CX que usa los modelos de lenguaje grandes (LLM) de Google para generar respuestas de agentes virtuales.
¿Cómo ayuda?
Entre los casos de uso clave, hay una serie de solicitudes de los usuarios que son algo comunes, como repetir lo que dijo el agente en caso de que el usuario no lo haya entendido, mantenerse en línea cuando el usuario lo pide y resumir la conversación. En la primera prueba que hicimos, el agente no pudo responder la pregunta "What is a liveaboard?" porque no creamos un intent para ella ni diseñamos el flujo para manejar ese tipo de preguntas genéricas relacionadas con el buceo y los cruceros de buceo.
Incluso con intents sólidos, aún hay margen de error. Los usuarios pueden salirse del guion permaneciendo en silencio (error de falta de entrada) o diciendo algo inesperado (error de falta de coincidencia). Si bien es mejor evitar que se produzcan errores que manejarlos después de que ocurren, los errores no se pueden evitar del todo. Las instrucciones genéricas como "Sorry I'm not sure how to help" o las soluciones mínimamente viables similares a menudo no bastan. Las instrucciones de error deben inspirarse en el principio de cooperación, según el cual la comunicación eficaz se basa en la suposición de que existe un trasfondo de cooperación entre los participantes de la conversación.
En la siguiente sección, veremos cómo se puede configurar la función de respuesta generativa de respaldo para aumentar la cobertura de los intents y simplificar el manejo de errores para una mejor experiencia del cliente.
Habilita la respuesta generativa de respaldo para el evento de no coincidencia de todo el flujo
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.
Puedes habilitar la respuesta generativa de respaldo en tu agente en los controladores de eventos de no coincidencia, que se pueden usar en la entrega de flujos, páginas o parámetros.
Comenzaremos por habilitar la respuesta generativa de respaldo para todo el evento no-match-default del flujo Liveaboards.
- Expande la Start Page del flujo.
- Haz clic en sys.no-match-default en Event handlers.
- Marca Enable generative fallback en Agent responses y, luego, haz clic en Save.


Habilita la respuesta generativa de respaldo en eventos específicos de no coincidencia
Ahora queremos habilitar la respuesta generativa de respaldo para manejar entradas no válidas cuando el agente pregunta por la cantidad de pasajeros:
- Abre la página Collect Further Info que contiene los parámetros del formulario. Haz clic en el parámetro number-of-guests.
- Navega al controlador de eventos No-match de destino (desplázate hacia abajo hasta la sección Reprompt event handlers y, luego, haz clic en el controlador de eventos No-match default).

- Marca Enable generative fallback en Agent responses.

- Por último, haz clic en Guardar.
- Ahora, repite los pasos exactos para habilitar la respuesta generativa de respaldo para destination y email-address.
¡Muy bien! Habilitaste la respuesta generativa de respaldo para manejar intents inesperados y valores de parámetros no válidos. A continuación, veremos cómo configurar la función de respuesta generativa de respaldo con una instrucción de texto que le indica al LLM cómo responder.
6. Configura la respuesta generativa de respaldo
La función de respuesta generativa de respaldo pasa una solicitud a un modelo de lenguaje grande para producir la respuesta generada. La solicitud toma la forma de una instrucción de texto que es una mezcla de lenguaje natural y de información sobre el estado actual del agente y de la conversación. La función se puede configurar de varias maneras:
- Elige una instrucción específica (ya definida) para generar la respuesta.
- Define una instrucción personalizada.
Elige una instrucción ya definida
- En la consola de Dialogflow CX, haz clic en Agent Settings.

- Ve a la pestaña ML y, luego, a la pestaña secundaria Generative AI.

La función incluye dos instrucciones de plantilla listas para usar: la plantilla Default (que no es visible) y la plantilla Example, que te guía cuando escribes tus propias instrucciones.
- Selecciona la plantilla Example y haz clic en el botón Edit en el lado derecho del menú desplegable para inspeccionarla.
Con la instrucción predefinida, el agente virtual puede manejar situaciones conversacionales básicas. Por ejemplo:
- Saludar al usuario y despedirse de él
- Repetir lo que dijo el agente en caso de que el usuario no lo haya entendido
- Mantenerse en línea cuando el usuario lo solicite
- Resumir la conversación
Intentemos definir una instrucción de texto específica para el agente Divebooker.
7. Define tu propia instrucción
- Copia la siguiente instrucción y pégala en el área Text prompt.
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:
- Elige Save as a new template para almacenar la nueva instrucción como una plantilla nueva (elige un nombre nuevo para la plantilla) y Save en la esquina inferior derecha del panel.

- Para que la instrucción recién creada sea la instrucción activa, también debes hacer clic en Save en Settings.

Cuando escribas tu propia instrucción de texto, procura que sea clara, concisa y prescriptiva. 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 se entrenan para seguir instrucciones, por lo que cuanto más se parezca tu instrucción a una indicación precisa, mejores resultados obtendrás. Crea una instrucción y, según los resultados que obtengas, itera para mejorarla.
Para crear instrucciones eficaces, sigue estas prácticas recomendadas:
- Proporciona una descripción clara y concisa de la tarea que quieres que realice el LLM. Ni más ni menos. Debe ser completa y breve.
- Además, la instrucción debe ser específica y estar bien definida, y evitar el lenguaje vago o ambiguo.
- Divide las tareas complejas en partes más pequeñas y fáciles de manejar. Si divides la tarea en pasos más pequeños, puedes ayudar al modelo a enfocarse en una cosa a la vez y reducir la probabilidad de errores o confusión.
- Para mejorar la calidad de las respuestas, agrega ejemplos en tu instrucción. El LLM aprende en contexto de los ejemplos que se proporcionan 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:
$conversationLa conversación entre el agente y el usuario, sin incluir el último enunciado del usuario. Puedes adaptar los prefijos de turno (p. ej.: "Humano", "IA" o "Tú", "Agente") en la instrucción de texto$last-user-utteranceEl último enunciado del usuario.$flow-descriptionEs la descripción del flujo activo.$route-descriptionsLas descripciones de los intents activos
Ahora que tenemos una instrucción de texto inicial, la siguiente tarea es asegurarnos de que el flujo y los intents tengan buenas descripciones.
8. Agrega descripciones de flujo y de intent
Agrega la descripción del flujo
- Para agregar una descripción al flujo Liveaboards, accede a la configuración del flujo colocando el cursor del mouse sobre el flujo en la sección Flows.

- Haz clic en el botón de opciones
. - Selecciona Flow settings y agrega la siguiente descripción (o una similar):
search, find and book liveaboards.

- Haga clic en Guardar.
Agrega la descripción del intent
- Ahora, agreguemos una buena descripción para el intent head.send.group.request. Cambia a la pestaña Manage, elige Intent en la sección Resources y selecciona el intent head.send.group.request.
- 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
Observa que la descripción contiene información importante, como la cantidad mínima y máxima de pasajeros permitidos en un barco. Recuerda esto.
- Haga clic en Guardar.
Y eso es todo. Habilitaste la respuesta generativa de respaldo en los controladores de eventos de no coincidencia para la entrega del flujo y los parámetros. También definiste tu propia instrucción de texto que la función de respuesta generativa de respaldo pasa a un modelo de lenguaje grande para producir respuestas generativas.
En la siguiente sección, volverás a probar tu agente para ver cómo puede responder las mismas preguntas difíciles que antes.
9. Vuelve a probar tu agente
Ahora que configuraste y habilitaste la respuesta generativa de respaldo en el agente virtual, puedes hacer preguntas difíciles similares y ver cómo maneja las respuestas.
Haz clic en Test Agent para abrir el simulador de nuevo.

Pregúntale de nuevo al agente sobre los cruceros de buceo y los viajes de buceo. A partir de ahora, observa cómo cada diálogo tiene mensajes definidos por el usuario, así como respuestas generadas destacadas en los cuadros rojos.

¿Obtuviste una respuesta informativa en lugar de una repetición de instrucción genérica? ¡Genial! Después de proporcionar una descripción clara y concisa de las tareas que quieres que el agente realice (en la instrucción de texto y en la descripción del flujo), tu bot ahora es mucho más inteligente a la hora de responder preguntas detalladas sin crear intents específicos. Tu cliente agradecerá que el agente pueda darle una respuesta más informada en lugar de una respuesta inviable.
No te quedes con las ganas y desafía al agente. Pregúntale si puede ayudarte a encontrar un curso de buceo, ya que aún no tienes la certificación.

Así es, por el momento no hemos diseñado el agente para que te ayude con cursos de buceo. ¿Cómo lo sabe el agente? En la instrucción de texto, indicamos claramente con qué puede y con qué no puede ayudar el agente. "Por el momento, no puedes ayudar a los clientes con buceo en tierra y cursos. You cannot recommend local dive shops and diving resorts"
Ahora, vuelve a probar la situación ideal y enriquece la conversación. Veamos cómo cambió la experiencia.


Cuando Dialogflow coincide con un intent o intenta recopilar un parámetro según el diseño del flujo, mostrará las respuestas definidas al momento de diseñarlo. Cuando el usuario se sale del guion y solicita un resumen de los detalles del viaje o se ofrece a proporcionar su número de teléfono, entra en juego la función de respuesta generativa de respaldo.
¡Genial! Volviste a probar la situación ideal y esperamos que hayas tenido una conversación agradable y natural con el agente, lo más parecida posible a la experiencia que tendrías con un agente humano.
Desafortunadamente, las cosas pueden salir mal en una conversación. Hagamos una prueba diferente. Esta vez, cuando te pregunten la cantidad de pasajeros, di un número mayor que 15.


Hay un par de cosas que debemos destacar aquí:
- ¿Por qué 20 no es un número válido? Porque establecimos un límite en la cantidad de pasajeros permitidos como parte de la descripción del intent: "El agente recopila información como el período de salida, el destino y la cantidad de pasajeros ***(mín. 4, máx. 15 personas)****, datos de contacto*". La respuesta generativa que devolvió el LLM, "Sorry, we can only assist with group bookings of up to 15 guests", es perfectamente congruente con las restricciones que le dimos sobre la cantidad de pasajeros. Para reforzar esto, number-of-guests es una entidad RegExp personalizada que solo coincide con números incluidos en el rango de 4 a 15.
- La conversación continúa porque, al final, el usuario sigue interesado en obtener una oferta para 15 buzos. Esto sucede con frecuencia en las conversaciones naturales, ya que cambiamos de opinión con bastante frecuencia. Observa cómo el agente coopera y guía suavemente al usuario de vuelta al camino ideal.
El diseño de conversaciones implica crear un guion para la mitad de un diálogo, con la esperanza de que sea lo suficientemente sólido para que cualquiera pueda intervenir y representar la otra mitad. Cuando se diseña para la cola larga, los desarrolladores deben enfocarse en lo que el usuario podría decir en cada paso de su diálogo para definir sus rutas, controladores y parámetros. Por eso, agregamos la función de respuesta generativa de respaldo a Dialogflow CX: para que los desarrolladores se enfoquen en los principios de diseño de la conversación y menos en los detalles de implementación para brindar experiencias conversacionales sólidas a los usuarios.
Hagamos una prueba más. Esta vez, desafía al bot con un lugar que no está en la lista de destinos disponibles, como las Maldivas. Luego, veremos rápidamente lo que sucede en segundo plano.

Ten en cuenta que, como también habilitamos la respuesta generativa de respaldo en el evento no-match para el parámetro destino, se envía una solicitud a un modelo de lenguaje grande para producir la respuesta generada. Se ignoran las respuestas predeterminadas habituales (en Agente says).
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 personalizada que configuramos en Dialogflow con los marcadores de posición resaltados 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 siguiente cuadro de texto, incluí la entrada que recibió el modelo de lenguaje grande 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, la respuesta que se envía al usuario la genera el modelo y se basa en la información que proporcionamos como parte de la descripción del intent: "The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands".
Modifica la lista de frases prohibidas
La función respuesta generativa de respaldo se puede configurar de varias maneras:
- Elige una instrucción específica (ya definida) para generar la respuesta.
- Define una instrucción personalizada.
- Cambia la lista de frases prohibidas.
Hasta ahora, vimos las dos primeras formas. Exploremos la tercera.
- En Agent Settings, ve a la pestaña ML y, luego, a la subpestaña Generative AI.
- En la sección Banned phrases, agrega las siguientes oraciones a la lista:
Dangerous countryHateful placeMedical assistance- Haz clic en Guardar.
- Haz clic en el ícono Reset y vuelve a probar la última situación. En lugar de proporcionar un hermoso destino de buceo en todo el mundo, ingresa una de las frases prohibidas.

El mensaje 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 frases consideradas inseguras, la generación no se realizará correctamente y, en su lugar, se emitirá la respuesta prescrita habitual (en Agente says en la el mismo entrega).
¡Excelente! Cubrimos una variedad de situaciones conversacionales en las que las respuestas generativas pueden marcar una diferencia real. ¡No dudes en seguir probando!
10. Felicitaciones
¡Felicitaciones por completar el codelab! ¡Es hora de relajarse!

Creaste correctamente un agente virtual y habilitaste la respuesta generativa de respaldo en los controladores de eventos no-match que se usan en los flujos y durante el llenado de parámetros.
La función de respuesta generativa de respaldo combinada con buenas descripciones de flujo y de intents puede proporcionar respuestas específicas y cooperativas del agente en lugar de instrucciones genéricas como "Lo siento, no sé cómo ayudarte" o "Lo siento, ingresaste una opción no válida". Las instrucciones de error generadas por modelos de lenguaje grandes pueden guiar suavemente a los usuarios de vuelta a las rutas ideales o restablecer sus expectativas sobre lo que es y no es posible.
No dudes en probar otras situaciones conversacionales y explorar las otras funciones disponibles relacionadas con Dialogflow CX y la IA generativa.
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:
- 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:
- Documentación de Dialogflow CX
- Documentación sobre la respuesta generativa de respaldo
- La IA generativa en Google Cloud
- Introducción a PaLM
Licencia
Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.
