Geradores

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:

Defina um gerador

Para criar um gerador:

  1. Aceda à consola Dialogflow CX.
  2. Selecione o seu projeto do Google Cloud .
  3. Selecione o agente.
  4. Clique no separador Gerir.
  5. Clique em Geradores.
  6. Clique em Criar novo.
  7. Introduza um nome a apresentar descritivo para o gerador.
  8. Introduza o comando de texto, o modelo e os controlos conforme descrito nos conceitos.
  9. 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.

Defina um gerador
Defina um gerador

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.

Gerador de testes no simulador
Teste o gerador 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:

  1. Clique no botão Resposta original:

    Resposta original

  2. 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, $ em price is $10 seria provavelmente intencional, enquanto visit $city provavelmente não seria e poderia implicar uma utilização incorreta ou um erro).

  3. Se não vir o campo "Entradas de MDG generativo", contacte o apoio técnico.