Я создал бота-экскурсовода, который отправляет интересные факты о месте на основе геолокации

Опыт читателя
16
Я создал бота-экскурсовода, который отправляет интересные факты о месте на основе геолокации

Это история из Сообщества. Мы задали вопросы, бережно отредактировали и оформили по стандартам редакции

Аватар автора

Алексей Шипулин

знает все о своем районе

Страница автора

Я глава исследований «Яндекс Поиска» и в работе постоянно сталкиваюсь с нейросетями.

С одной стороны, помогаю понять, как органично встроить ИИ в поисковик, с другой — сам использую нейросети, чтобы проводить продуктовые исследования лучше и быстрее.

Например, в прошлом году я сделал внутренний инструмент, который с помощью ИИ анализирует открытые ответы в опросах. Раньше это был сложный и дорогой процесс: проверяющий лично вычитывал каждый текст. Моя разработка выполнила объем работы, на который человек потратил бы 20 лет.

Из-за этого опыта меня попросили проводить вебинары и рассказывать коллегам, как непрограммист может создавать подобные продукты без специализированных умений. Для наглядности нужно было придумать проект, который можно собрать с нуля за полтора часа. Нечто максимально простое в структуре и интересное широкой аудитории на 500 человек.

На одном из таких вебинаров и родился бот-экскурсовод, который делится интересными фактами о ближайших местах на основе геолокации.

Я подумал, что все любят путешествовать, а это очень интересное направление для разработки. Еще вспомнил старое исследование, в котором ChatGPT давали широту и долготу, а затем ряд инструкций, например «100 м прямо, поворот налево», чтобы проверить, может ли ИИ работать с пространственными данными. Авторы эксперимента добились неплохой точности.

В теории бот мог работать через один запрос, в котором будут координаты и просьба рассказать интересный факт о ближайшем месте. Когда мы делимся локацией в Telegram, как раз присылаем широту и долготу, так что организовать запрос можно было в одно нажатие кнопки.

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

Как я вспомнил о боте в отпуске

В путешествиях я привык запускать Atlas Obscura — чудесный путеводитель по необычным местам Земли. У них есть несколько великолепно сверстанных бумажных томов и уродливое, но работающее приложение. Почему-то в Амстердаме, где я оказался, точек на «Атласе» было не очень много. И все очевидные — вроде музея Ван Гога и дома Анны Франк.

Тогда я вспомнил про бота, поделился с ним локацией и тут же получил ужасно интересный факт про Вондельпарк, по которому шел. Спустя пять минут получил еще один факт про Вондельпарк, а затем еще и еще. Оказалось, что в логику бота я просто-напросто забыл заложить историю прошлых мест. Парк огромный, и, пока я не вышел из него спустя час, продолжал получать примерно одни и те же сообщения.

Мое печатное издание Atlas Obscura на английском
Мое печатное издание Atlas Obscura на английском

Кроме того, факты были бедно написаны. К ним не были прикреплены никакие изображения, а главное — было совершенно непонятно, что с ними делать дальше. Это был просто текст без локации: «Где-то рядом с вами классное граффити. Удачи!»

В общем, первая же реальная проверка показала, что у бота есть ряд фундаментальных проблем с интерфейсом. И в то же время концепция экскурсии по запросу ощущалась очень привлекательной. Я понял, что, несмотря на все недоработки, наткнулся на что-то важное.

Чем меня зацепила идея

Я занимаюсь удобством ИИ-продуктов. Это новая область, в которой пока что много слепых пятен. Несмотря на невероятные возможности современных нейросетей, они очень требовательны к тому, чтобы пользователь сам сформулировал, что от них хочет. Это не всегда просто и удобно.

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

Я понял, что практически случайно наткнулся на еще один подход — можно назвать его «пространственной осведомленностью». Мне кажется, это очень перспективно! В отличие от гаджетов-кулонов, которые постоянно слушают тебя и окружающих, или очков виртуальной реальности, которыми можно незаметно снимать окружающих, это максимально бережный способ пассивно передавать полезную информацию.

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

Как я продолжил разработку бота

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

Геометки и картинки. Разработкой я занимался по выходным и в качестве личного проекта, поэтому вся система не должна была слишком дорого стоить. Геометки находил через сервис Nominatim на OpenStreetMap — пришлось изрядно помучиться, но удалось добиться высокого качества работы.

