Os geradores usam os mais recentes grandes modelos de linguagem (GMLs) generativos da Google e comandos que fornece para gerar o comportamento e as respostas do agente em tempo de execução. Os modelos disponíveis são fornecidos pelo Vertex AI.
Um gerador permite-lhe fazer uma chamada a um GML nativamente a partir de agentes conversacionais (Dialogflow CX) sem ter de criar o seu próprio webhook externo. Pode configurar o gerador para fazer tudo o que normalmente pediria a um MDG.
Os geradores são excelentes em tarefas como a criação de resumos, a extração de parâmetros, as transformações de dados, etc. Consulte os exemplos abaixo.
Limitações
Esta funcionalidade está disponível para agentes em qualquer idioma do Dialogflow, embora os modelos disponíveis possam ter limitações de idioma mais restritivas. Consulte o Vertex AI para mais informações.
Compreenda os conceitos do gerador
A documentação do Vertex AI contém informações importantes para compreender quando criar geradores para o Dialogflow:
- Modelos (modelos de base da Google e versões e ciclo de vida dos modelos)
- Comandos
- Controlos (denominados "valores de parâmetros" no Vertex AI)
Defina um gerador
Para criar um gerador:
- Aceda à consola Dialogflow CX.
- Selecione o seu projeto do Google Cloud .
- Selecione o agente.
- Clique no separador Gerir.
- Clique em Geradores.
- Clique em Criar novo.
- Introduza um nome a apresentar descritivo para o gerador.
- Introduza o comando de texto, o modelo e os controlos conforme descrito nos conceitos.
- Clique em Guardar.
O comando de texto é enviado para o modelo generativo durante o preenchimento no tempo de execução. Deve ser uma pergunta ou um pedido claro para que o modelo gere uma resposta satisfatória.
Pode tornar o comando contextual marcando palavras como marcadores de posição adicionando um
$
antes da palavra. Posteriormente, pode associar estes marcadores de posição de comando do gerador a parâmetros de sessão no preenchimento, e estes são substituídos pelos valores dos parâmetros de sessão durante a execução.

Existem marcadores de posição de comandos do gerador especiais que não têm de ser associados a parâmetros de sessão. Estes marcadores de posição de comandos do gerador integrados são
Vigência | Definição |
---|---|
$conversation |
A conversa entre o agente e o utilizador, excluindo a última expressão do utilizador e as expressões do agente posteriormente. |
$last-user-utterance |
A expressão do utilizador mais recente. |
Use um gerador no processamento
Pode usar geradores durante o processamento (em Rotas, Controladores de eventos, Parâmetros e muito mais).
Aceda à secção Geradores do painel Preenchimento e expanda-a. Em seguida, clique em Adicionar gerador. Agora, pode selecionar um gerador predefinido ou definir um novo gerador no local.
Depois de selecionar um gerador, tem de associar os marcadores de posição do comando do gerador do comando a parâmetros de sessão. Para tal, tem de
definir o parâmetro de saída que vai conter o resultado do gerador
após a execução. Introduza um nome
para o parâmetro de saída no campo Parâmetros de saída, por exemplo
things-to-do
. Este parâmetro de saída é escrito num parâmetro de sessão que pode referenciar no futuro.
Em seguida, pode usar o parâmetro de saída para fazer referência ao resultado do gerador mais tarde, por exemplo, na resposta do agente:
I'd recommend doing $session.params.things-to-do
.
Para mais informações sobre o formato e a utilização dos parâmetros, consulte a documentação de parâmetros.
Teste um gerador
A funcionalidade de gerador pode ser testada diretamente no simulador.

Exemplos
Esta secção apresenta exemplos de utilização de geradores. Uma vez que os geradores são uma tecnologia generativa baseada em modelos de linguagem (conteúdo extenso) (MDIs/CEs), os seus resultados individuais da utilização dos seguintes exemplos de comandos podem ser diferentes do resultado documentado aqui. Todos os resultados dos comandos devolvidos pela Google são de melhor esforço.
Resumo de conteúdo
Este exemplo mostra como resumir conteúdo.
Comando:
Your goal is to summarize a given text.
Text:
$text
A concise summary of the text in 1 or 2 sentences is:
Resumo das conversas
Este exemplo mostra como fornecer um resumo da conversa.
Comando:
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:
Comando resolvido:
Por exemplo, para uma conversa, o comando resolvido que é enviado ao modelo generativo pode ser:
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:
Formatação Markdown
Este exemplo mostra como formatar texto em 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
Respostas a perguntas
Esta série de exemplos mostra como usar geradores para responder a perguntas.
Primeiro, pode simplesmente confiar nos conhecimentos internos do modelo generativo para responder à pergunta. No entanto, tenha em atenção que o modelo fornece simplesmente uma resposta com base em informações que faziam parte dos respetivos dados de preparação. Não existe garantia de que a resposta seja verdadeira ou atualizada.
Comando para responder a perguntas com autoconhecimento
Your goal is to politely reply to a human with an answer to their question.
The human asked:
$last-user-utterance
You answer:
Comando para responder a perguntas com as informações fornecidas
No entanto, se quiser que o modelo responda com base nas informações que fornecer, pode simplesmente adicioná-las ao comando. Isto funciona se não quiser fornecer demasiadas informações (por exemplo, um pequeno menu de restaurante ou informações de contacto da sua 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:
Comando para responder a perguntas com informações dinâmicas fornecidas
Muitas vezes, as informações nas quais quer que o modelo baseie a resposta são demasiado extensas para serem simplesmente coladas no comando. Neste caso, pode ligar o gerador a um sistema de obtenção de informações, como uma base de dados ou um motor de pesquisa, para obter dinamicamente as informações com base numa consulta. Pode simplesmente guardar o resultado desse sistema num parâmetro e associá-lo a um marcador de posição no comando.
# 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:
Geração de código
Este exemplo mostra como usar um gerador para escrever código! Tenha em atenção que, aqui, faz sentido usar um modelo generativo que foi especificamente preparado para gerar código.
Comando
# 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:
Encaminhamento para um agente humano
Este exemplo mostra como processar o encaminhamento para um agente humano. As duas últimas instruções no comando impedem que o modelo seja demasiado detalhado.
Comando:
# 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:
Geração de consultas de pesquisa
Este exemplo mostra como otimizar uma consulta de pesquisa do Google fornecida pelo utilizador.
Comando:
# 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:
Obtenção de informações do cliente
Este exemplo mostra como realizar a obtenção de informações e pesquisar dados fornecidos no formato de string ou JSON. Estes formatos são usados frequentemente pelos parâmetros de sessão do Dialogflow.
Comando:
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:
Atualizar um objeto JSON
Este exemplo mostra como aceitar um objeto JSON de entrada do utilizador (ou webhook) e, em seguida, manipular o objeto com base no pedido do utilizador.
Comando:
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
Consulte também o Codelab Geradores.
Resolução de problemas
Se quiser depurar a funcionalidade, pode inspecionar o comando de entrada do modelo de linguagem (conteúdo extenso) resolvido no simulador da Dialogflow Console:
Clique no botão Resposta original:
Localize o campo "Entradas do MDG Generators". Leia estes campos como texto simples e verifique se a entrada do MDI/CE faz sentido. Se alguma expressão contiver
$
, examine a entrada do simulador e esclareça se o$
nos comandos é intencional (por exemplo,$
emprice is $10
seria provavelmente intencional, enquantovisit $city
provavelmente não seria e poderia implicar uma utilização incorreta ou um erro).Se não vir o campo "Entradas de MDG generativo", contacte o apoio técnico.