Метод обратного движения

в 9:16, , рубрики: ai api, telegrambot, ии-ассистент, нейросети, саморазвитие

"Иногда движение назад - это путь вперед"

Кадр из к/ф “Первому игроку приготовиться”, 2018 г. Режиссер - Стивен Спилберг

Кадр из к/ф “Первому игроку приготовиться”, 2018 г. Режиссер - Стивен Спилберг

Фильм Стивена Спилберга «Первому игроку приготовиться» — не просто один из моих любимых. Те, кто смотрел, поймут, о чем я. Эдакий «Назад в будущее» наших дней, но вполне самодостаточный, с глубокими смыслами и кучей «пасхалок» — интересных открытий, неочевидных на первый взгляд.

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

В определенных ситуациях я заметил, что если действовать не так как привык я или как принято действовать в подобных ситуациях, можно не просто достичь цели, но и зачастую превзойти свои изначальные ожидания. Объяснить это можно тем, что, планируя путь к достижению поставленной цели через прямое решение набора последовательных задач, ты с одной стороны фокусируешься на результате (что безусловно неплохо), но в то же время ограничиваешь себя и не замечаешь возможности, которые могут тебе помочь и даже облегчить путь. Казалось бы «очевидная очевидность», но пока не прочувствуешь на себе, не поймёшь всю магию это процесса.

За историческими примерами далеко ходить не нужно. Мне нравятся те, которые связаны с военной тактикой и стратегией. Где, как не на поле боя, полководцу нужно быть гибким и незашоренным? Так известен факт, что во времена противостояния греческих городов‑полисов в одной из битв между войсками непобедимой Спарты и только набирающих силы Фив, фиванский полководец Эпаминонд использовал интересный ход. Он не захотел идти напрямую и испытывать мастерство своих воинов против великолепно натренированных спартанцев. Вместо этого он решил пересмотреть изначальный строй своей армии с учётом особенностей и практики ведения сражений того времени. По умолчанию фаланги войск строились относительно сбалансированными (если не одинаковыми) по всей своей длине — с глубиной примерно 10 шеренг. Пехота, имея с той и другой стороны, имя на вооружении мечи или копья в правой руке и щиты в левой, преимущественно атаковала с правой стороны — т. е. левый фланг врага. Эпаминонд, понимая силу и мастерство спартанцев, решил значительно усилить левый фланг своей армии, увеличив его глубину до 50 шеренг. Таким образом, создав совершенной нехарактерный для того времени строй — косую фалангу (или косой строй). В итоге в этой битве спартанцы были побеждены.

Схема сражения, в котором Эпаминонд применил нехарактерный для того времени строй

Схема сражения, в котором Эпаминонд применил нехарактерный для того времени строй

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

Лично про себя могу сказать, что проанализировав несколько рядовых ситуаций, в которых я оказывался и действовал (зачастую неосознанно) не так, как обычно, я понял, что вряд ли мог бы получить именно такой (крайне положительный) результат. Мои достижения скорее всего были бы намного скромнее.

Не без помощи ИИ

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

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

Плюс я решил, что можно убить сразу двух зайцев:

  • сделать с помощью нейросети небольшой pet‑проект в виде чат‑бота, через который можно было бы поделиться сформулированным Методом,

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

Это, кстати, тоже можно воспринимать как проявление Метода — не каждый бы стал заморачиваться с чат‑ботом. Вероятный сценарий — начать писать книгу, возможно вести текстовый или видеоблог, подкасты и т. п. А я почувствовал в этой «автоматизации» свое «обратное движение». Не как все, но при этом мне интересно двигаться именно в данном направлении.

Проба пера

Не будучи профессиональным программистом, для написания кода я, конечно, же воспользовался помощью нейросети. Остановил свой выбор на Claude Sonnet 3.5 от Anthropic. Мне понравилось, как она пишет код, поясняет варианты реализации и вносит необходимые корректировки на основе моих запросов. Для меня это означало минимальный порог вхождения.

