Agentes de repositório de dados

Os agentes de armazenamento de dados são um tipo especial de agente do Dialogflow que podem fornecer respostas do agente geradas por LLM com base no conteúdo do seu site e nos dados enviados.

Para criar esse agente, forneça armazenamentos de dados ao criá-lo.

Um agente de repositório de dados tem gerenciadores de estado especiais chamados gerenciadores de repositório de dados. Com o uso deles, o agente de repositório de dados pode conversar sobre o conteúdo com os usuários finais.

Limitações

Considere as seguintes limitações:

  • No momento, esse recurso só é compatível com idiomas selecionados no GA. Consulte a coluna do repositório de dados na referência de idiomas.
  • Somente as seguintes regiões são aceitas: global, multirregião us e multirregião eu.
  • As perguntas frequentes são o único tipo de repositório de dados estruturados aceito.
  • Apps com armazenamentos de dados em partes e não divididos não são compatíveis.

Controle de acesso

Se você for o proprietário do projeto, terá todas as permissões necessárias para criar um agente de repositório de dados. Se você não for o proprietário do projeto, precisará ter os seguintes papéis:

  • Administrador do Dialogflow
  • Administrador do Discovery Engine

Para mais informações, consulte o Guia de controle de acesso do Dialogflow.

Criar um agente de repositório de dados

Para criar um agente de repositório de dados:

  1. Siga as instruções de setup do Dialogflow, caso ainda não tenha feito isso.
  2. Acesse o console do Agent Builder:

    Console do Agent Builder

  3. Selecione o projeto na lista suspensa do console.

  4. Se você ainda não ativou a API, leia e concorde com os Termos de Serviço e clique em Continuar e ativar a API.

  5. Clique em Create a New App ou New App.

  6. Selecione Chat.

  7. Forneça o nome da sua empresa na seção Configurações do agente.

  8. Expanda a seção de configurações de fuso horário e idioma.

  9. Selecione um fuso horário.

  10. Selecione um idioma padrão.

  11. Forneça um nome de agente na seção Nome do agente.

  12. Selecione uma região ou multirregião na seção Local do seu agente.

  13. Clique em Continuar.

  14. Para conectar um repositório de dados ao seu agente, siga um destes procedimentos:

    • Selecione um repositório de dados que você criou anteriormente.
    • Crie um repositório de dados:
      1. Clique em Criar novo repositório de dados.
      2. Escolha uma fonte de dados.
      3. Forneça os dados e a configuração da fonte de repositório de dados selecionada. O local do repositório de dados precisa corresponder ao local do agente.
      4. Clique em Criar para criar o repositório de dados.
      5. Selecione seu novo repositório de dados.
  15. Clique em Criar.

  16. Seu agente será criado, e você será redirecionado automaticamente para a página Repositórios de dados disponíveis, em que é possível adicionar mais repositórios de dados conforme necessário.

  17. Se você criou um novo repositório de dados para um site, é necessário verificar seu domínio.

  18. Para abrir seu agente com o Dialogflow CX, clique em Visualizar no painel esquerdo. No console do Dialogflow CX, é possível editar ou adicionar repositório de dados dados, implantar seu agente e, opcionalmente, adicionar fluxos que processarão cenários não cobertos pelos armazenamentos de dados.

Testar seu agente

Use o simulador do Dialogflow CX para testar seu agente.

Configurações

As configurações do agente de repositório de dados a seguir estão disponíveis.

Embasamento

Para cada resposta gerada com base no conteúdo dos repositórios de dados conectados, é calculado um nível de confiança, que mede a confiança de que todas as informações na resposta são compatíveis com as informações nos repositórios de dados. Selecione o nível de confiança mais baixo permitido, e o agente não retornará respostas inferiores a esse nível.

Há cinco níveis de confiança para escolher: muito baixo, baixo, médio, alto e muito alto.

