Generadores

Los generadores usan los modelos de lenguaje extensos (LLMs) generativos más recientes de Google y las peticiones que proporciones para generar el comportamiento y las respuestas de los agentes en tiempo de ejecución. Los modelos disponibles los proporciona Vertex AI.

Un generador te permite llamar a un LLM de forma nativa desde Conversational Agents (Dialogflow CX) sin tener que crear tu propio webhook externo. Puedes configurar el generador para que haga cualquier cosa que le pedirías a un LLM.

Los generadores son muy útiles para tareas como la creación de resúmenes, la extracción de parámetros, las transformaciones de datos, etc. Consulta ejemplos a continuación.

Limitaciones

Esta función está disponible para agentes en cualquier idioma de Dialogflow, aunque los modelos disponibles pueden tener limitaciones de idioma más restrictivas. Consulta más información sobre Vertex AI.

Descubrir los conceptos de los generadores

La documentación de Vertex AI contiene información importante que debes conocer al crear generadores para Dialogflow:

Definir un generador

Para crear un generador:

  1. Ve a la consola de Dialogflow CX.
  2. Selecciona tu proyecto de Google Cloud .
  3. Selecciona el agente.
  4. Haga clic en la pestaña Gestionar.
  5. Haz clic en Generadores.
  6. Haz clic en Crear.
  7. Introduce un nombre visible descriptivo para el generador.
  8. Introduce la petición de texto, el modelo y los controles tal como se describe en los conceptos.
  9. Haz clic en Guardar.

La petición de texto se envía al modelo generativo durante el cumplimiento en el tiempo de ejecución. Debe ser una pregunta o una solicitud clara para que el modelo genere una respuesta satisfactoria.

Puedes hacer que la petición sea contextual marcando palabras como marcadores de posición añadiendo un $ antes de la palabra. Más adelante, puede asociar estos marcadores de posición de la petición del generador con parámetros de sesión en el cumplimiento, que se sustituirán por los valores de los parámetros de sesión durante la ejecución.

Definir un generador
Definir un generador

Hay variables de sustitución de peticiones del generador especiales que no tienen que estar asociadas a parámetros de sesión. Estos marcadores de posición de peticiones de generador integrados son

Término Definición
$conversation La conversación entre el agente y el usuario, excluyendo la última expresión del usuario y las expresiones del agente posteriores.
$last-user-utterance La última expresión del usuario.

Usar un generador en la respuesta

Puedes usar generadores durante el cumplimiento (en Rutas, Gestores de eventos, Parámetros y más).

Ve a la sección Generadores del panel Cumplimiento y despliégala. A continuación, haz clic en Añadir generador. Ahora puedes seleccionar un generador predefinido o definir uno nuevo.

Después de seleccionar un generador, debe asociar los marcadores de posición de la petición del generador de la petición con los parámetros de sesión. Para ello, debes definir el parámetro de salida que contendrá el resultado del generador después de la ejecución. En el campo Parámetros de salida, escriba un nombre para el parámetro de salida (por ejemplo, things-to-do). Este parámetro de salida se escribirá en un parámetro de sesión al que podrá hacer referencia en el futuro.

Después, puedes usar el parámetro de salida para hacer referencia al resultado del generador más adelante, por ejemplo, en la respuesta del agente: I'd recommend doing $session.params.things-to-do.

Para obtener más información sobre el formato y el uso de los parámetros, consulta la documentación sobre parámetros.

Probar un generador

La función generador se puede probar directamente en el simulador.

Generador de pruebas en el simulador
Probar el generador en el simulador

Ejemplos

En esta sección se proporcionan ejemplos de casos prácticos de generadores. Como los generadores son una tecnología generativa basada en modelos de lenguaje extensos (LLMs), los resultados que obtengas al usar las siguientes peticiones de ejemplo pueden ser diferentes de los que se documentan aquí. Todos los resultados de las peticiones devueltos por Google se basan en el principio de mejor esfuerzo.

Resumen de contenido

En este ejemplo se muestra cómo resumir contenido.

Petición:

