Geradores

Os geradores usam os modelos de linguagem grandes generativos (LLMs) mais recentes do Google e os comandos fornecidos por você para gerar o comportamento e as respostas do agente no momento da execução. Os modelos disponíveis são fornecidos pela Vertex AI.

Um gerador permite fazer uma chamada para um LLM de forma nativa de agentes de conversa (Dialogflow CX) sem precisar criar seu próprio webhook externo. É possível configurar o gerador para fazer tudo o que você normalmente pediria a um LLM.

Os geradores são ótimos em tarefas como resumo, extração de parâmetros, dados e assim por diante, veja os exemplos abaixo.

Limitações

Esse recurso está disponível para agentes em qualquer idioma do Dialogflow, embora os modelos disponíveis podem ter limitações de linguagem mais restritivas. Consulte a Vertex AI para saber mais informações imprecisas ou inadequadas.

Entender os conceitos do gerador

Documentação da Vertex AI contêm informações importantes ao criar geradores Para Dialogflow:

Definir um gerador

Para criar um gerador:

  1. Acesse o console do Dialogflow CX.
  2. Selecione seu projeto do Google Cloud.
  3. Selecione o agente.
  4. Clique na guia Gerenciar.
  5. Clique em Geradores.
  6. Clique em Criar novo.
  7. Insira um nome de exibição descritivo para o gerador.
  8. Insira o comando, o modelo e os controles de texto conforme descrito em diferentes.
  9. Clique em Salvar.

O comando de texto é enviado ao modelo generativo durante a execução. Deve ser uma pergunta ou solicitação clara para que o modelo gere uma satisfatória.

Você pode tornar o comando contextual marcando palavras como marcadores de posição, adicionando um $ antes da palavra. É possível associar esses marcadores de posição de solicitação do gerador a parâmetros de sessão no fulfillment. Eles são substituídos pelos valores do parâmetro de sessão durante a execução.

Definir um gerador
Definir um gerador

marcadores de posição de comando do gerador especiais que não precisam ser associados a parâmetros de sessão. Esses marcadores de posição de comando integrado do gerador são

Termo Definição
$conversation a conversa entre o agente e o usuário, excluindo o último enunciado do usuário e os enunciados do agente depois disso.
$last-user-utterance O último enunciado do usuário.

Usar um gerador no fulfillment

É possível usar geradores durante o fulfillment (em Rotas, Manipuladores de eventos, Parameters e muito mais).

Acesse a seção Geradores do painel Fulfillment e expanda. Em seguida, clique em Adicionar gerador. Selecione um gerador predefinido ou definir um novo gerador.

Depois de selecionar um gerador, associe a solicitação do gerador marcadores de posição do comando com parâmetros de sessão. Além disso, você precisa defina o parâmetro de saída que vai conter o resultado do gerador após execução.

Usar um gerador
Usar o gerador na conclusão

É possível adicionar vários geradores em um fulfillment, que são executados em paralelo.

O parâmetro de saída pode ser usado mais tarde, por exemplo, no resposta.

Usar saída do gerador
Usar a saída do gerador

Testar um gerador

O recurso generator pode ser testado diretamente no simulador.

Gerador de testes no simulador
Testar o gerador no simulador

Exemplos

Esta seção fornece exemplos de casos de uso para geradores. Como os geradores são uma tecnologia generativa baseada em modelos de linguagem grandes (LLMs), seus os resultados individuais do uso dos exemplos de comando a seguir podem ser diferentes da saída documentada aqui. Todos os resultados de comandos retornados pelo Google da melhor maneira possível.

Resumo do 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 de conversas

Este exemplo mostra como fornecer um resumo da conversa.

Instrução:

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:

Prompt resolvido:

Como exemplo de conversa, a instrução resolvida enviada 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 do Markdown

Este exemplo mostra como formatar o 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, você pode simplesmente confiar no conhecimento interno do modelo generativo para e responder à pergunta. No entanto, observe que o modelo apenas fornece uma resposta com base nas informações que faziam parte dos dados de treinamento. Não há garantia se a resposta é verdadeira ou está atualizada.

Solicitar respostas 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:

Solicitar respostas a perguntas com as informações fornecidas

No entanto, se quiser que o modelo responda com base nas informações fornecidas, basta adicioná-lo ao comando. Isso funciona quando não há muitas informações que você deseja fornecer (por exemplo, um pequeno cardápio de restaurante ou dados de contato do 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$

## 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:

Pedir respostas a perguntas com informações fornecidas de forma dinâmica

Muitas vezes, as informações que você quer que o modelo use para responder são muitas para serem coladas no comando. Nesse caso, é possível conectar o gerador a um sistema de recuperação de informações, como um banco de dados ou um mecanismo de pesquisa, para recuperar dinamicamente as informações com base em uma consulta. Basta salvar a saída desse sistema em um parâmetro e conectá-lo a um marcador de posição no prompt.

# 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ódigos

Este exemplo mostra como usar um gerador para escrever código. Observe que, aqui, usar um modelo generativo que foi treinado especificamente 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 lidar com a transferência para um agente humano. As duas últimas as instruções no comando evitam que o modelo seja muito detalhado.

Instrução:

# 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 da Pesquisa Google fornecida pelo usuário.

Instrução:

# 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:

Recuperação de informações do cliente

Este exemplo mostra como realizar a recuperação de informações e pesquisar dados fornecidos em formato string ou JSON. Esses formatos são usados com frequência pelos parâmetros de sessão do Dialogflow.

Instrução:

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 usuário (ou webhook) e manipule o objeto com base na solicitação do usuário.

Instrução:

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 de geradores.

Solução de problemas

Se você quiser depurar o recurso, poderá inspecionar a linguagem grande resolvida model (LLM) no simulador do Console do Dialogflow:

  1. Clique no botão Resposta original:

    Resposta original

  2. Localize o campo "Generators LLM Inputs". Leia esses campos como simples e verifica se a entrada do LLM faz sentido. Se alguma frase contiver $, examine a entrada do simulador e esclareça se o $ nos comandos é intencional. Por exemplo, $ em price is $10 provavelmente é intencional, enquanto visit $city provavelmente não é e pode implicar uso indevido ou um bug.

  3. Se o campo "Entradas LLM generativas" não aparecer, entre em contato com o suporte.