Também é possível aplicar um filtro de heurística de embasamento. Se ativada, as respostas com conteúdo que provavelmente é impreciso com base em alucinações comuns são suprimidas.

Comando do repositório de dados

Você tem a opção de adicionar mais informações sobre o agente para melhorar a qualidade das respostas geradas com base no conteúdo do repositório de dados e fazer com que elas se pareçam com sua marca:

  • Nome do agente: como o agente deve se chamar. Se você não definir isso, o valor padrão AI Assistant será usado.
  • Identidade do agente: o perfil do agente. Se você não definir isso, o valor padrão AI Assistant será usado.
  • Nome da empresa: defina como o nome da sua empresa. Isso já deveria ter sido definido como parte do fluxo de criação do agente, mas é ajustável conforme necessário. É recomendável definir esse campo corretamente e não deixá-lo vazio para que a qualidade das respostas geradas não seja prejudicada.
  • Descrição da empresa: uma breve descrição do que a empresa faz ou oferece.
  • Escopo do agente: onde o agente deve ser usado. Se ela não for definida, será usado o valor padrão no site da empresa.

Depois de preencher a seção total ou parcialmente, você pode inspecionar o parágrafo curto derivado dessas configurações no lado direito, em Seu comando. Isso é usado como parte da geração de respostas.

Seleção de modelo de repositório de dados e comando de resumo

Quando uma consulta do usuário é processada, o agente realiza uma pesquisa nos repositórios de dados para encontrar boas fontes. Em seguida, o agente envia a consulta do usuário e as fontes encontradas ao LLM, que realiza um resumo.

É possível selecionar qual modelo usar para o resumo e, opcionalmente, fornecer seu próprio comando.

Selecionar modelo generativo

É possível selecionar o modelo generativo usado por um agente de repositório de dados para a solicitação generativa de resumo. A tabela a seguir contém as opções disponíveis:

Identificador de modelo Suporte a idiomas
Padrão Essa é a configuração recomendada atualmente e está sujeita a alterações ao longo do tempo. Se você usar essa opção, poderá notar mudanças no comportamento do agente (prováveis melhorias). Para mais consistência no comportamento do agente, selecione um modelo específico.
text-bison@001 Disponível em todos os idiomas compatíveis. Observação: upgrades para gemini-1.0-pro-001 após 15 de junho de 2024
text-bison@002 Disponível em todos os idiomas compatíveis.
text-bison@001 ajustado (conversacional) No momento, apenas o idioma inglês está disponível.
text-bison@001 ajustado (informativo) No momento, apenas o idioma inglês está disponível.
gemini-1.0-pro-001 Disponível em todos os idiomas compatíveis.

Personalizar o comando de resumo

É possível fornecer seu próprio comando para a chamada do LLM de resumo. O comando é um modelo de texto que pode conter marcadores de posição predefinidos. Os marcadores de posição serão substituídos pelos valores apropriados no momento da execução, e o texto final será enviado ao LLM.

Os marcadores de posição são os seguintes:

  • $original-query: o texto da consulta do usuário.
  • $rewritten-query: o Dialogflow usa um módulo de regravação para reescrever a consulta original do usuário em um formato mais preciso.
  • $sources: o Dialogflow usa o Enterprise Search para pesquisar origens com base na consulta do usuário. As fontes encontradas são renderizadas em um formato específico:

    [1] title of first source
    content of first source
    [2] title of second source
    content of second source
    
  • $conversation: o histórico de conversas é renderizado no seguinte formato:

    Human: user's first query
    AI: answer to user's first query
    Human: user's second query
    AI: answer to user's second query
    

Um comando personalizado instrui o LLM a retornar "NOT_ENOUGH_INFORMATION" quando não consegue fornecer uma resposta. Nesse caso, o agente invoca um evento sem correspondência.

Exemplo:

Given the conversation between a Human and a AI assistant and a list of sources,
write a final answer for the AI assistant.
Follow these guidelines:
+ Answer the Human's query and make sure you mention all relevant details from
  the sources, using exactly the same words as the sources if possible.