В качестве базового функционала телеграм‑бота я решил сделать базу знаний по принципам Метода и ИИ‑помощника, который помогал бы пользователю решать задачи или анализировать ситуации согласно Методу. ИИ‑помощник я решил реализовывать также через API Anthropic, хотя можно был использовать и другой.

С нейросетью выработали примерную структуру проекта.

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

Базовая структура получилась следующая.

Базовая структура бота

Базовая структура бота

Все написано на python. Создал бот и получен токен для него в Telegram, зарегистрировался и получил ключ API от Anthropic. У API есть определенные ограничения на использование токенов. Пока неясно, хватит ли этого для полноценной работы бота, но для прототипа должно хватить. В личном кабинете можно отслеживать статистику использования токенов и денежных средств.

Лимиты токенов на различные модели Anthropic

Лимиты токенов на различные модели Anthropic

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

При разработке промпта нужно учитывать, что он будет отправляться каждый раз (где это заложено в коде) при общении ИИ с пользователем — а значит будут расходоваться токены. Соответственно нужно соблюсти баланс между подробными инструкциями и краткостью промпта.

Для того, чтобы бот не просто делился с пользователями информацией и общался в соответствии с принципами Метода, а ещё и помогал мне собирать статистику по использованию, я добавил функции анализа. Ну и без базы данных никуда. В общем в структуре проекта появились следующие модули с аналитикой и база данных.

Модуль для работы с аналитикой и базой данных

Модуль для работы с аналитикой и базой данных

В качестве метрик решил, что для начала мне будут интересны следующие

1. Пользовательские метрики

Метрика

Описание

Уникальные пользователи

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

Новые пользователи

Количество пользователей, впервые использовавших бота. Определяется по первому действию в системе.

Вернувшиеся пользователи

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

Активные пользователи

Пользователи с минимум 3 действиями за период. Показывает реальную вовлеченность.

2. Метрики вовлеченности

Метрика

Описание

Общая активность

Общее количество действий пользователей (команды, сообщения, просмотры базы знаний).

Использование команд

Статистика по каждой команде, частота использования различных функций.

Пиковые часы

Распределение активности по часам, определение наиболее активного времени.

Консультации

Количество начатых и завершенных консультаций, процент завершения, средняя длительность консультации.

3. Метрики упражнений

Метрика

Описание

Начатые упражнения

Количество начатых упражнений, разбивка по типам.

Завершенные упражнения

Количество полностью завершенных упражнений, процент завершения от начатых.

Популярность упражнений

Частота выполнения различных упражнений.

Время выполнения

Среднее время выполнения упражнений.

Процент успешного завершения

Доля успешных попыток от общего количества.

Количество попыток

Среднее количество попыток на одно упражнение.

4. Метрики ошибок бота

Метрика

Описание

Общее количество ошибок

Все зафиксированные ошибки, процент ошибок от общего числа действий.

Типы ошибок

Классификация ошибок по типам, частота каждого типа.

Затронутые пользователи

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

Добавил их в код, проверил метрики по запросу и по расписанию - работают. С этим уже можно набирать статистику и анализировать. В будущем наверняка ещё добавлю.

Полная структура бота

Полная структура бота

Локально бот был собран. Пора было переходить в размещению на сервере. Была пара неудачных попыток запуска на серверах, расположенных в России. Бот работал, но API никак не хотел общаться. Не сразу сообразил, что дело в локации — также, как и при обращении к Claude через сайт. Нужно было развернуть бот на зарубежном сервере. Настроил сервер, перенес файлы, проверил запуск через файл напрямую. Все работало. После этого настроил службу для запуска бота.

It’s alive! It’s alive!

И вот, наконец, я запустил службу на сервере, проверил ее статус и работоспособность. Он действительно работает! Автономно, выдает ответы почти такие, как мне хочется. Да, улучшать есть что. План на расширение функционала тоже немаленький. Но главное, что есть работающий прототип, на основе которого, я могу делиться Методом с другими и получать обратную связь.

В целом это мой первый осознанный опыт самостоятельной автоматизации практической идеи / задачи. Я доволен и результатом, и процессом — разбираться в деталях бота, устранять ошибки, делать настойку и расширять функции было очень увлекательно!

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

Автор: james_backward

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js