Очевидно, разработка технологий искусственного интеллекта становится одним из приоритетных направлений в деятельности Microsoft. В ходе пленарного выступления на конференции Build 2016 был анонсирован новый набор инструментов для разработки ботов — Microsoft Bot Framework.
Для создания ботов даже не потребуется глубокое знание программирования: основные возможности для обучения искусственного интеллекта новым словам и фразам, определенным сценариям и событиям доступны через наглядный интерфейс.
В этой статье мы создадим тестового бота с использованием Microsoft Bot Framework, обучим и протестируем его с помощью встроенного эмулятора. Идея бота проста — он должен понимать человеческий язык и отвечать, когда его спросят о погоде в каком-то городе.
Архитектура проекта
Итак, вот как будет выглядеть схема работы нашего бота:
Как можно понять, после получения сообщения оно сначала отправляется в «умное» API Microsoft Cognitive Services — Language Understanding Intelligent Service, сокращенно «LUIS». Именно с использованием LUIS мы сможем обучить бота понимать естественный язык и отвечать прогнозом погоды. В ответ на каждое такое сообщение LUIS возвращает всю содержащуюся в нем информацию в JSON.
Для краткости мы не будем рассказывать о процессе регистрации в Bot Framework и LUIS, так как никаких трудностей с этим возникнуть не должно. Также просим обратить внимание, что на данный момент Microsoft Bot Framework не поддерживает русский язык.
Используем LUIS
Видео, кратко объясняющее принцип работы LUIS:
Итак, после регистрации приложения в LUIS перед нами открывается довольно простой интерфейс, в котором мы можем натренировать наш ИИ на определенных фразах. В данном случае обучим его понимать вопросы о погоде:
LUIS разбивает приложения на действия, на этом скриншоте их три: погода (weather), состояние (condition) и место (location). Подробнее о действиях (intents) рассказано в официальном видео выше.
LUIS в действии
Выполнив базовое обучение, попробуем сделать HTTP запрос к LUIS и получить ответ в JSON. Давайте спросим его: «Is it cloudy in Seattle?» («В Сиэтле сейчас облачно?») — и вот что он нам вернет:
Теперь попытаемся использовать это в реальном боте.
Создание бота
В качестве платформы будем использовать ASP.NET. Для начала необходимо добавить шаблон Bot Framework в Visual Studio. Подробную инструкцию по этому найдете в официальной документации.
Теперь создадим новый проект с его использованием:
По сути, это простое приложение всего с одним контроллером, который и занимается обработкой сообщений от пользователей. Давайте напишем простой код, который на любое сообщение будет отвечать «Welcome to Streamcode»:
По сути, самый простой бот уже готов. Проверить, работает ли он, проще всего через встроенный эмулятор, который, по сути, является просто мессенджером, который подключен к нашему боту.
Подробная инструкция по установке и настройке эмулятора.
Запустив эмулятор, попробуем пообщаться с новосозданным ботом:
Как и ожидалось, на все сообщения он отвечает одной фразой.
Интеграция с LUIS
Так как эта статья является вводом в Microsoft Bot Framework, то мы не будем публиковать тут все исходные коды, приведем лишь самые важные. Остальные мы разместили в GitHub-репозитории.
1. Передаем сообщение в LUIS, получаем ответ и на основе наиболее релевантного «действия» (intent) выдаем ответ.
Прогнозы погоды получаем через API OpenWeatherMap.com.
2. Заготовленные шаблоны ответов.
Финальный результат: