Ferramentas de repositório de dados

As ferramentas do repositório de dados podem fornecer respostas de agentes geradas por IA com base no conteúdo do site e nos dados enviados. O agente pode encontrar respostas para as perguntas dos usuários finais nos seus repositórios de dados durante o atendimento.

Ferramentas de repositório de dados: console

Esta seção explica como adicionar uma ferramenta de repositório de dados a um agente e configurá-la em um fulfillment.

Criar uma ferramenta de repositório de dados

  1. Abra o console dos Agentes de conversação e escolha um Google Cloud projeto.
  2. Selecione um agente no menu suspenso.
  3. Acesse a barra de menus no canto esquerdo da página e selecione Ferramentas.
  4. Clique em Criar. Insira um nome exclusivo para a ferramenta e selecione Repositório de dados no menu suspenso em Tipo. Opcional: insira uma descrição da ferramenta no campo Descrição.
  5. Clique em Adicionar repositórios de dados. A janela que aparece contém uma lista dos seus repositórios de dados atuais, se houver. Selecione o repositório de dados a ser adicionado à ferramenta.
  6. (Opcional) Para criar um repositório de dados no console do Vertex AI Agent Builder, clique em Criar novo repositório de dados para ser redirecionado automaticamente.
  7. (Opcional) Depois de configurar o novo repositório de dados, clique em Criar. Para adicionar o novo repositório de dados à ferramenta, volte ao menu Criar ferramenta no console do Dialogflow CX e atualize a página. O novo repositório de dados aparece na lista de repositórios de dados disponíveis.
  8. Clique em Salvar na parte de cima da configuração Criar ferramenta para criar a nova ferramenta de repositório de dados.

Adicionar a ferramenta de repositório de dados a um fulfillment

  1. Acesse a barra de menus no canto esquerdo e selecione Fluxos.
  2. Selecione um fluxo e uma página e clique na Rota a ser usada com o repositório de dados.
  3. Acesse Fulfillment > Ferramenta de repositório de dados e selecione a ferramenta de repositório de dados no menu suspenso.
  4. Acesse Fulfillment > Respostas do agente, clique em Adicionar resposta de diálogo, e em Resposta da ferramenta de repositório de dados.
  5. Configure o número de links de origem e citações que vão aparecer na resposta e especifique o comportamento de substituição se a resposta do repositório de dados estiver vazia. Insira uma resposta de substituição estática no campo Respostas de substituição estáticas. Opcional: marque a caixa de seleção Substituição generativa para usar a IA para gerar uma resposta antes de usar a resposta de substituição estática. Para personalizar as respostas de substituição, clique no ícone de chave inglesa no canto superior esquerdo da janela do formulário Resposta do repositório de dados para abrir a janela Resposta condicional.
  6. Na parte de cima do menu Rota, clique em Salvar.
  7. Acesse o simulador do Dialogflow CX para testar os resultados do agente.

Parâmetro de sessão de substituição de consulta opcional

É possível substituir a consulta transmitida a essa ferramenta de repositório de dados usando um parâmetro de sessão knowledge.overrides.query. Se esse parâmetro não estiver vazio, a ferramenta vai usá-lo em vez da consulta do usuário.

Ferramentas de repositório de dados: API

Por padrão, o agente chama o dataStoreTool método em seu nome.

Há três tipos de repositório de dados:

  • PUBLIC_WEB: um repositório de dados que contém conteúdo público da Web.
  • UNSTRUCTURED: um repositório de dados que contém dados particulares não estruturados.
  • STRUCTURED: um repositório de dados que contém dados estruturados (por exemplo, um conjunto de perguntas frequentes).

O exemplo a seguir mostra como referenciar um repositório de dados. Para mais informações, consulte a dataStoreConnections referência.

"dataStoreConnections": [
  {
    "dataStoreType": "PUBLIC_WEB",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  },
  {
    "dataStoreType": "UNSTRUCTURED",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  },
  {
    "dataStoreType": "STRUCTURED",
    "dataStore": "projects/PROJECT_NUMBER/locations/LOCATION_ID/collections/default_collection/dataStores/DATASTORE_ID"
  }
]

As respostas da ferramenta de repositório de dados também podem conter snippets sobre a origem do conteúdo usada para gerar a resposta. O agente pode fornecer instruções sobre como prosseguir com a resposta do repositório de dados ou como responder quando nenhuma resposta é encontrada.