Картинки подтягивал из бесплатной Викимедии, но от сервиса пришлось отказаться, так как половина изображений была совершенно рандомной. Тогда коллеги подсказали, как податься на грант в «Яндекс Облаке», — в итоге картинки я стал искать через API поисковика.

Улучшение текстов. Передо мной стояла еще одна важная задача — добиться интересных описаний. В идеале хотелось той же ясности и красоты, которую я встречал в Atlas Obscura. Мой нынешний промпт для ChatGPT занимает три страницы текста, еще есть дополнительные инструкции специально для русского языка. Удивительный объем, учитывая, что финальный ответ занимает лишь одно сообщение в Telegram.

Сообщение об интересном месте должно следовать схеме: интригующее начало → человеческая история, почему это важно → что можно увидеть в локации сегодня.

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

Личные тесты. Во время разработки я часами транслировал свою геопозицию и в результате стал гуру интересных фактов о своем районе. Я почувствовал, что у меня начинает что-то получаться, когда поймал себя на мысли, что жду следующего факта от бота.

Однажды бот рассказал о книге сказок, написанной в честь соседей улицы. Жена купила ее в книжном. В другой раз я узнал удивительную историю фабрики ковров по соседству — это здание, мимо которого я не задумываясь проходил два года.

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

Смена модели. Я не программист и не пишу код — разработка бота шла в Cursor. Стараюсь следовать парадигме: сначала составляю подробное техническое задание, необходимый стек технологий и пошаговый план выполнения, затем загружаю это в Cursor и слежу за исполнением.

В процессе обязательно что-то ломается, с первого раза удается сделать только совсем простые задачи. Разработка — долгий и муторный процесс.

Ты будто ставишь подробные задачи плохому исполнителю, а затем заставляешь его все переделывать, пока что-то не заработает.

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

Когда я рассказал о разработке в «Твиттере», ботом воспользовалось сразу много людей и он упал. Точное количество пользователей не знаю, потому что додумался поставить счетчик, только когда занимался восстановлением.

Кроме того, API-запросы быстро съели бюджет — пришлось перейти с GPT-5 на более простую и дешевую модель GPT-5 Mini. Смена потребовала сложных промптов и обработки ошибок: чем проще модель, тем выше риск получить ответ не в том формате. Тогда нужно отправлять новый запрос, что еще сильнее замедляет работу.

Итоги и планы

Несмотря на все сложности, отзывы были чудесные! Приходили «вау» со всего света. Например, кому-то бот рассказал о закопанной реке в Порту — «откуда он знает, этого нет в путеводителях». Кому-то — про пруд под прозвищем Таблетка во Внукове — «эх, не догадался, что его так прозвали из-за фармзавода рядом».

Критика, конечно, тоже была, но в основном из-за проблем с доступом. Из-за нагрузки после начала сессии бот мог часами не отвечать, а после переключения на модель попроще — реже находить что-то вблизи пользователя. Пришлось в таких случаях увеличивать радиус и использовать запасной вариант. Если младшая модель не находит интересные места по геолокации, вместо ответа возвращает специальный тег. Мой код видит его и переключает модель на старшую и более умную версию.

Один из отзывов о боте из «Твиттера»
Один из отзывов о боте из «Твиттера»

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

Еще у меня много друзей по всему миру, которым очень интересен бот, ведь он мультиязычный. Проблема в том, что Telegram не так распространен в Европе и США, а WhatsApp* хоть и разрешает делиться локацией, но не позволяет сделать такого же бота. Поэтому я думаю о полноценном приложении — со мной уже связались разработчики одной платформы, которым было бы интересно попробовать внедрить себе такую механику.

Отдельный больной вопрос — стоимость: если пользовательская база продолжит расти, я не смогу поддерживать проект за свой счет. При этом текущих функций недостаточно, чтобы люди платили. Пока я прикрутил добровольные донаты через звезды Telegram — что-то уже капает. Остается надеяться на то, что модели продолжат дешеветь.

Даже если я останусь единственным пользователем бота, буду все равно считать, что все бессонные ночи были проведены не зря. Бродить с ним по закоулкам разных городов — особое удовольствие.

РедакцияСоздали приложение или бота для путешествий? Расскажите об этом:
    Вот что еще мы писали по этой теме
    Сообщество