Configuração da pesquisa do armazenamento de dados

Pode influenciar os resultados da pesquisa obtidos a partir de ferramentas de armazenamento de dados de agentes conversacionais (Dialogflow CX) através da configuração de especificações de filtros e aumentos. Isto permite interações mais personalizadas e sensíveis ao contexto quando o seu agente usa um repositório de dados para encontrar informações.

Opcionalmente, pode incluir expressões dinâmicas para otimizar os resultados com base no contexto da conversa. Por exemplo, o seu agente capturou informações que indicam que o utilizador final tem um "telemóvel". Pode configurar a ferramenta de armazenamento de dados para melhorar os documentos relacionados com telemóveis quando responder a uma consulta geral mais tarde na conversa, como "Como posso verificar o meu correio de voz?".

Pode configurar os resultados da pesquisa da base de dados de informações através da consola, API ou integração do Dialogflow CX Messenger.

Introduções de condições de pesquisa

Os resultados da pesquisa são configurados através dos campos boost specification (BoostSpec) e filter specification (FilterSpec) num objeto SearchConfig. Estas configurações são aplicadas por arquivo de dados na ferramenta, o que lhe dá um controlo detalhado sobre o comportamento de cada arquivo de dados associado.

Pode configurar as condições de pesquisa de uma de duas formas: através da consola ou enviando uma chamada API direta. Existem distinções importantes entre os dois.

  • Chamada API: BoostSpec e FilterSpec são enviados num SearchConfig através de uma chamada API DetectIntent. Tem de ser fornecido um objeto SearchConfig completo no pedido. Um SearchConfig enviado por uma chamada de API direta substitui sempre um SearchConfig enviado através da consola. As expressões dinâmicas e as referências de parâmetros não são suportadas.

  • Console: as suas configurações BoostSpec e FilterSpec são usadas para construir um objeto SearchConfig que é enviado com o pedido de pesquisa. Opcionalmente, pode incluir referências de parâmetros e expressões dinâmicas para personalizar os resultados de acordo com os dados de contexto registados a partir da conversa. Só tem de fornecer objetos ConditionBoostSpec e uma lista de strings de filtro para construir FilterSpecs, em vez de um objeto SearchConfig completo.

As informações do utilizador final são fornecidas como JSON. Não existe um esquema esperado, pelo que pode definir livremente as propriedades do objeto.

Especificações de reforços (especificações de reforços)

As especificações de reforço permitem-lhe alterar a classificação dos resultados da pesquisa aplicando um valor de reforço a documentos específicos. Pode adicionar várias especificações de aumento a um único repositório de dados.

Cada especificação de aumento é introduzida como uma string JSON. Esta string JSON tem de representar um único objeto ConditionBoostSpec.

Campos principais:

  • condition: (String) Uma expressão que especifica quando o aumento deve ser aplicado. Isto usa a sintaxe de expressão de filtro padrão. Pode usar expressões do Dialogflow para tornar os resultados dinâmicos, como $session.params.YOUR_PARAM_NAME ou $request.end-user-metadata.YOUR_KEY.
  • boost: (Número) Um valor entre -1,0 e 1,0 que determina a intensidade do aumento.
    • Um valor positivo promove a correspondência de documentos. Um valor de 1.0 dá uma promoção forte.
    • Um valor negativo rebaixa os documentos correspondentes. Um valor de -1.0 dá uma forte despromoção.
    • Um valor de 0.0 não aplica nenhum aumento e não é permitido.
  • boostControlSpec: oferece mais controlos para uma classificação personalizada do que a combinação básica de condição e aumento. Para mais informações sobre a configuração deste campo, consulte a documentação de referência.

Exemplo de entrada da consola:

Se estiver a configurar o seu agente na consola, tem de fornecer uma lista de ConditionBoostSpecs no seguinte formato.