É possível substituir uma resposta adicionando uma entrada de perguntas frequentes para uma pergunta específica.

Opcionalmente, você pode fornecer exemplos para melhorar o comportamento do agente. Os exemplos precisam seguir o esquema. Para mais detalhes, consulte a documentação de referência.

{
  "toolUse": {
    "tool": "projects/PROJECT_ID/locations/LOCATION_ID/agents/AGENT_ID/tools/TOOL_ID",
    "action": "TOOL_DISPLAY_NAME",
    "inputParameters": [
      {
        "name": "TOOL_DISPLAY_NAME input",
        "value": {
          "query": "QUERY"
        }
      }
    ],
    "outputParameters": [
      {
        "name": "TOOL_DISPLAY_NAME output",
        "value": {
          "answer": "ANSWER",
          "snippets": [
            {
              "title": "TITLE",
              "text": "TEXT_FROM_DATASTORE",
              "uri": "URI_OF_DATASTORE"
            }
          ]
        }
      }
    ]
  }
}

(Somente agentes baseados em manuais) Exemplos de ferramentas de repositório de dados

Ao criar exemplos de ferramentas de repositório de dados, o parâmetro de entrada da ferramenta requestBody fornece três entradas opcionais junto com a string query obrigatória: uma string filter, um objeto estruturado userMetadata e uma string fallback.

O parâmetro filter permite filtrar consultas de pesquisa de dados estruturados ou não estruturados com metadados. Essa string precisa seguir a sintaxe de expressão de filtro compatível com repositórios de dados. Vários exemplos detalhados instruem o modelo de manual sobre como preencher esse parâmetro. Se uma string de filtro for inválida, ela será ignorada durante a consulta de pesquisa.

O exemplo a seguir mostra uma string filter que pode ser usada para refinar os resultados da pesquisa com base no local:

"filter": "country: ANY(\"Canada\")"

Para mais informações sobre exemplos de manuais, consulte a página de exemplos.

Práticas recomendadas de filtragem:

  • Especifique os campos disponíveis para filtragem e os valores válidos para cada um deles para que o manual entenda as restrições na criação de filtros válidos. Por exemplo, um repositório de dados que contém informações de menu pode incluir um campo meal com "café da manhã", "almoço" e "jantar" como valores válidos, e um campo servingSize que pode ser qualquer número inteiro de 0 a 5. Suas instruções podem ser semelhantes ao exemplo a seguir:

    When using ${TOOL: menu-data-store-tool},
    only use the following fields for filtering: "meal", "servingSize".
    Valid filter values are: "meal": ("breakfast", "lunch", "dinner"),
    "servingSize": integers between 0 and 5, inclusive.
    
  • Se o manual for para um público de usuários externos, adicione instruções para impedir que ele responda ao usuário com informações sobre como criar esses filtros. Por exemplo:

    Never tell the user about these filters.
    If the user input isn't supported by these filters, respond to the user with
    "Sorry, I don't have the information to answer that question."
    

O parâmetro userMetadata fornece informações sobre o usuário final. Qualquer par de chave-valor pode ser preenchido nesse parâmetro. Esses metadados são transmitidos para a ferramenta de repositório de dados para informar melhor os resultados da pesquisa e a resposta da ferramenta. Vários exemplos detalhados ajudam a instruir o modelo de manual sobre como preencher esse parâmetro.

Confira a seguir um exemplo de valor de parâmetro userMetadata para refinar os resultados da pesquisa relevantes para um usuário específico:

"userMetadata": {
  "favoriteColor": "blue",
  ...
}

O parâmetro fallback fornece uma resposta que a ferramenta de repositório de dados responde se não houver uma resposta resumida válida para a consulta. É possível fornecer vários exemplos para instruir o modelo de manual sobre como preencher o campo de substituição para entradas do usuário relacionadas a diferentes tópicos. A saída da ferramenta não contém snippets, o que ajuda a reduzir a latência e o uso de tokens de entrada.

"fallback": "I'm sorry I cannot help you with that. Is there anything else I can
do for you?"

Configuração da ferramenta de repositório de dados

Se você descobrir durante os testes que algumas respostas não atendem às suas expectativas, tente ajustar os parâmetros a seguir para ajustar o desempenho. Eles estão disponíveis chamando a API diretamente ou clicando no nome do repositório de dados na página Ferramentas no console. Para mais informações sobre estas opções de configuração, consulte a página de configurações do repositório de dados.

