Как API обновления QnAMaker узнает, какой из них обновить? - PullRequest
1 голос
/ 03 мая 2020

API обновления QnAMaker КБ имеет следующую полезную нагрузку:

  "update": {
"name": "QnA Maker FAQ Prompts Bot",
"qnaList": [
  {
    "id": 2,
    "answer": "You can use our REST apis to create a KB. See here for details: https://docs.microsoft.com/en-us/rest/api/cognitiveservices/qnamaker/knowledgebase/create",
    "source": "Custom Editorial",
    "questions": {
      "add": [],
      "delete": []
    },
    "metadata": {
      "add": [],
      "delete": []
    },
    "context": {
      "isContextOnly": false,
      "promptsToAdd": [
        {
          "displayText": "Add Prompts",
          "displayOrder": 0,
          "qna": {
            "id": 0,
            "answer": "Click here to know more https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/multiturn-conversation",
            "source": "Editorial",
            "questions": [
              "How can I add prompts?"
            ],
            "metadata": [],
            "alternateQuestionClusters": [],
            "context": {
              "isContextOnly": false,
              "prompts": []
            }
          },
          "qnaId": 0
        },
        {
          "displayText": "Delete Prompts",
          "displayOrder": 0,
          "qna": {
            "id": 0,
            "answer": "Click here to know more https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/multiturn-conversation",
            "source": "Editorial",
            "questions": [
              "How can I delete delete prompts?"
            ],
            "metadata": [],
            "alternateQuestionClusters": [],
            "context": {
              "isContextOnly": false,
              "prompts": []
            }
          },
          "qnaId": 0
        },
        {
          "displayText": "Update Knowledgebase",
          "displayOrder": 0,
          "qna": null,
          "qnaId": 3
        }
      ],
      "promptsToDelete": [
        3
      ]
    }
  }
]

}}

Как узнать, что такое «id» Вопроса, который я хочу обновить. Мое требование - обновлять текст (строку) ответа программно. Существующий набор вопросов и ответов был изначально загружен кем-то другим, и я нигде не могу видеть уникальный идентификатор для каждой пары вопросов и ответов в пользовательском интерфейсе. Как настроить таргетинг на определенный вопрос и ответ для обновления?

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Вы можете использовать API для получения этой пары идентификаторов / вопросов, особенно операции Get Download Knowledgebase.

Подробности операций перечислены здесь .

Вы можете Выполните непосредственное тестирование в консоли, используя свой идентификатор базы знаний и свой ключ: https://westus.dev.cognitive.microsoft.com/docs/services/5a93fcf85b4ccd136866eb37/operations/knowledgebases_download/console

Результат будет иметь следующий формат:

{
  "qnaDocuments": [
    {
      "id": 1,
      "answer": "You can change the default message if you use the QnAMakerDialog. See this for details: https://docs.botframework.com/en-us/azure-bot-service/templates/qnamaker/#navtitle",
      "source": "Custom Editorial",
      "questions": [
        "How can I change the default message from QnA Maker?"
      ],
      "metadata": []
    },
    {
      "id": 2,
      "answer": "You can use our REST apis to manage your KB. See here for details: https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9baa",
      "source": "Custom Editorial",
      "questions": [
        "How do I programmatically update my KB?"
      ],
      "metadata": [
        {
          "name": "category",
          "value": "api"
        }
      ]
    },
    {
      "id": 3,
      "answer": "QnA Maker provides an FAQ data source that you can query from your bot or application. Although developers will find this useful, content owners will especially benefit from this tool. QnA Maker is a completely no-code way of managing the content that powers your bot or application.",
      "source": "https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs",
      "questions": [
        "Who is the target audience for the QnA Maker tool?"
      ],
      "metadata": []
    },
    {
      "id": 4,
      "answer": "<p>You can sign in with your <a href=\"https://account.microsoft.com/account\" data-linktype=\"external\">Microsoft account</a></p>",
      "source": "https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs",
      "questions": [
        "How do I sign in to the QnA Maker portal?"
      ],
      "metadata": []
    },
    {
      "id": 5,
      "answer": "<p>Yes, currently the QnA Maker tool is free to use. However, usage is metered for each account. For more information, see <a href=\"https://qnamaker.ai/Documentation/Authentication\" data-linktype=\"external\">Authentication and subscription keys</a></p>",
      "source": "https://docs.microsoft.com/en-in/azure/cognitive-services/qnamaker/faqs",
      "questions": [
        "Is the QnA Maker Service free?"
      ],
      "metadata": []
    }
  ]
}
1 голос
/ 04 мая 2020

Вместо того, чтобы загружать базу знаний и пытаться найти правильный вопрос, я бы предложил QnA Maker выполнить работу через конечную точку Генерировать ответ . URL запроса https://docs.microsoft.com/en-us/azure/cognitive-services/qnamaker/how-to/metadata-generateanswer-usage, и вам также понадобится ваш ключ в заголовке. Но если вы сможете сделать этот звонок, вы получите ответ обратно:

{
    "answers": [
        {
            "score": 38.54820341616869,
            "Id": 20,
            "answer": "There is no direct integration of LUIS with QnA Maker. But, in your bot code, you can use LUIS and QnA Maker together. [View a sample bot](https://github.com/Microsoft/BotBuilder-CognitiveServices/tree/master/Node/samples/QnAMaker/QnAWithLUIS)",
            "source": "Custom Editorial",
            "questions": [
                "How can I integrate LUIS with QnA Maker?"
            ],
            "metadata": [
                {
                    "name": "category",
                    "value": "api"
                }
            ]
        }
    ]
}

Похоже, вы не уверены в тексте вопроса, поэтому, если вы сделаете это таким образом, вы также можете используйте возвращенное значение score, чтобы проверить, достаточно ли достоверно для обновления. Когда у вас есть этот идентификатор, вы можете вызвать API Programmati c, как описано в вашем вопросе.

...