Neste exemplo, os documentos com um URI correspondente ao valor do parâmetro de sessão $session.params.doc_id vão ser reforçados com uma intensidade de 0,5. JSON deste formato

{
  "condition": "uri: ANY(\"http://www.example.com/docs/$session.params.doc_id\")",
  "boost": 0.5
}

Exemplo de entrada da API:

Se estiver a chamar a API diretamente, tem de fornecer ConditionBoostSpecs num objeto SearchConfig completo.A seguinte configuração de pesquisa descreve uma especificação de aumento:

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

Especificações de filtros (especificações de filtros)

As especificações de filtros restringem os resultados da pesquisa para incluir apenas documentos que correspondam aos critérios definidos. Pode adicionar várias especificações de filtros a um único arquivo de dados.

Cada Filter Spec tem de ser introduzido como uma expressão de string. A string tem de estar em conformidade com a sintaxe de expressão de filtro padrão. Pode usar expressões do Dialogflow nesta string para tornar os resultados dinâmicos, como $session.params.YOUR_PARAM_NAME ou $request.end-user-metadata.YOUR_KEY.

String de especificação de filtro da consola de exemplo:

Se configurar o seu agente através da consola, tem de fornecer uma lista de strings para formar um objeto FilterSpec.filter

Neste exemplo, o filtro só devolve documentos com numeric_field superior ou igual ao valor de $session.params.min_value E onde stock_availability é "IN_STOCK".

"numeric_field >= $session.params.min_value AND stock_availability: ANY(\"IN_STOCK\")"

Exemplo de configuração de filtro da API:

Se estiver a chamar a API diretamente, tem de fornecer strings filter num objeto SearchConfig completo:

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

Expressões dinâmicas do Dialogflow

As BoostSpeccondiçõesFilterSpec e as strings podem incorporar expressões do Dialogflow para as tornar dinâmicas. Isto permite-lhe personalizar o comportamento de pesquisa com base nos dados contextuais obtidos a partir de uma conversa em curso. As expressões dinâmicas não são suportadas em chamadas API diretas e só podem ser usadas se estiver a fazer a configuração através da consola.

Pode aceder aos dados de contexto da conversa de duas formas:

  • Parâmetros da sessão: valores recolhidos durante a conversa com $session.params.YOUR_PARAMETER_ID.
  • Metadados do utilizador final: metadados sobre o utilizador final transmitidos no elemento DetectIntentRequest através de $request.end-user-metadata.YOUR_KEY. Para que esta opção esteja disponível, verifique se o modo end_user_metadata está incluído no QueryParameters das suas chamadas DetectIntent. Para mais informações, consulte o elemento endUserMetadata.

Para mais detalhes sobre as funções do sistema disponíveis e a sintaxe das expressões, consulte a referência de condições e funções do sistema.

Condições de pesquisa aplicadas no tempo de execução

Quando a ferramenta de armazenamento de dados executa uma pesquisa:

  1. As strings JSON que forneceu para as especificações de reforços são avaliadas. Cada string JSON válida é convertida num objeto ConditionBoostSpec. Estes são, em seguida, agrupados num objeto BoostSpecs para a ligação específica do repositório de dados, que é adicionado ao SearchConfig geral.
  2. As strings que forneceu para as especificações de filtros são avaliadas como expressões do Dialogflow. Cada string de filtro resultante é usada para criar um objeto FilterSpecs para o armazenamento de dados, que também é adicionado ao SearchConfig.
  3. Este SearchConfig construído dinamicamente é, em seguida, incluído no QueryParameters do pedido de pesquisa enviado para o repositório de dados.

Configure condições de pesquisa

Antes de configurar as condições de pesquisa, verifique se tem:

  • Um agente de agentes conversacionais (Dialogflow CX) existente.
  • Uma ferramenta de armazenamento de dados configurada para o seu agente com um ou mais armazenamentos de dados ativados.

