Incorporación de varias categorías al bot de preguntas frecuentes

En este tutorial aprenderá a:

  • Creación de un proyecto y etiquetado de pares de preguntas y respuestas en categorías distintas con metadatos
  • Creación de un proyecto independiente para cada dominio
  • Creación de un recurso de idioma independiente para cada dominio

Al crear un bot de preguntas frecuentes, puede encontrar casos de uso que requieran que aborde consultas en varios dominios. Supongamos que el equipo de marketing de Microsoft quiere crear un bot de ayuda al cliente que responda a las consultas comunes del usuario sobre varios productos de Surface. Para simplificar el ejercicio, usaremos dos direcciones URL de preguntas frecuentes, el lápiz de Surface y los auriculares de Surface para crear el proyecto.

Creación de un proyecto con metadatos específicos de dominio

Los creadores de contenido pueden usar documentos para extraer pares de preguntas y respuestas o agregar pares de preguntas y respuestas personalizados al proyecto. Para agrupar estas preguntas y respuestas en dominios o categorías específicos, puede agregar metadatos.

En cuanto al bot de productos Surface, puede realizar los pasos siguientes para crear un bot que responda a las consultas de ambos tipos de productos:

  1. Para agregar las siguientes direcciones URL de preguntas frecuentes como orígenes, seleccione Add source>URLs> (Agregar origen > Direcciones URL) y, a continuación, Agregar todo una vez que haya agregado cada una de las direcciones URL siguientes:

    Preguntas frecuentes del lápiz de Surface
    Preguntas frecuentes sobre los auriculares de Surface

    Screenshot of add URL UI.

  2. En este proyecto, tenemos pares de preguntas y respuestas sobre dos productos y nos gustaría distinguirlos para poder buscar respuestas entre las preguntas y respuestas de un producto determinado. Para ello, se puede actualizar el campo de metadatos de los pares de preguntas y respuestas.

    Como puede ver en el ejemplo siguiente, hemos agregado metadatos con el producto como clave y surface_pen o surface_earbuds como valores, siempre que corresponda. Puede ampliar este ejemplo para extraer datos de varios productos y agregar un valor diferente para cada producto.

    Screenshot of metadata example.

  3. Ahora, a fin de restringir el sistema para buscar la respuesta en un producto determinado, tendrá que pasar ese producto como filtro en la API de REST de respuesta personalizada a preguntas.

    La dirección URL de la predicción de la API de REST se puede recuperar desde el panel de implementación del proyecto:

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

    En el cuerpo JSON de la llamada API, hemos pasado surface_pen como valor para el producto de metadatos. Por lo tanto, el sistema solo buscará la respuesta entre los pares de preguntas y respuestas con los mismos metadatos.

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

    Puede obtener el valor de los metadatos en función de la entrada de usuario de las maneras siguientes:

    • Tome explícitamente el dominio como entrada de usuario a través del cliente bot. Por ejemplo, tal como se muestra a continuación, puede tomar la categoría de producto como entrada de usuario cuando se inicia la conversación.

      Take metadata input

    • Identifique implícitamente el dominio en función del contexto del bot. Por ejemplo, en caso de que la pregunta anterior se realizara en un producto de Surface determinado, el cliente puede guardarla como contexto. Si el usuario no especifica el producto en la siguiente consulta, puede pasar el contexto del bot como metadatos a la API Generate Answer.

      Pass context

    • Extraiga la entidad de la consulta de usuario para identificar el dominio que se usará en el filtro de metadatos. Puede usar otros de servicios de Azure AI, como Reconocimiento de entidades con nombre (NER) y reconocimiento del lenguaje conversacional para la extracción de entidades.

      Extract metadata from query

¿Qué tamaño pueden tener los proyectos?

Puede agregar hasta 50 000 pares de preguntas y respuestas a un único proyecto. Si los datos superan los 50 000 pares de preguntas y respuestas, debe considerar la posibilidad de dividir el proyecto.

Creación de un proyecto independiente para cada dominio

También puede crear un proyecto independiente para cada dominio y mantener los proyectos por separado. Todas las API requieren que el usuario pase el nombre del proyecto para realizar cualquier actualización en el proyecto o capturar una respuesta a la pregunta del usuario.

Cuando el servicio reciba la pregunta del usuario, deberá pasar el objeto projectName en el punto de conexión de la API de REST que se mostró para obtener una respuesta del proyecto correspondiente. Puede encontrar la dirección URL en la página Implementar proyecto en Obtener dirección URL de la predicción:

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

Creación de un recurso de idioma independiente para cada dominio

Supongamos que el equipo de marketing de Microsoft quiere crear un bot de ayuda al cliente que responda a las consultas del usuario sobre varios productos de Surface y Xbox. Para ello, planea asignar distintos equipos para acceder a proyectos en Surface y Xbox. En este caso, se recomienda crear dos recursos de respuesta personalizada a preguntas: uno para Surface y otro para Xbox. Sin embargo, puede definir roles distintos para los usuarios que acceden al mismo recurso.