Есть ли способ, которым чат-бот azure может запросить базу данных и вернуть ответ из базы данных? может использовать qna maker или luis? - PullRequest
1 голос
/ 07 мая 2020

Я пытаюсь создать чат-бота, который запрашивает базу данных и возвращает ответ из базы данных в зависимости от заданного вопроса. есть ли способ подключить чат-бота azure к базе данных, скажем, azure SQL?

Ответы [ 2 ]

0 голосов
/ 12 июня 2020

Если вы используете azure хранилище, такое как хранилище таблиц или BLOB-объекты. Предлагаю воспользоваться поисковой системой Azure. Это поможет вам решить вашу проблему, но, безусловно, увеличит стоимость.

0 голосов
/ 07 мая 2020

Согласно вашей дополнительной информации, я изменил свой ответ. Исходное предложение с использованием QnA Maker приведено ниже. Если вам нужно получить данные из базы данных, например, оценки учащихся, лучший способ сделать это - использовать диалоговое окно для заполнения места. Лично я использую и предпочитаю водопадные диалоги, инициируемые распознаванием намерений с помощью LUIS, но есть и другие способы сделать это.

  • Сначала используйте LUIS, чтобы определить намерение пользователя и запустить соответствующий диалог. Мне нравится образец DispatchBot для демонстрации того, как выполнять базовое c распознавание намерений (но в этом образце диалоговые окна содержатся в том же файле. js, что мне не нравится. Я предпочитаю держать свои диалоги в отдельные файлы).
  • Если возможно, вы захотите попытаться извлечь соответствующие сущности, чтобы пользователю не приходилось вводить их повторно. Существует множество руководств о том, как это сделать, но вот хороший .
  • Используйте диалоговое окно, чтобы собрать всю необходимую информацию для вызова вашей базы данных. Пример многооборотной подсказки - хороший пример того, как это сделать. Вам также необходимо учесть в своем коде извлечение сущностей, чтобы не повторять подсказки пользователю. Я делаю это через условие if: если объект существует, верните его к следующему шагу; иначе запросить у пользователя сущность. Вот пример.
if (step._info.options.entities.orderNumber) {
    return await step.next(step._info.options.entities.orderNumber[0].toUpperCase());
} else {
    return await step.prompt(ORDER_PROMPT, {
        prompt: 'Please provide your order number.',
        retryPrompt: 'Please enter a valid order number.',
    });
}
  • Вам нужно будет где-то временно сохранить значение. Самый простой способ - сохранить его в контексте шага (я называю его шаг ) вашего водопада. Например, на шаге, следующем за предыдущим, вы должны сохранить номер заказа в моем примере через step.values.orderNumber = step.result; (или step.result.value при возврате выбора выбора).
  • Когда у вас есть все значения, вы можете запросить свой БД. Метод для этого будет зависеть от того, какую БД вы используете. Но если предположить, что вы делаете это через какого-то помощника, вы просто вызовете что-то вроде const score = await queryMyDb(student, subject). Затем вы можете ответить пользователю с оценкой.

Этого должно быть достаточно, чтобы попытаться получить информацию. Если вы попытаетесь, но проблема не исчезнет, ​​вы можете открыть отдельный запрос с указанием вашего кода и конкретных c проблем, с которыми вы сталкиваетесь.


Предыдущий ответ до получения дополнительного контекста:

Предполагая, что вы просто хотите получить ответы на вопросы в одной паре вопрос-ответ, похоже, что вам просто нужно развернуть QnA Maker и создать бота для его использования. Microsoft предоставляет подробные инструкции о том, как создавать, обучать и публиковать sh базу знаний QnA Maker. Попробуйте, и если у вас возникнут какие-либо проблемы, вернитесь и задайте их с помощью отдельного вопроса вместе с кодом, который вы пробовали.

QnA Maker может поддерживать подсказки для многооборотных разговоров также. Вы по-прежнему имеете дело с отдельными парами вопрос-ответ, но вы можете предоставить пользователям простой выбор, чтобы они могли вызывать связанные ответы одним нажатием кнопки.

...