+ The answer must be based only on the sources and not introduce any additional
  information.
+ All numbers, like price, date, time or phone numbers must appear exactly as
  they are in the sources.
+ Give as comprehensive answer as possible given the sources. Include all
  important details, and any caveats and conditions that apply.
+ The answer MUST be in English.
+ Don't try to make up an answer: If the answer cannot be found in the sources,
  you admit that you don't know and you answer NOT_ENOUGH_INFORMATION.
You will be given a few examples before you begin.

Example 1:
Sources:
[1] <product or service> Info Page
Yes, <company> offers <product or service> in various options or variations.

Human: Do you sell <product or service>?
AI: Yes, <company> sells <product or service>. Is there anything else I can
help you with?

Example 2:
Sources:
[1] Andrea - Wikipedia
Andrea is a given name which is common worldwide for both males and females.

Human: How is the weather?
AI: NOT_ENOUGH_INFORMATION


Begin! Let's work this out step by step to be sure we have the right answer.

Sources:
$sources

$conversation
Human: $original-query
AI:

Substituto do repositório de dados

Essa seção tem as seguintes configurações:

  • Link de fallback: mostre o link mais apropriado se o agente não produzir uma resposta.
  • Ativar IA generativa: permite que o repositório de dados use IA generativa ao gerar resultados.

Melhorar as respostas do agente

Se você encontrar algumas respostas durante o teste que não atendam às suas expectativas, tente o seguinte.

Implantar o agente

Há várias maneiras de implantar o agente:

  • A opção mais simples é usar uma integração do Dialogflow CX, que fornece uma interface do usuário para seu agente. Cada integração fornece instruções para implantação.

  • A integração do Dialogflow Messenger é uma opção particularmente boa para agentes de repositório de dados. Ele tem opções integradas para recursos generativos.

  • É possível criar sua própria interface do usuário e usar a API Dialogflow CX para interações. A implementação da interface do usuário controla a implantação.

Acompanhar a performance do agente

É possível monitorar o histórico de conversas dos agentes e usar a ferramenta de análise para estatísticas do agente.

Intents especiais

Além de lidar com perguntas sobre o conteúdo fornecido, o agente de repositório de dados pode lidar com os seguintes tipos de perguntas:

  • Identificação de agente: processa perguntas como "Quem é você?" ou "Você é humano?".
  • Encaminhar para um agente humano: processa perguntas como "Quero conversar com uma pessoa" ou "Quero conversar com uma pessoa real".

Isso é feito por intents e rotas de intent geradas automaticamente.

Agentes híbridos

Se você já tiver um agente do Dialogflow CX, faça upgrade dele para um agente híbrido, que combina o poder de controles de conversa precisos (fluxos, parâmetros, intents, condições, transições etc.) com os recursos generativos do gerenciador de repositório de dados.

Como parte desse upgrade, é possível excluir ou desativar temporariamente as rotas de intent (durante o teste de gerenciadores de repositório de dados) para determinados cenários de conversa do seu agente, porque os gerenciadores de repositório de dados podem lidar com esses cenários de maneira mais simples.

Os cenários a seguir são recomendados para gerenciadores de repositório de dados:

  • Perguntas que podem ser respondidas por documentos ou pelo site da sua organização.
  • Perguntas frequentes que não exigem pesquisas no banco de dados.

Os cenários a seguir não são recomendados para gerenciadores de repositório de dados:

  • Conteúdo que não tem respostas para as perguntas desejadas.
  • Perguntas que exigem pesquisas no banco de dados ou solicitações do servidor.
  • Cenários que exigem o descarte de dados sensíveis.
  • Cenários que exigem respostas do agente determinístico.

O Dialogflow avalia a entrada do usuário final na seguinte ordem de preferência:

  1. Correspondência de intent para rotas no escopo.
  2. Conteúdo do repositório de dados de Perguntas frequentes
  3. Conteúdo do repositório de dados não estruturados

