Aggiungere più categorie al bot domande frequenti

In questa esercitazione verranno illustrate le procedure per:

  • Creare coppie di risposte a un progetto e a una domanda di tag in categorie distinte con metadati
  • Creare un progetto separato per ogni dominio
  • Creare una risorsa di lingua separata per ogni dominio

Quando si compila un bot domande frequenti, è possibile che si verifichino casi d'uso che richiedono di risolvere le query in più domini. Si supponga che il team di marketing di Microsoft voglia creare un bot di supporto clienti che risponda alle query utente comuni su più prodotti Surface. Per motivi di semplicità, verrà usato due URL di domande frequenti, Surface Pen e Surface Earbuds per creare il progetto.

Creare un progetto con metadati specifici del dominio

Gli autori di contenuto possono usare documenti per estrarre coppie di risposte alle domande o aggiungere coppie di risposte alle domande personalizzate al progetto. Per raggruppare queste domande e risposte in domini o categorie specifiche, è possibile aggiungere metadati.

Per il bot nei prodotti Surface, è possibile seguire questa procedura per creare un bot che risponde alle query per entrambi i tipi di prodotto:

  1. Aggiungere gli URL di domande frequenti seguenti come origini selezionando Aggiungi URL di origine> e quindi Aggiungi tutto dopo aver aggiunto ognuno degliURL> seguenti:

    Domande frequenti sulla penna di Surface
    Domande frequenti su Surface Earbuds

    Screenshot dell'interfaccia utente dell'URL aggiunto.

  2. In questo progetto sono disponibili coppie di risposte alle domande su due prodotti e si vuole distinguere tra loro in modo che sia possibile cercare risposte tra domande e risposte per un determinato prodotto. A tale scopo, è possibile aggiornare il campo metadati per le coppie di risposte alla domanda.

    Come si può vedere nell'esempio seguente, è stato aggiunto un metadati con product come chiave e surface_pen o surface_earbuds come valori ovunque applicabili. È possibile estendere questo esempio per estrarre i dati in più prodotti e aggiungere un valore diverso per ogni prodotto.

    Screenshot dell'esempio di metadati.

  3. Ora, per limitare il sistema a cercare la risposta in un determinato prodotto, è necessario passare tale prodotto come filtro nell'API REST che risponde alle domande.

    L'URL di stima dell'API REST può essere recuperato dal riquadro Distribuisci progetto:

    Screenshot della pagina Distribuisci progetto con l'URL di stima visualizzato.

    Nel corpo JSON per la chiamata API è stato passato surface_pen come valore per il prodotto metadati. Quindi, il sistema cercherà solo la risposta tra le coppie QnA con gli stessi metadati.

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

    È possibile ottenere il valore dei metadati in base all'input utente nei modi seguenti:

    • Accetta in modo esplicito il dominio come input dall'utente tramite il client bot. Ad esempio, come illustrato di seguito, è possibile accettare la categoria di prodotti come input dall'utente quando la conversazione viene avviata.

      Accettare l'input dei metadati

    • Identificare in modo implicito il dominio in base al contesto del bot. Ad esempio, nel caso in cui la domanda precedente fosse in un determinato prodotto Surface, può essere salvata come contesto dal client. Se l'utente non specifica il prodotto nella query successiva, è possibile passare il contesto del bot come metadati all'API Genera risposta.

      Passaggio del contesto

    • Estrarre l'entità dalla query utente per identificare il dominio da usare per il filtro dei metadati. È possibile usare altri servizi di Intelligenza artificiale di Azure, ad esempio Riconoscimento entità denominata (NER) e comprensione del linguaggio di conversazione per l'estrazione di entità.

      Estrarre i metadati dalla query

Quanto grandi possono essere i nostri progetti?

È possibile aggiungere fino a 50000 coppie di risposte alle domande a un singolo progetto. Se i dati superano 50.000 coppie di risposte alle domande, è consigliabile dividere il progetto.

Creare un progetto separato per ogni dominio

È anche possibile creare un progetto separato per ogni dominio e gestire separatamente i progetti. Tutte le API richiedono all'utente di passare il nome del progetto per eseguire qualsiasi aggiornamento al progetto o recuperare una risposta alla domanda dell'utente.

Quando la domanda utente viene ricevuta dal servizio, è necessario passare l'oggetto projectName nell'endpoint dell'API REST visualizzato per recuperare una risposta dal progetto pertinente. È possibile individuare l'URL nella pagina Distribuisci progetto in Ottenere l'URL di stima:

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

Creare una risorsa di lingua separata per ogni dominio

Si supponga che il team di marketing di Microsoft voglia creare un bot di supporto clienti che risponde alle query utente sui prodotti Surface e Xbox. Si prevede di assegnare team distinti per accedere ai progetti in Surface e Xbox. In questo caso, è consigliabile creare due risorse di risposta alle domande, una per Surface e un'altra per Xbox. È tuttavia possibile definire ruoli distinti per gli utenti che accedono alla stessa risorsa.