Los generadores usan los modelos grandes de lenguaje (LLM) generativos más recientes de Google y las solicitudes que proporcionas para generar el comportamiento y las respuestas del agente en el tiempo de ejecución. Vertex AI proporciona los modelos disponibles.
Un generador te permite realizar una llamada a un LLM de forma nativa desde Dialogflow CX sin necesidad de crear tu propio webhook externo. Puedes configurar el generador para que haga algo que normalmente le pedirías a un LLM.
Los generadores son excelentes para tareas como resumen, extracción de parámetros, transformaciones de datos, etc.; consulta los ejemplos a continuación.
Limitaciones
En la actualidad, esta función se encuentra disponible para agentes en cualquier lenguaje de Dialogflow. Ten en cuenta que los modelos disponibles pueden tener limitaciones de lenguaje más restrictivas. Consulta Vertex AI para obtener más información.
Comprende los conceptos de los generadores
La documentación de Vertex AI contiene información que es importante comprender cuando se crean generadores para Dialogflow:
Define un generador
Para crear un generador, sigue estos pasos:
- Ir a la consola de Dialogflow CX
- Selecciona tu proyecto de Google Cloud.
- Selecciona el agente.
- Haz clic en la pestaña Administrar.
- Haz clic en Generadores.
- Haz clic en Crear nueva.
- Ingresa un nombre visible descriptivo para el generador.
- Ingresa la instrucción de texto, el modelo y los controles como se describe en los conceptos.
- Haz clic en Guardar.
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.
Para que la instrucción sea contextual, marca palabras como marcadores de posición agregando una $
antes de la palabra. Más adelante, puedes asociar estos marcadores de posición del mensaje del generador con parámetros de sesión en la entrega y se reemplazan por los valores de los parámetros de sesión durante la ejecución.
![Define un generador](https://cloud.google.com/static/dialogflow/cx/docs/images/generator_define.png?authuser=3&hl=es)
Hay marcadores de posición de mensajes de generador especiales que no es necesario asociarlos con parámetros de sesión. Estos marcadores de posición de mensajes del generador integrados se
Término | Definición |
---|---|
$conversation |
La conversación entre el agente y el usuario, sin incluir la última declaración de usuario. |
$last-user-utterance |
La última declaración del usuario. |
Usa un generador en las entregas
Puedes usar generadores durante la entrega (en Rutas, Controladores de eventos, Parámetros y mucho más).
Ve a la sección Generadores del panel Entrega y expándela. Luego, haz clic en Agregar generador. Ahora puedes seleccionar un generador predefinido o definir uno nuevo.
Después de seleccionar un generador, debes asociar los marcadores de posición de los mensajes del generador de la instrucción con los parámetros de sesión. Además, debes definir el parámetro de salida que contendrá el resultado del generador después de la ejecución.
![Usa un generador](https://cloud.google.com/static/dialogflow/cx/docs/images/generator_use.png?authuser=3&hl=es)
Ten en cuenta que puedes agregar varios generadores en una entrega, los cuales se ejecutan en paralelo.
El parámetro de salida se puede usar más adelante, por ejemplo, en la respuesta del agente.
![Usar salida del generador](https://cloud.google.com/static/dialogflow/cx/docs/images/generator_answer.png?authuser=3&hl=es)
Prueba un generador
La función de generador se puede probar directamente en el simulador.
![Generador de pruebas en el simulador](https://cloud.google.com/static/dialogflow/cx/docs/images/generator_test.png?authuser=3&hl=es)
Ejemplos
En esta sección, se proporcionan ejemplos de casos de uso para generadores.
Resumen de contenido
En este ejemplo, se muestra cómo resumir contenido.
Instrucció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. Observa cómo podemos especificar de forma explícita los prefijos de los turnos de conversación en el historial y agregar la declaración $last-user-utterance porque no se incluye en $conversation.
Instrucción:
Your goal is to summarize a given conversation between a Human and an AI.
Conversation:
${conversation USER:"Human:" AGENT:"AI:"}Human: $last-user-utterance
A concise summary of the conversation in 1 or 2 sentences is:
Mensaje resuelto:
Para una conversación de ejemplo, el mensaje resuelto que se envía al modelo generativo podría ser el siguiente:
Your goal is to summarize a given conversation between a Human and an AI.
Conversation:
AI: Good day! What can I do for you today?
Human: Hi, which models can I use in Dialogflow's generators?
AI: You can use all models that Vertex AI provides!
Human: Thanks, thats amazing!
A concise summary of the conversation in 1 or 2 sentences is:
Formato Markdown
En este ejemplo, se muestra cómo darle 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.
Primero, simplemente puedes confiar en el conocimiento interno del modelo generativo para responder la pregunta. Sin embargo, ten en cuenta que el modelo solo proporcionará una respuesta basada en la información que fue parte de sus datos de entrenamiento. No hay garantía de que la respuesta sea verdadera o actualizada.
Haz preguntas con autoconocimiento
Your goal is to politely reply to a human with an answer to their question.
The human asked:
$last-user-utterance
You answer:
Hacer preguntas para responder con la información proporcionada
Sin embargo, si quieres que el modelo responda con base en la información que proporciones, puedes agregarlo a la instrucción. Esto funciona si no hay demasiada información que desees proporcionar (p.ej., un pequeño menú de restaurante 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 is 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$
## Deserts
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:
Solicita respuestas a preguntas con la información proporcionada de forma dinámica
A menudo, la información en la que deseas que el modelo base sus respuestas es demasiado para pegarla en la instrucció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. Puedes guardar el resultado de ese sistema en un parámetro y conectarlo a un marcador de posición en el mensaje.
# Instructions
Your goal is to politely answer questions based on the provided information.
If you cannot answer the question given the provided information, you plitely
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, tiene sentido usar un modelo generativo que se entrenó específicamente para generar código.
Mensaje
# 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 manejar la elevación a un agente humano. Las dos últimas instrucciones en la instrucción evitan que el modelo sea demasiado detallado.
Instrucció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 búsquedas
En este ejemplo, se muestra cómo optimizar una búsqueda de Google proporcionada por el usuario.
Instrucció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 del cliente
En este ejemplo, se muestra cómo recuperar información y buscar datos en formato JSON o string. Por lo general, los parámetros de sesión de Dialogflow usan estos formatos.
Instrucció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:
Actualiza un objeto JSON
En este ejemplo, se muestra cómo aceptar un objeto JSON de entrada del usuario (o webhook) y, luego, manipular el objeto según la solicitud del usuario.
Instrucció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.