Сейчас бот уже может в групповых чатах обрабатывать ивенты и делать действия, аналогично обычному чату. Если нужны именно определенные действия по алгоритму (не AI), то это все можно в целом доработать и настроить, даже есть модуль работы с речью. Если же нужно именно добавить работу с AI - то пока что есть интеграция в один клик только со Сбером, с остальными пока нет и не изучал. Про фото - аналогично, тоже пока нет моделей подобных. Другие интеграции в целом также можно сделать через плагин новый.
Можете в целом посмотреть базовую версию и понять на сколько вам подходит. Если вдруг заинтересует, то можно посмотреть какие доработки и что можно улучшить, чтобы лучше подошло к вашему кейсу.
Если я правильно понял вопрос, то тогда это реализуется через статус действия и флаг обработки процессом "разблокировки" следующего действия.
Все действия связаны в "жесткую" последовательную цепочку (они могу разветвляться). То есть каждое следующее действие ждет завершения предыдущего действия.
Сигналом для обработки действия является статус pending, после обработки действие переходит в статус failed или completed, что является сигналом для обработки процессом "разблокировки" следующего действий по цепочке. После обработки данного действия разблокировщиком он проставляется флаг обработки действия, и более к нему уже не возвращается.
Полноценное скачивание и загрузка реализованы для плагина работы с речью. Для плагина запросов и работы с ивентами идет сохранение данных о файлах, но скачивание не происходит (в целях оптимизации и отсутствия явной необходимости).
Механика работы с файлами: данные сохраняются в базе (идентификатор файла), при необходимости его можно скачать по идентификатору. Для загрузки - описывается в конфиге адрес файла который надо загрузить - далее он "подхватывается" плагинов и просто "прикрепляется" к сообщению.
Есть таблица с кэшом, где хранятся адреса файлов (например для плагина работы с речью).
Про FSM к сожалению не понял о чем речь, не очень понимаю как расшифровывается и о чем речь. :(
Да, используется библиотека aiogram, плагины работают ассинхронно, некоторые плагины имеют несколько тасков внутри (до 10, например плагин работы с речью, чтобы "не зависать" в ожидании).
Вебхуки легко сделать, т.к. все разделено на плагины, и сейчас события отлавливаются через пуллинг aiogram, можно легко переключиться на вебхуки, т.к. это только изменение "точки входа", ни на что другое это не влияет.
Сам не реализовывал вебхуки, т.к. не было необходимости + нужно же их отлавливаться, показалось избыточным, но реализовать это на текущей архитектуре очень быстро.
В теории пока выглядит так, что пуллинг aiogram позволяет "отлавливать" порядка 100 ивентов в секунду (чуть меньше), все 100 ивентов ядро обработает без особых сложностей (без задержки даже на SQLite). Это порядка нескольких сотен активных пользователей. Поэтому не реализовывал вебхуки, т.к. это уже и так достаточно большой объем.
В реальных условиях таких тестов не проводил, т.к. не было таких условий, искуственно не моделировал "загрузку" сотен действий в секунду, чтобы проверить.
В случае каких-то проблем с быстродействием достаточно легко это решается, на это сразу заложена архитектура:
Можно заменить SQLite на Postgre, это примерно раз в 10 больше действий в секунду по нагрузке на базу (это самые долгие действия во всем ядре, все остальное оптимизировано). Работа с БД идет через SQLAlchemy, поэтому переезд делается в 2 клика, условно.
Можно добавить больше ассинхронности, т.к. внутри плагины не "разбиты" на независимые таски, но это можно сделать.
В теории можно подключить брокера, но там больше проблем с настройкой инфраструктуры и нужно немного адаптировать плагины, т.к. есть свои особенности.
То есть единственное место, которое может создавать "очередь" - работы с БД, но она оптимизирована максимально, и там тоже можно перезжать на более "мощные" инструменты, чтобы решить вопрос.
Тут я не совсем понятно описал что хотел, тут имелось в виду пример создания бота с использованием ядра, т.е. банально описанные конфиги/код/файлы, как пример использования ядра со стороны разработки.
Возможно этот пример есть в Github, тогда вопрос снимается.
В документации есть примеры конфигов и коротких сценариев. Также есть гайд по "развертыванию" бота, а именно запуск скрипта на установку (он скачивает весь проект с настройками с гита), много других кайдов по работе со сценариями. Но их очень много, это правда, вряд ли кто-то осознанно будет их читать, только если реально не пойдет разбираться в проекте.
Насчет единого гайда на "быстрый старт" - пока не сделал, задумывался об этом. Спасибо, что подсветили, понимаю что точно стоит добавить. Возможно даже напишу небольшую статью по развертыванию в будущем, чтобы каждый мог самостоятельно "пощупать" возможности.
Вообще да, из за обилия ЛЛМ, подобные тексты воспринимаются сугубо как ИИ генерация. Поэтому лично я придерживаюсь сухой классики, чего-то близкого к академическому/публицистическому стилю.
Да изначально не было в планах писать как-то серьезно и строго, мне наоборот комфортнее когда есть эмоджи и чтение более "простое" и не перегруженное. :) Документации очень много и AI сильно экономит время на ее актуализации и написания, и читать очень удобно и структурировано.
В целом проект планировался как свой личный пет-проект, уже потом когда он вырос и реально превратился в неплохое ядро, решил, что стоит поделиться и рассказать всем, возможно найдутся желающие воспользоваться.
Пока не планирую подаваться в умные журналы и научные статьи, но в любом случае спасибо большое вам за отзыв в том числе по стилю!
Убедить в чем? Я ответил на ваши вопросы, и не до конца пока понял вашу претензию, если честно.
Конечно при написании документации и остального также использовались нейросети, чтобы ускорить процессы и делать это быстрее и в целом, лучше чем писать самому, в том числе с точки зрения чтения. Вы не согласны?
Документации в проекте на десятки тысяч символов, возможно даже под сотню, вы реально считаете, что стоит это все описывать вручную, ради чего?
Если ваша претензия в том, что кто-то использует AI для работы и как инструмент - ваш выбор. Это примерно кажется из разряда, как отказаться от использования гугла и StachOverflow, потому что "это не ваш код".
Чтобы создать то, что я задумал в одиночку мне бы потребовалось в разы меньше, да и в целом сторонник технологий, если есть возможности, то нужно осваивать и пользоваться.
Как я уже отмечал в комментариях - использовались AI-ассистенты при разработке ядра, я бы себя не назвал "программистом" наверное в вашем понимании, тут скорее больше акцента на архитектуре.
Если вы создаете ботов регулярно, то можете использовать мое ядро, возможно так станет намного проще, я старался подробно описать инструкции для работы. Как раз создавал ядро чтобы значительно упростить развертывание личных ботов, и даже мелки корпоративных прямо из коробки с минимум усилий.
Можете также обращаться напрямую, постараюсь подсказать и ответить на вопросы.
Также было бы интересно узнать какие сценарии при создании ботов вам нужны, что создаете, возможно тогда я смогу добавить и новые плагины для удобства и использования в будущем. :)
Да выбирал разные варианты конфига и остановился на YAML. Наиболее комфортный для работы и описания, и очень понятный. С первых же версий закладывалась работа именно через конфиги, т.к. менять постоянно код, как минимум, неудобно.
Потом уже постепенно рос и эволюционировал под новую архитектуру.
На текущий момент реализован почти весь задуманный изначальный функционал, который позволяет создавать очень разнообразные сценарии, с разными реакциями на действия.
Далее, скорее всего, буду двигаться в сторону добавления функционала работы в группах и каналов, т.к. изначально упор был на "обычных" ботов для личных диалогов.
В планах есть работа с AI (пока что освоил только SoluteSpeech от Сбера), как тестовый вариант интеграции с API нейросетей (это было не так просто, но интересно). Как далее развивать плагины по AI пока явного видения нет, т.к. хочется сделать что-то уникальное или интересное, вместо "прямых" интеграций, т.к. таких ботов полно.
Не исключаю варианты обучения ML, чтобы были функции прямо из коробки, но сам я очень далек от этой темы и не изучал. Возможно в будущем тоже будет.
Планы по проекту есть, планирую развивать дальше, т.к. есть пара ботов которые как раз в личных целях использую и планирую развивать. Надеюсь появятся еще единомышленники или пользователи, это конечно очень "драйвит" развивать проект дальше.
Как я описал в комментариях, действительно AI использовался, т.к. это современный инструмент и глупо отказываться от возможностей.
Заявлять о том, что ВСЕ сделал GPT, кажется очень опрометчиво. Не думаю что смогу вас переубедить и есть смысл встревать в глубокую дискуссию, но для понимания, AI вам не создаст такую архитектуру и оптимальность, которая используется в ядре, т.к. для этого требуется именно системное мышление, чему нейросети не научились. Также AI просто не может переваривать большие коды на несколько тысяч строк кода, и есть ряд иных проблем.
Работа с нейросетями - это не простая вещь, все-таки, нужно понимать их работу ограничения и возможности. Понятно, что они используются везде в том числе и при написании кода проекта, т.к. уже даже в корпоративном сегменте код пишут с использованием AI-ассистентов.
Ядро написано в том числе в помощью AI-ассистентов, что помогло значительно ускорить реализацию. Мне кажется наоборот стоит учиться использовать инструменты, которые нам предоставляют технологии.
Много эмодзи используется осознанно, на мой взгляд так приятнее читать и текст более выразительный и лучше воспринимается. Возможно субъективная вещь, но вот так.
Через ядро можно создать бота с разными сценариями и сложностями. В статье есть ссылка на бота с демо-меню, где можно посмотреть разные сценарии.
Из реального примера - на данном ядре создан бот для чатов собственников в моем ЖК. Как раз поэтому и было создано ядро, т.к. изначально нужен был бот для дома.
Буду рад получить обратную связь от вас. :)
Сейчас бот уже может в групповых чатах обрабатывать ивенты и делать действия, аналогично обычному чату. Если нужны именно определенные действия по алгоритму (не AI), то это все можно в целом доработать и настроить, даже есть модуль работы с речью. Если же нужно именно добавить работу с AI - то пока что есть интеграция в один клик только со Сбером, с остальными пока нет и не изучал. Про фото - аналогично, тоже пока нет моделей подобных. Другие интеграции в целом также можно сделать через плагин новый.
Можете в целом посмотреть базовую версию и понять на сколько вам подходит. Если вдруг заинтересует, то можно посмотреть какие доработки и что можно улучшить, чтобы лучше подошло к вашему кейсу.
Если я правильно понял вопрос, то тогда это реализуется через статус действия и флаг обработки процессом "разблокировки" следующего действия.
Все действия связаны в "жесткую" последовательную цепочку (они могу разветвляться). То есть каждое следующее действие ждет завершения предыдущего действия.
Сигналом для обработки действия является статус
pending
, после обработки действие переходит в статусfailed
илиcompleted
, что является сигналом для обработки процессом "разблокировки" следующего действий по цепочке. После обработки данного действия разблокировщиком он проставляется флаг обработки действия, и более к нему уже не возвращается.Полноценное скачивание и загрузка реализованы для плагина работы с речью. Для плагина запросов и работы с ивентами идет сохранение данных о файлах, но скачивание не происходит (в целях оптимизации и отсутствия явной необходимости).
Механика работы с файлами: данные сохраняются в базе (идентификатор файла), при необходимости его можно скачать по идентификатору. Для загрузки - описывается в конфиге адрес файла который надо загрузить - далее он "подхватывается" плагинов и просто "прикрепляется" к сообщению.
Есть таблица с кэшом, где хранятся адреса файлов (например для плагина работы с речью).
Про FSM к сожалению не понял о чем речь, не очень понимаю как расшифровывается и о чем речь. :(
Да, используется библиотека aiogram, плагины работают ассинхронно, некоторые плагины имеют несколько тасков внутри (до 10, например плагин работы с речью, чтобы "не зависать" в ожидании).
Вебхуки легко сделать, т.к. все разделено на плагины, и сейчас события отлавливаются через пуллинг aiogram, можно легко переключиться на вебхуки, т.к. это только изменение "точки входа", ни на что другое это не влияет.
Сам не реализовывал вебхуки, т.к. не было необходимости + нужно же их отлавливаться, показалось избыточным, но реализовать это на текущей архитектуре очень быстро.
В теории пока выглядит так, что пуллинг aiogram позволяет "отлавливать" порядка 100 ивентов в секунду (чуть меньше), все 100 ивентов ядро обработает без особых сложностей (без задержки даже на SQLite). Это порядка нескольких сотен активных пользователей. Поэтому не реализовывал вебхуки, т.к. это уже и так достаточно большой объем.
В реальных условиях таких тестов не проводил, т.к. не было таких условий, искуственно не моделировал "загрузку" сотен действий в секунду, чтобы проверить.
В случае каких-то проблем с быстродействием достаточно легко это решается, на это сразу заложена архитектура:
Можно заменить SQLite на Postgre, это примерно раз в 10 больше действий в секунду по нагрузке на базу (это самые долгие действия во всем ядре, все остальное оптимизировано). Работа с БД идет через SQLAlchemy, поэтому переезд делается в 2 клика, условно.
Можно добавить больше ассинхронности, т.к. внутри плагины не "разбиты" на независимые таски, но это можно сделать.
В теории можно подключить брокера, но там больше проблем с настройкой инфраструктуры и нужно немного адаптировать плагины, т.к. есть свои особенности.
То есть единственное место, которое может создавать "очередь" - работы с БД, но она оптимизирована максимально, и там тоже можно перезжать на более "мощные" инструменты, чтобы решить вопрос.
Спасибо!
Сейчас взял небольшой перерыв, поэтому следующие обновления ожидаются ближе к концу августа.
В документации есть примеры конфигов и коротких сценариев. Также есть гайд по "развертыванию" бота, а именно запуск скрипта на установку (он скачивает весь проект с настройками с гита), много других кайдов по работе со сценариями. Но их очень много, это правда, вряд ли кто-то осознанно будет их читать, только если реально не пойдет разбираться в проекте.
Насчет единого гайда на "быстрый старт" - пока не сделал, задумывался об этом. Спасибо, что подсветили, понимаю что точно стоит добавить. Возможно даже напишу небольшую статью по развертыванию в будущем, чтобы каждый мог самостоятельно "пощупать" возможности.
Да изначально не было в планах писать как-то серьезно и строго, мне наоборот комфортнее когда есть эмоджи и чтение более "простое" и не перегруженное. :)
Документации очень много и AI сильно экономит время на ее актуализации и написания, и читать очень удобно и структурировано.
В целом проект планировался как свой личный пет-проект, уже потом когда он вырос и реально превратился в неплохое ядро, решил, что стоит поделиться и рассказать всем, возможно найдутся желающие воспользоваться.
Пока не планирую подаваться в умные журналы и научные статьи, но в любом случае спасибо большое вам за отзыв в том числе по стилю!
Убедить в чем?
Я ответил на ваши вопросы, и не до конца пока понял вашу претензию, если честно.
Конечно при написании документации и остального также использовались нейросети, чтобы ускорить процессы и делать это быстрее и в целом, лучше чем писать самому, в том числе с точки зрения чтения. Вы не согласны?
Документации в проекте на десятки тысяч символов, возможно даже под сотню, вы реально считаете, что стоит это все описывать вручную, ради чего?
Если ваша претензия в том, что кто-то использует AI для работы и как инструмент - ваш выбор. Это примерно кажется из разряда, как отказаться от использования гугла и StachOverflow, потому что "это не ваш код".
Чтобы создать то, что я задумал в одиночку мне бы потребовалось в разы меньше, да и в целом сторонник технологий, если есть возможности, то нужно осваивать и пользоваться.
Спасибо за отзыв!
Как я уже отмечал в комментариях - использовались AI-ассистенты при разработке ядра, я бы себя не назвал "программистом" наверное в вашем понимании, тут скорее больше акцента на архитектуре.
Если вы создаете ботов регулярно, то можете использовать мое ядро, возможно так станет намного проще, я старался подробно описать инструкции для работы. Как раз создавал ядро чтобы значительно упростить развертывание личных ботов, и даже мелки корпоративных прямо из коробки с минимум усилий.
Можете также обращаться напрямую, постараюсь подсказать и ответить на вопросы.
Также было бы интересно узнать какие сценарии при создании ботов вам нужны, что создаете, возможно тогда я смогу добавить и новые плагины для удобства и использования в будущем. :)
Спасибо за ваш отзыв!
Да выбирал разные варианты конфига и остановился на YAML. Наиболее комфортный для работы и описания, и очень понятный. С первых же версий закладывалась работа именно через конфиги, т.к. менять постоянно код, как минимум, неудобно.
Потом уже постепенно рос и эволюционировал под новую архитектуру.
На текущий момент реализован почти весь задуманный изначальный функционал, который позволяет создавать очень разнообразные сценарии, с разными реакциями на действия.
Далее, скорее всего, буду двигаться в сторону добавления функционала работы в группах и каналов, т.к. изначально упор был на "обычных" ботов для личных диалогов.
В планах есть работа с AI (пока что освоил только SoluteSpeech от Сбера), как тестовый вариант интеграции с API нейросетей (это было не так просто, но интересно). Как далее развивать плагины по AI пока явного видения нет, т.к. хочется сделать что-то уникальное или интересное, вместо "прямых" интеграций, т.к. таких ботов полно.
Не исключаю варианты обучения ML, чтобы были функции прямо из коробки, но сам я очень далек от этой темы и не изучал. Возможно в будущем тоже будет.
Планы по проекту есть, планирую развивать дальше, т.к. есть пара ботов которые как раз в личных целях использую и планирую развивать. Надеюсь появятся еще единомышленники или пользователи, это конечно очень "драйвит" развивать проект дальше.
Как я описал в комментариях, действительно AI использовался, т.к. это современный инструмент и глупо отказываться от возможностей.
Заявлять о том, что ВСЕ сделал GPT, кажется очень опрометчиво. Не думаю что смогу вас переубедить и есть смысл встревать в глубокую дискуссию, но для понимания, AI вам не создаст такую архитектуру и оптимальность, которая используется в ядре, т.к. для этого требуется именно системное мышление, чему нейросети не научились. Также AI просто не может переваривать большие коды на несколько тысяч строк кода, и есть ряд иных проблем.
Работа с нейросетями - это не простая вещь, все-таки, нужно понимать их работу ограничения и возможности. Понятно, что они используются везде в том числе и при написании кода проекта, т.к. уже даже в корпоративном сегменте код пишут с использованием AI-ассистентов.
Ядро написано в том числе в помощью AI-ассистентов, что помогло значительно ускорить реализацию. Мне кажется наоборот стоит учиться использовать инструменты, которые нам предоставляют технологии.
Много эмодзи используется осознанно, на мой взгляд так приятнее читать и текст более выразительный и лучше воспринимается. Возможно субъективная вещь, но вот так.
Через ядро можно создать бота с разными сценариями и сложностями. В статье есть ссылка на бота с демо-меню, где можно посмотреть разные сценарии.
Из реального примера - на данном ядре создан бот для чатов собственников в моем ЖК. Как раз поэтому и было создано ядро, т.к. изначально нужен был бот для дома.
Спасибо за внимание и прочтение статьи!