Your goal is to summarize a given text.

Text:
$text

A concise summary of the text in 1 or 2 sentences is:

Resumen de conversaciones

En este ejemplo se muestra cómo proporcionar un resumen de la conversación.

Petición:

You are an expert at summarizing conversations between a User and an Agent.
When providing the summary, always start with "Dear $email_address, the conversation summary is as follows:"
Provide a summary in a few bullet points.
Try to be as brief as possible with each bullet point,
only noting the key points of the conversation.
Output the summary in markdown format.

Conversation:
$conversation

Summary:

Petición resuelta:

Por ejemplo, en una conversación, la petición resuelta que se envía al modelo generativo podría ser la siguiente:

You are an expert at summarizing conversations between a User and an Agent.
When providing the summary, always start with "Dear joe@example.com conversation summary is as follows:"
Provide a summary in a few bullet points.
Try to be as brief as possible with each bullet point,
only noting the key points of the conversation.
Output the summary in markdown format.

Conversation:
Agent: Good day! What can I do for you today?
User: Hi, which models can I use in Conversational Agents (Dialogflow CX)'s generators?
Agent: You can use all models that Vertex AI provides!
User: Thanks, thats amazing!

Summary:

Formato de Markdown

En este ejemplo se muestra cómo dar formato al texto en Markdown.

# Instructions

You are presented with a text and your goal is to apply markdown formatting to text.

**NOTE:** Do not change the meaning of the text, only the formatting.

# Example

## Text

Generators allow you to use Googles latest generative models to format text,
or to create a summaries, or even to write code. What an amazing feature.

## Text in Markdown

*Generators* allow you to use Google's latest generative models to

*   format text
*   create a summaries
*   write code

What an amazing feature.

# Your current task

## Text

$text

## Text in Markdown

Búsqueda de respuestas

En esta serie de ejemplos se muestra cómo usar generadores para responder preguntas.

En primer lugar, puedes confiar en el conocimiento interno del modelo generativo para responder a la pregunta. Sin embargo, ten en cuenta que el modelo simplemente proporcionará una respuesta basada en la información que formaba parte de sus datos de entrenamiento. No se garantiza que la respuesta sea verdadera o esté actualizada.

Petición para responder preguntas con conocimiento propio

Your goal is to politely reply to a human with an answer to their question.

The human asked:
$last-user-utterance

You answer:

Pedir que responda a una pregunta con la información proporcionada

Sin embargo, si quieres que el modelo responda basándose en la información que le proporciones, puedes añadirla a la petición. Esta opción es útil si no quieres proporcionar demasiada información (por ejemplo, el menú de un restaurante pequeño o la información de contacto de tu empresa).

# Instructions

Your goal is to politely answer questions about the restaurant menu.
If you cannot answer the question because it's not related to the restaurant
menu or because relevant information is missing from the menu, you politely
decline to answer.

# Restaurant menu:

## Starters
Salat 5$

## Main dishes
Pizza 10$

## Desserts
Ice cream 2$

# Examples

Question: How much is the pizza?
Answer: The pizza is 10$.

Question: I want to order the ice cream.
Answer: We do have ice cream! However, I can only answer questions about the menu.

Question: Do you have spaghetti?
Answer: I'm sorry, we do not have spaghetti on the menu.

# Your current task

Question: $last-user-utterance
Answer:

Petición para responder preguntas con información proporcionada de forma dinámica

A menudo, la información en la que quieres que se base el modelo es demasiada para pegarla directamente en la petición. En este caso, puedes conectar el generador a un sistema de recuperación de información, como una base de datos o un motor de búsqueda, para recuperar la información de forma dinámica en función de una consulta. Solo tienes que guardar la salida de ese sistema en un parámetro y conectarlo a un marcador de posición en la petición.

# Instructions

Your goal is to politely answer questions based on the provided information.
If you can't answer the question given the provided information, you politely
decline to answer.

# Provided information:
$information

Question: $last-user-utterance
Answer:

Generación de código

