Обзор: создаем погодного бота на основе Microsoft Bot Framework и искусственного интеллекта LUIS

Очевидно, разработка технологий искусственного интеллекта становится одним из приоритетных направлений в деятельности Microsoft. В ходе пленарного выступления на конференции Build 2016 был анонсирован новый набор инструментов для разработки ботов — Microsoft Bot Framework.

Для создания ботов даже не потребуется глубокое знание программирования: основные возможности для обучения искусственного интеллекта новым словам и фразам, определенным сценариям и событиям доступны через наглядный интерфейс.

033016_0449_FromAnalyti2

В этой статье мы создадим тестового бота с использованием Microsoft Bot Framework, обучим и протестируем его с помощью встроенного эмулятора. Идея бота проста – он должен понимать человеческий язык и отвечать, когда его спросят о погоде в каком-то городе.

Архитектура проекта

Итак, вот как будет выглядеть схема работы нашего бота:

chat-bot-flow_2

Как можно понять, после получения сообщения оно сначала отправляется в «умное» API Microsoft Cognitive Services — Language Understanding Intelligent Service, сокращенно «LUIS». Именно с использованием LUIS мы сможем обучить бота понимать естественный язык и отвечать прогнозом погоды. В ответ на каждое такое сообщение LUIS возвращает всю содержащуюся в нем информацию в JSON.

Для краткости мы не будем рассказывать о процессе регистрации в Bot Framework и LUIS, так как никаких трудностей с этим возникнуть не должно. Также просим обратить внимание, что на данный момент Microsoft Bot Framework не поддерживает русский язык.

Используем LUIS

Видео, кратко объясняющее принцип работы LUIS:

Итак, после регистрации приложения в LUIS перед нами открывается довольно простой интерфейс, в котором мы можем натренировать наш ИИ на определенных фразах. В данном случае обучим его понимать вопросы о погоде:
luis-samples
LUIS разбивает приложения на действия, на этом скриншоте их три: погода (weather), состояние (condition) и место (location). Подробнее о действиях (intents) рассказано в официальном видео выше.

LUIS в действии

Выполнив базовое обучение, попробуем сделать HTTP запрос к LUIS и получить ответ в JSON. Давайте спросим его: «Is it cloudy in Seattle?» («В Сиэтле сейчас облачно?») — и вот что он нам вернет:

luis-json

Теперь попытаемся использовать это в реальном боте.

Создание бота

В качестве платформы будем использовать ASP.NET. Для начала необходимо добавить шаблон Bot Framework в Visual Studio. Подробную инструкцию по этому найдете в официальной документации.

Теперь создадим новый проект с его использованием:

bot-vs

По сути, это простое приложение всего с одним контроллером, который и занимается обработкой сообщений от пользователей. Давайте напишем простой код, который на любое сообщение будет отвечать «Welcome to Streamcode»:

bot-controller

По сути, самый простой бот уже готов. Проверить, работает ли он, проще всего через встроенный эмулятор, который, по сути, является просто мессенджером, который подключен к нашему боту.

Подробная инструкция по установке и настройке эмулятора.

Запустив эмулятор, попробуем пообщаться с новосозданным ботом:

bot-f-message

Как и ожидалось, на все сообщения он отвечает одной фразой.

Интеграция с LUIS

Так как эта статья является вводом в Microsoft Bot Framework, то мы не будем публиковать тут все исходные коды, приведем лишь самые важные. Остальные мы разместили в GitHub-репозитории.

1. Передаем сообщение в LUIS, получаем ответ и на основе наиболее релевантного «действия» (intent) выдаем ответ.

bot-code

Прогнозы погоды получаем через API OpenWeatherMap.com.

2. Заготовленные шаблоны ответов.

bot-humanlanguage

Финальный результат:

bot-weather

Материалы для дальнейшего обучения

  1. Документация по Bot Framework
  2. Channel9: создаем чат-бота
  3. Документация по LUIS
  4. Microsoft Cognitive Services 

Introduction to the Bot Framework: Building a weather bot