Ordem de avaliação de entrada

O Dialogflow avalia a entrada do usuário final na seguinte ordem para agentes híbridos:

  1. Entrada de parâmetros durante o preenchimento do formulário.
  2. Correspondências de intent para rotas no escopo.
  3. Gerenciador do repositório de dados com conteúdo do repositório de dados de perguntas frequentes.
  4. Gerenciador de repositório de dados com conteúdo de repositório de dados não estruturados.

Adicionar ou editar gerenciadores de repositório de dados para um agente existente

Os gerenciadores de repositório de dados são um tipo especial de gerenciador de estado do Dialogflow. Isso significa que é possível aplicá-los a fluxos ou páginas e que são avaliados usando as mesmas regras de escopo.

Para adicionar ou editar um gerenciador de repositório de dados:

  1. Acesse o Console do Dialogflow CX.
  2. Selecione seu projeto do Google Cloud.
  3. Selecione o agente.
  4. Selecione o fluxo associado ao gerenciador do repositório de dados. Geralmente, esse é o fluxo inicial padrão.
  5. Selecione a página associada ao gerenciador do repositório de dados. Geralmente, é a página inicial.
  6. Clique em Adicionar gerenciador de estado nos dados da página e selecione repositório de dados.
  7. Se você precisar criar um repositório de dados, a interface do usuário do Vertex AI Agent Builder será exibida. Consulte as informações do repositório de dados para fazer as seleções.
  8. Se você já tiver um repositório de dados, clique em Editar repositório de dados.
  9. Faça as atualizações conforme necessário e salve quando terminar. Consulte as informações abaixo sobre as configurações específicas do repositório de dados.

Respostas do agente

Na seção Respostas do agente, é possível fornecer respostas personalizadas que fazem referência a respostas generativas. Use $request.knowledge.questions[0] na seção O agente diz para fornecer a resposta generativa.

Opções de resposta do repositório de dados

É possível atualizar o campo Máximo de links para indicar o número máximo de links complementares que precisam ser fornecidos pelas respostas generativas.

Processar digressões de conversa

Um usuário final pode fazer perguntas para esclarecimento durante uma conversa. Por exemplo, durante a coleta de informações do cartão de crédito, ele pode querer esclarecer o que é o CVV. Nesse caso, seu agente precisa responder à pergunta e voltar a coletar as informações necessárias do cartão de crédito. Para fazer isso, crie um gerenciador de repositório de dados com repositórios de dados que respondam à pergunta, aplique esse gerenciador à página inicial do fluxo que lida com a coleta de informações de cartão de crédito e defina um destino de transição para que esse gerenciador retorne à "página atual".

Processar correspondências de intent indesejadas

Se o agente corresponde intents quando deveria usar um gerenciador de repositório de dados, tente o seguinte para corrigir isso:

  • Exclua ou modifique frases de treinamento vagas para que todas elas processem precisamente a intenção desejada e não entrem em conflito com o conteúdo do repositório de dados.
  • Use exemplos negativos para evitar a correspondência de intent.

Filtragem do repositório de dados

Em alguns casos, você pode querer que apenas determinados armazenamentos de dados estejam disponíveis para consultas, dependendo dos valores de parâmetro da sessão. Por exemplo, você pode ter repositórios de dados exclusivos para categorias de produtos. Para realizar a filtragem do repositório de dados para categorias de produto:

  • Defina os parâmetros de sessão para categorias de produto.
  • Crie rotas de condição que verifiquem os valores dos parâmetros de sessão e façam a transição para uma página específica que tenha o gerenciador de repositório de dados desejado.
  • O gerenciador do repositório de dados deve fazer a transição de volta para a página de chamada, para que a conversa possa continuar.

Personalização

Para tornar as respostas generativas mais relevantes para os usuários finais, forneça ao Dialogflow informações sobre os usuários.

