Partilhar via


Adicione várias categorias ao seu bot de perguntas frequentes

Neste tutorial, irá aprender a:

  • Criar um projeto e marcar pares de respostas a perguntas em categorias distintas com metadados
  • Criar um projeto separado para cada domínio
  • Criar um recurso de idioma separado para cada domínio

Ao criar um bot de perguntas frequentes, você pode encontrar casos de uso que exigem que você aborde consultas em vários domínios. Digamos que a equipa de marketing da Microsoft pretenda criar um bot de suporte ao cliente que responda a perguntas comuns dos utilizadores em vários Produtos Surface. Por uma questão de simplicidade aqui, usaremos dois URLs de perguntas frequentes, a Caneta para Surface e os fones de ouvido do Surface para criar o projeto.

Criar projeto com metadados específicos do domínio

Os autores de conteúdo podem usar documentos para extrair pares de respostas a perguntas ou adicionar pares de respostas a perguntas personalizadas ao projeto. Para agrupar essas perguntas e respostas em domínios ou categorias específicas, você pode adicionar metadados.

Para o bot nos produtos Surface, pode seguir os seguintes passos para criar um bot que responda a consultas para ambos os tipos de produto:

  1. Adicione os seguintes URLs de perguntas frequentes como fontes selecionando Adicionar URLs> de origem>e, em seguida, Adicionar todos depois de adicionar cada um dos URLs abaixo:

    Perguntas frequentes sobre a Caneta para Surface
    Perguntas frequentes sobre os auriculares do Surface

    Screenshot of add URL UI.

  2. Neste projeto, temos pares de perguntas e respostas em dois produtos e gostaríamos de distingui-los de modo a podermos procurar respostas entre perguntas e respostas para um determinado produto. Para fazer isso, poderíamos atualizar o campo de metadados para os pares de respostas à pergunta.

    Como você pode ver no exemplo abaixo, adicionamos metadados com o produto como chave e surface_pen ou surface_earbuds como valores, sempre que aplicável. Você pode estender este exemplo para extrair dados sobre vários produtos e adicionar um valor diferente para cada produto.

    Screenshot of metadata example.

  3. Agora, para restringir o sistema a procurar a resposta em um determinado produto, você precisaria passar esse produto como um filtro na pergunta personalizada respondendo à API REST.

    A URL de previsão da API REST pode ser recuperada no painel Implantar projeto:

    Screenshot of the Deploy project page with the prediction URL displayed.

    No corpo JSON para a chamada de API, passamos surface_pen como valor para o produto de metadados. Assim, o sistema só procurará a resposta entre os pares QnA com os mesmos metadados.

        {
          "question": "What is the price?",
          "top": 3
        },
        "answerSpanRequest": {
          "enable": true,
          "confidenceScoreThreshold": 0.3,
          "topAnswersWithSpan": 1
        },
        "filters": {
          "metadataFilter": {
            "metadata": [
              {
                "key": "product",
                "value": "surface_pen"
              }
            ]
          }
        }
    

    Você pode obter o valor dos metadados com base na entrada do usuário das seguintes maneiras:

    • Tome explicitamente o domínio como entrada do usuário através do cliente de bot. Por exemplo, como mostrado abaixo, você pode tomar a categoria do produto como entrada do usuário quando a conversa é iniciada.

      Take metadata input

    • Identifique implicitamente o domínio com base no contexto do bot. Por exemplo, no caso de a pergunta anterior ser sobre um determinado produto Surface, pode ser guardada como contexto pelo cliente. Se o usuário não especificar o produto na próxima consulta, você poderá passar o contexto do bot como metadados para a API Gerar Resposta.

      Pass context

    • Extraia a entidade da consulta do usuário para identificar o domínio a ser usado para o filtro de metadados. Você pode usar outros serviços de IA do Azure, como Reconhecimento de Entidade Nomeada (NER) e compreensão de linguagem conversacional para extração de entidade.

      Extract metadata from query

Qual pode ser a dimensão dos nossos projetos?

Você pode adicionar até 50000 pares de respostas a perguntas a um único projeto. Se seus dados excederem 50.000 pares de respostas a perguntas, você deve considerar dividir o projeto.

Criar um projeto separado para cada domínio

Você também pode criar um projeto separado para cada domínio e manter os projetos separadamente. Todas as APIs exigem que o usuário passe o nome do projeto para fazer qualquer atualização para o projeto ou buscar uma resposta para a pergunta do usuário.

Quando a pergunta do usuário é recebida pelo serviço, você precisa passar o projectName no ponto de extremidade da API REST mostrado para buscar uma resposta do projeto relevante. Você pode localizar a URL na página Implantar projeto em Obter URL de previsão:

https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

Criar um recurso de idioma separado para cada domínio

Digamos que a equipa de marketing da Microsoft pretenda criar um bot de suporte ao cliente que responda às perguntas dos utilizadores sobre os produtos Surface e Xbox. Eles planejam atribuir equipes distintas para acessar projetos no Surface e no Xbox. Neste caso, é aconselhável criar dois recursos personalizados de resposta a perguntas - um para o Surface e outro para a Xbox. No entanto, você pode definir funções distintas para usuários que acessam o mesmo recurso.