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

Nesta seção, mostramos como adicionar uma ferramenta de repositório de dados a um agente e configurá-la em um atendimento.

criar uma ferramenta de repositório de dados

  1. Abra o console dos Agentes de conversação e escolha um projeto do Google Cloud.
  2. Selecione um agente no menu suspenso.
  3. Navegue até a barra de menus no canto esquerdo da página e selecione Ferramentas.
  4. Para criar uma ferramenta de repositório de dados, clique em + Criar. Insira um Nome exclusivo para a ferramenta e selecione Repositório de dados no menu suspenso em Tipo. Se quiser, insira uma descrição da ferramenta no campo Descrição.
  5. Em Repositórios de dados, clique em Adicionar repositórios de dados. A janela pop-up contém uma lista dos seus repositórios de dados atuais, se houver. Escolha o repositório de dados que você quer adicionar à ferramenta.
  6. (Opcional) Para criar um repositório de dados no console do Vertex AI Agent Builder, clique em Criar repositório de dados. Você será redirecionado automaticamente para: Console do Vertex AI Agent Builder
  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 que você está configurando no console do Conversational Agents (Dialogflow CX) e atualize a página. O novo repositório de dados vai aparecer na lista de repositórios 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. Na barra de menu à esquerda, selecione Fluxos.
  2. Selecione um fluxo e uma página e clique na Rota da página que você quer usar com o repositório de dados.
  3. No menu Rota, role a tela até Atendimento > Ferramenta de repositório de dados. Selecione sua ferramenta de repositório de dados no menu suspenso.
  4. No menu Rota, role a tela até Cumprimento > Respostas do agente. Clique em +Adicionar resposta de diálogo e em Resposta da ferramenta do repositório de dados.
  5. No formulário que aparece, você pode configurar quantos links de origem e citações podem aparecer na resposta, além de especificar o comportamento de substituição se a resposta do repositório de dados estiver vazia. Você pode inserir uma resposta alternativa estática no campo Respostas alternativas estáticas. Se quiser, clique na caixa de seleção Substituição generativa para tentar usar a IA e gerar uma resposta antes de usar a resposta de substituição estática. Se você precisar de mais personalização das respostas alternativas, clique no ícone de chave de boca 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 de agentes de conversação (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 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 vai ligar para o dataStoreTool 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, perguntas frequentes).

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

"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 fonte de conteúdo usada para gerar a resposta. O agente pode fornecer instruções sobre como proceder com a resposta dos repositórios de dados ou como responder quando não há resposta.

Você pode substituir uma resposta adicionando uma entrada de perguntas frequentes para uma pergunta específica.

Se quiser, você pode fornecer exemplos para melhorar o comportamento do agente. O exemplo precisa ter os seguintes esquemas. Consulte a documentação de referência para mais detalhes.

{
  "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 playbooks) 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 para repositórios de dados. Vários exemplos detalhados ajudam a instruir 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.

Confira um exemplo de string filter para refinar os resultados da pesquisa com base na localização:

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

Consulte a página de exemplos
para mais detalhes.

Práticas recomendadas para filtragem:

  • Especifique os campos disponíveis para filtragem e os valores válidos para cada um deles. Assim, o playbook entende as restrições na criação de filtros válidos. Por exemplo, um repositório de dados com informações de cardápio 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 playbook for para um público externo, talvez seja necessário adicionar instruções para evitar que ele responda ao usuário com informações sobre a criação desses filtros. 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 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 um exemplo de valor de parâmetro userMetadata para refinar os resultados da pesquisa relevantes para um:

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

O parâmetro fallback fornece uma resposta que a ferramenta de repositório de dados deve dar se não houver uma resposta resumida válida para a consulta. Você pode fornecer vários exemplos para instruir o modelo de playbook sobre como preencher o campo de substituição para entradas do usuário relacionadas a diferentes temas. Não há snippets na saída da ferramenta, o que ajuda a reduzir a latência e o uso de limites 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 o teste que algumas respostas não atendem às suas expectativas, tente ajustar os seguintes parâmetros para otimizar o desempenho. Eles estão disponíveis chamando a API diretamente ou clicando no nome do repositório de dados na página Ferramentas do console. Para mais informações sobre essas opções de configuração adicionais, consulte a página de configurações do repositório de dados.

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

Consulte a documentação de atendimento para detalhes sobre como configurar a resposta da ferramenta de repositório de dados.

Processadores de repositório de dados

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

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

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

Limitações

Considere as seguintes limitações:

Controle de acesso

Se você for o proprietário do projeto, terá todas as permissões necessárias para criar um manipulador 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 você ainda não fez isso, siga as instruções de configuração para criar um agente.

Para adicionar um repositório de dados ao seu agente: repositório de dados:

  1. Selecione uma página e clique em Adicionar manipulador 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. Clique na caixa 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 a Vertex AI Agent Builder.
  6. (Somente para novos repositórios de dados) Selecione uma fonte de dados e siga as instruções no Vertex AI Agent Builder para configurar seu 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 criar o novo repositório de dados.

Testar o agente

Use o simulador para testar o agente.

Implantar o agente

Há muitas maneiras de implantar seu agente:

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

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

  • Você pode criar sua própria interface de usuário e usar a API Conversational Agents (Dialogflow CX) para interações. A implementação da interface do usuário controla a implantação.

Intents especiais

Além de responder a perguntas sobre o conteúdo que você fornece, o agente pode responder aos seguintes tipos de perguntas:

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

Isso é feito com intenções e rotas de intenção geradas automaticamente.

Respostas do agente

Na seção Respostas do agente, você pode fornecer 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

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

  • As fontes identificadas da resposta com os seguintes campos: snippet, title, uri.
  • A confiança do embasamento para a resposta.
  • No caso de um repositório de dados de perguntas frequentes, a pergunta correspondente à resposta selecionada.

Consulte a tabela a seguir para ver 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 do repositório de dados de perguntas frequentes) $request.knowledge.questions[0]
Confiança de embasamento para a resposta principal $request.knowledge.grounding_confidences[0]