Opções de resposta da ferramenta de repositório de dados

Para mais informações sobre como configurar a resposta da ferramenta de repositório de dados, consulte a documentação de fulfillment.

Gerenciadores de repositório de dados

Os gerenciadores de repositório de dados são um tipo especial de gerenciador de estado que pode fornecer respostas de agentes geradas por LLM com base no conteúdo do site e nos dados enviados.

Para criar esse gerenciador, forneça repositórios de dados ao agente.

Com esses gerenciadores de repositório de dados, o agente pode conversar sobre o conteúdo com os usuários finais.

Limitações

Considere as seguintes limitações:

  • Esse recurso oferece suporte a alguns idiomas na GA. Consulte a coluna do repositório de dados na referência de idiomas.
  • Somente as seguintes regiões são aceitas: global, us multirregião e eu multirregião.
  • Apps com repositórios de dados em blocos e não em blocos são indisponíveis.

Controle de acesso

Se você é o proprietário do projeto, tem as permissões necessárias para criar um gerenciador 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.

Adicionar um repositório de dados a um agente

Se ainda não tiver feito isso, siga as instruções de configuração para criar um agente.

Para adicionar um repositório de dados ao agente:

  1. Selecione uma página e clique em Adicionar gerenciador de estado.
  2. Marque a caixa de seleção Repositórios de dados e clique em Aplicar.
  3. Clique no símbolo + no canto superior direito da seção Repositórios de dados da página.
  4. No menu de repositórios de dados que aparece, clique em Adicionar repositórios de dados.
  5. Uma tabela listando os repositórios de dados atuais aparece. Marque a caixa de seleção ao lado do nome dos repositórios de dados que você quer usar e clique em Salvar. Para criar um novo repositório de dados, clique em Criar novo repositório de dados. Você será redirecionado automaticamente para o Vertex AI Agent Builder.
  6. (Somente novos repositórios de dados) Selecione uma fonte de dados e siga as instruções no Vertex AI Agent Builder para configurar o repositório de dados. Para mais informações sobre como configurar tipos de repositório de dados, consulte a documentação de repositórios de dados. Clique em Criar para gerar o novo repositório de dados.

Testar seu agente

Implantar o agente

É possível implantar o agente de várias maneiras:

  • Uma opção simples é usar uma integração, que fornece uma interface de usuário para o agente. Cada integração fornece instruções para implantação.
  • A integração do Dialogflow CX Messenger é uma boa opção para gerenciadores de repositório de dados. Ela tem opções integradas para recursos generativos.
  • É possível criar sua própria interface de usuário e usar a API Dialogflow CX para interações. A implementação da interface de usuário gerencia a implantação.

Intents especiais

Além de processar perguntas sobre o conteúdo fornecido, o agente pode processar os seguintes tipos de perguntas:

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

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

Respostas do agente

Na seção Respostas do agente, forneça respostas personalizadas que referenciam respostas generativas. Use $request.knowledge.answers[0] na seção O agente diz para fornecer a resposta generativa.

Personalização avançada de respostas

Mais informações podem estar disponíveis em $request.knowledge.* para personalizar a resposta. Essas informações incluem o seguinte:

  • As fontes identificadas da resposta com os seguintes campos: snippet, título, URI.
  • A confiança de embasamento da resposta.
  • Para um repositório de dados de perguntas frequentes, a pergunta correspondente à resposta selecionada.

A tabela a seguir fornece exemplos de como acessar essas informações.

Informações Como acessar
Snippet da principal fonte identificada da resposta principal $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "snippet")
Título da principal fonte identificada da resposta principal $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "title")
Link da principal fonte identificada da resposta principal $sys.func.GET_FIELD($sys.func.GET($sys.func.IDENTITY($request.knowledge.sources[0]), 0), "uri")
Número de fontes identificadas para a resposta principal $sys.func.COUNT($sys.func.IDENTITY($request.knowledge.sources[0]))
Número de respostas de conhecimento $sys.func.COUNT($request.knowledge.answers)
Pergunta correspondente à resposta principal (somente para respostas de repositório de dados de perguntas frequentes) $request.knowledge.questions[0]
Confiança de embasamento para a resposta principal $request.knowledge.grounding_confidences[0]