En este ejemplo se muestra cómo usar un generador para escribir código. Ten en cuenta que, en este caso, es recomendable usar un modelo generativo que se haya entrenado específicamente para generar código.

Petición

# Instructions:

Your goal is to write code in a given programming language solving a given problem.

Problem to solve:
$problem

Programming language:
$programming-language

# Solution:

Derivación a un agente humano

En este ejemplo se muestra cómo gestionar la derivación a un agente humano. Las dos últimas instrucciones de la petición evitan que el modelo sea demasiado extenso.

Petición:

# Instructions:

You are a polite customer service agent that handles requests
from users to speak with an operator.

Based on the $last-user-utterance,
respond to the user appropriately about their request to speak with an operator.
Always be polite and assure the user that you
will do your best to help their situation.

Do not ask the user any questions.
Do not ask the user if there is anything you can do to help them.

# Answer:

Generación de consultas de búsqueda

En este ejemplo se muestra cómo optimizar una consulta de la Búsqueda de Google proporcionada por el usuario.

Petición:

# Instructions:

You are an expert at Google Search and using "Google Fu"
to build concise search terms that provide the highest quality results.
A user will provide an example query,
and you will attempt to optimize this to be the best Google Search query possible.

# Example:

User: when was covid-19 first started and where did it originated from?
Agent: covid-19 start origin

# Your task:

User: $text
Agent:

Recuperación de información de clientes

En este ejemplo se muestra cómo recuperar información y buscar datos proporcionados en formato de cadena o JSON. Estos formatos se suelen usar en los parámetros de sesión de Dialogflow.

Petición:

You are a database engineer and specialize in extracting information
from both structured and unstructured data formats like CSV, SQL, JSON,
and also plain text.

Given a $user_db, extract the information requested
by the user from the $last-user-utterance

EXAMPLE:
user_db: {'customer_name': 'Patrick', 'balance': '100'}
User: What is my current account balance?
Agent: Your current balance is 100.

Begin!

user_db: $user_db
User: $last-user-utterance
Agent:

Actualizar un objeto JSON

En este ejemplo se muestra cómo aceptar un objeto JSON de entrada del usuario (o un webhook) y, a continuación, manipular el objeto en función de la solicitud del usuario.

Petición:

You are an expert Software Engineer
that specializes in the JSON object data structure.

Given some user $update_request and existing $json_object,
you will modify the $json_object based on the user's $update_request.

EXAMPLE:
json_object = { "a": 1, "b": 123 }
User: Add a new key/value pair to my JSON
Agent: What do you want to add?
User: c: cat
Agent: { "a": 1, "b": 123, "c": "cat"}

json_object = {"accounts": [{"username": "user1", "account_number": 12345}, {"username": "user2", "account_number": 98765}], "timestamp": "2023-05-25", "version":"1.0"}
User: Add a new value for user1
Agent: What do you want to add?
User: birthday, 12/05/1982
Agent: {"accounts": [{"username": "user1", "account_number": 12345, "birthday": "12/05/1982"}, {"username": "user2", "account_number": 98765}], "timestamp": "2023-05-25", "version":"1.0"}

json_object = $json_object
User: Add a new key value to my db
Agent: What do you want to add?
User: $last-user-utterance
Agent:

Codelab

Consulta también el Codelab de generadores.

Solución de problemas

Si quieres depurar la función, puedes inspeccionar la petición de entrada resuelta del modelo de lenguaje extenso (LLM) en el simulador de la consola de Dialogflow:

  1. Haz clic en el botón Respuesta original:

    Respuesta original

  2. Busca el campo "Generators LLM Inputs" (Entradas de LLM de generadores). Lee estos campos como texto sin formato y comprueba si la entrada del LLM tiene sentido. Si alguna frase contiene $, examina la entrada del simulador y aclara si el $ de las peticiones es intencional (por ejemplo, $ en price is $10 probablemente sea intencional, mientras que visit $city probablemente no lo sea y podría implicar un uso incorrecto o un error).

  3. Si no ves el campo "Entradas de LLM generativo", ponte en contacto con el equipo de Asistencia.