Essas informações são fornecidas no formato JSON. Como não há um esquema esperado, você pode definir as propriedades do objeto. Esse JSON é enviado ao modelo de linguagem grande no estado em que se encontra. Portanto, nomes e valores de propriedade descritivos levam aos melhores resultados.

Exemplo:

{
  "subscription plan": "Business Premium Plus",
  "devices owned": [
    {"model": "Google Pixel 7"},
    {"model": "Google Pixel Tablet"}
  ]
}

Como personalizar com a API Dialogflow

É possível fornecer esses dados ao Dialogflow ao enviar solicitações de detecção de intent. Essas informações precisam ser fornecidas em cada solicitação de detecção de intent, porque elas não são mantidas na sessão.

Forneça essas informações no campo queryParams.endUserMetadata do método Sessions.detectIntent.

Selecione um protocolo e uma versão para a referência de sessão:

Protocolo V3 V3beta1
REST Recurso da sessão Recurso da sessão
RPC (remote procedure call) Interface da sessão Interface da sessão
C++ SessionsClient Indisponível
C# SessionsClient Indisponível
Go SessionsClient Indisponível
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP Indisponível Indisponível
Python SessionsClient SessionsClient
Ruby Indisponível Indisponível

Como personalizar com o Dialogflow Messenger

Você pode fornecer esses dados para a integração do Dialogflow Messenger. Consulte o método setContext.

Configuração de pesquisa

Para ter melhor controle sobre o comportamento do agente e melhorar a qualidade das respostas, otimize e filtre as configurações de pesquisa para otimizar, ocultar e filtrar documentos.

Os controles de otimização permitem mudar a classificação dos resultados da pesquisa aplicando um valor de otimização (maior que zero para uma classificação mais alta, menor que zero para uma classificação mais baixa) a documentos específicos.

Os controles de filtros permitem manter ou remover os resultados da pesquisa com base nos critérios de filtro especificados.

Essas informações são fornecidas como JSON para as solicitações do Dialogflow. O formato do JSON depende do tipo de controle de pesquisa.

Controle de aumento

A configuração de pesquisa a seguir descreve um controle de otimização:

"searchConfig": {
  "boostSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "spec": [
        {
          "conditionBoostSpecs": {
            "condition": "CONDITION",
            "boost": "1.0"
          }
        }
      ]
    }
  ]
}

Controle de filtros

A configuração de pesquisa a seguir descreve um controle de filtros:

"searchConfig": {
  "filterSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "filter": "CONDITION"
    }
  ]
}

Definir a configuração de pesquisa com a API Dialogflow

É possível fornecer esses dados ao Dialogflow ao enviar solicitações de detecção de intent. Essas informações precisam ser fornecidas em cada solicitação de detecção de intent, porque elas não são mantidas na sessão.

Forneça essas informações no campo queryParams.searchConfig do método Sessions.detectIntent.

Selecione um protocolo e uma versão para a referência de sessão:

Protocolo V3 V3beta1
REST Recurso da sessão Recurso da sessão
RPC (remote procedure call) Interface da sessão Interface da sessão
C++ SessionsClient Indisponível
C# SessionsClient Indisponível
Go SessionsClient Indisponível
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP Indisponível Indisponível
Python SessionsClient SessionsClient
Ruby Indisponível Indisponível

Defina a configuração de pesquisa com o Dialogflow Messenger

Você pode fornecer esses dados para a integração do Dialogflow Messenger.

Para aplicar um controle de pesquisa, o snippet a seguir precisa ser adicionado ao código do app de mensagens DF ao incorporá-lo em um site:

<script>
  document.addEventListener('df-messenger-loaded', () => {
    const dfMessenger = document.querySelector('df-messenger');
    const searchConfig = { ... }
    dfMessenger.setQueryParameters(searchConfig);
  });
</script>

Consulte o método setQueryParameters.