Configuração da consola

  1. Abra a consola de agentes conversacionais e escolha um Google Cloud projeto.
  2. Selecione um agente no menu pendente.
  3. Navegue até ao menu do lado esquerdo e clique em Ferramentas. Selecione a ferramenta de armazenamento de dados que quer configurar.
  4. Na página de edição da ferramenta, navegue para a secção Armazenamentos de dados. Clique no ícone de Definições (⚙️) junto ao arquivo de dados que quer modificar.
  5. É apresentado o menu Configurar arquivo de dados. Aqui, pode adicionar especificações de aumento e especificações de filtro para modificar os resultados da pesquisa.
    • Para uma especificação de reforço, forneça um objeto JSON que defina um ConditionBoostSpec. Consulte as especificações de aumento para ver detalhes.
    • Para uma Filter Spec, forneça uma string que defina os critérios de filtro. Consulte as Especificações de filtros para ver detalhes.
  6. Depois de adicionar e configurar as especificações, clique em Confirmar na parte inferior do painel lateral.
  7. Clique em Guardar na página de edição da ferramenta de armazenamento de dados para guardar as alterações.

Configuração da API

Pode fornecer dados de configuração de pesquisa a agentes conversacionais (Dialogflow CX) quando envia pedidos de deteção de intenções. Estas informações têm de ser fornecidas em todos os pedidos detect intent, porque não são mantidas na sessão.

Indique estas informações no campo queryParams.searchConfig no método Sessions.detectIntent.

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

Protocolo V3 V3beta1
REST Recurso de sessão Recurso de sessão
RPC Interface de sessão Interface de sessão
C++ SessionsClient Não disponível
C# SessionsClient Não disponível
Ir SessionsClient Não disponível
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP Não disponível Não disponível
Python SessionsClient SessionsClient
Ruby Não disponível Não disponível

Configuração do Dialogflow CX Messenger

Pode fornecer dados de configuração de pesquisa à integração do Dialogflow CX Messenger. Consulte o método setContext para mais informações.

Para aplicar uma especificação de pesquisa ou uma configuração de pesquisa, tem de adicionar o seguinte fragmento ao código do Dialogflow CX Messenger quando o incorporar num Website:

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

Consulte o método setQueryParameters.

Resolução de problemas

Esta secção descreve as soluções para alguns problemas comuns encontrados durante a configuração. Teste sempre as suas configurações exaustivamente simulando conversas que acionam diferentes parâmetros de sessão e valores de metadados do utilizador final.

Expressões inválidas

Se uma condição de especificação de aumento ou uma string de especificação de filtro contiver uma expressão de agentes conversacionais (Dialogflow CX) inválida (por exemplo, sintaxe incorreta ou referência a um parâmetro inexistente), a compilação da expressão falha. Os erros relacionados com a compilação de expressões são normalmente devolvidos no elemento DetectIntentResponse no campo diagnostic_info como SystemFunctionResults.

JSON ConditionBoostSpec inválido

A consola de agentes conversacionais realiza alguma validação na string JSON quando a guarda.ConditionBoostSpec Isto destina-se a verificar se é um JSON válido e se a respetiva estrutura pode ser mapeada para um objeto ConditionBoostSpec. Se o JSON for válido, mas resultar num SearchConfig inválido de acordo com o serviço de pesquisa subjacente (por exemplo, uma cadeia de caracteres de condição inválida após a substituição de parâmetros), o serviço de pesquisa devolve um erro.

Erros de substituição de tempo de execução

Se uma string JSON ConditionBoostSpec for válida e analisável, mas ocorrer um erro durante a substituição em tempo de execução de expressões do Dialogflow nos respetivos campos (como a string de condição), estes erros são comunicados em diagnostic_info como SystemFunctionResults.

Reveja o SearchConfig compilado

O SearchConfig aplicado quando a consulta é executada está disponível em search_signals na resposta. A revisão do SearchConfig pode fornecer informações sobre problemas adicionais não descritos aqui.

O que se segue?