Нейронаука та AI
Мозок мухи: Telegram-бот на справжньому коннектомі
Бот, у якому працює повна схема мозку плодової мушки: натискаєш кнопку, бот запускає симуляцію всього мозку, код рахує, що зробила муха, а LLM-агент пояснює чому.
- Для кого
- Власний дослідницький проєкт
- Формат
- Практичний кейс
- Технології
- Python, FastAPI, numba
- 138 639нейронів і 54,5 млн синапсів: увесь мозок, без спрощення схеми
- 0,3–2,5 сна симуляцію всього мозку, 10 прогонів по 1 с
- 86автотестів: точність ядра, валідація, кожен сценарій

Задача
Учені FlyWire повністю розмітили мозок плодової мушки: 138 639 нейронів і 54,5 млн синапсів. Я поставив собі задачу показати цю науку так, щоб її зрозуміла людина без біологічної освіти. І так, щоб було видно: відповіді дає модель мозку, а не вигадує чат-бот.
Рішення
Telegram-бот, у якому ця схема працює як модель. Користувач натискає кнопку, наприклад «прихлопнути муху газетою» чи «дати цукор», а бот:
- запускає спайкову симуляцію всього мозку;
- показує, що зробила муха: втекла, почала їсти чи чистити вусики;
- надсилає ролик, де ліворуч схематична муха, а праворуч видно, як сигнал біжить її мозком;
- додає звіт по нейронах зі схемою мозку і пояснює, чому так сталося.
Вердикт рахує код, а не LLM. Що зробила муха, визначають три нейрони-виходи, перевірені в статті Shiu et al. (Nature, 2024). LLM лише пояснює готовий результат і не може вигадати нейрони.
«Зламати муху». Той самий подразник подається на звичайний і змінений мозок. Вимкнули 2 нейрони, і муха перестала їсти. Вимкнули 4, і вона не встигла злетіти, тож газета її прихлопнула. Так видно причину й наслідок.
Три режими:
- Гра «Вгадай, що зробить муха» працює без LLM: спершу вгадуєш, потім симуляція, вибір перевіряє код.
- «Зламати муху» показує дві мухи поруч: «до» і «після».
- «Досліди»: на питання відповідає LLM-агент (OpenAI або Claude) із сімома інструментами: симуляція, пошук шляхів у графі синапсів, порівняння, картинки.
Швидкість. У звичайному симуляторі Brian2 прогін усього мозку триває хвилини, для чату це забагато. Я переписав модель на numba: точне інтегрування, а нейрони, які гарантовано не спрацюють, взагалі не прораховуються на кожному кроці. Тест підтверджує, що спайки збігаються з повним розрахунком до одиниці.
Результат
| Мозок у симуляції | 138 639 нейронів, 54,5 млн синапсів |
| Симуляція | 0,3–2,5 с (10 прогонів × 1 с біологічного часу) |
| Рендер ролика | 3–4 с |
| Відповідь бота з роликом | 5–17 с |
| Автотести | 86 |
Відтворено результати статті: цукор вмикає хоботок із сигмоїдною залежністю від частоти, гірке пригнічує їжу, дотик до антени запускає чищення вусиків.
Чесно про обмеження
Це не «завантажена свідомість» і не копія мухи, а схема зʼєднань плюс дуже спрощені нейрони: без нейромодуляції, навчання й тіла. Муха в роликах — схематичний малюнок, а що і коли їй робити, вирішує симуляція. Бот нагадує про це в кожній відповіді.
Дані FlyWire поширюються за ліцензією CC BY-NC 4.0, тому проєкт некомерційний.
Процес роботи
Як проходила робота над цим проєктом: від розбору задачі до запуску й доопрацювання.
- 01
Аналіз
Розібрав статтю Shiu et al. (Nature, 2024) і дані FlyWire v783: які нейрони-виходи в ній перевірені для поведінки і що модель чесно може виміряти, а що ні (політ, завмирання, нюх).
- 02
Проєктування рішення
Розділив систему на два сервіси: симулятор на Python з API і бот на TypeScript. Вирішив, що вердикт рахує код за трьома перевіреними нейронами, LLM лише пояснює, а гра працює взагалі без LLM.
- 03
Реалізація
Переписав модель нейронів на numba, зробив ролики «муха + мозок», пошук шляхів у графі синапсів, LLM-агента із сімома інструментами під OpenAI і Claude та меню лише з кнопок.
- 04
Тестування
86 автотестів: спайки збігаються з повним розрахунком до одиниці, відтворено результати статті, а кожен сценарій гри й «поломки» перевірено на кількох випадкових запусках.
- 05
Запуск
Запуск однією командою через Docker Compose, дані FlyWire завантажуються при першому старті. Бот відповідає з роликом за 5–17 секунд.
- 06
Оптимізація
Скоротив симуляцію з хвилин до 0,3–2,5 с і рендер ролика до 3–4 с. Лавиноподібну активність обрізає бюджет подій, а для нюху, де модель нестабільна, агент чесно використовує пошук шляхів замість симуляції.
Ролики та скриншоти
- Муха злітає в мить, коли в симуляції спрацьовує нейрон втечі Giant Fiber
- «Зламати муху»: без 4 нейронів PVLP122b муха не встигає злетіти
- Порошинка на вусику: муха чистить антену лапками
- Цукор: муха витягує хоботок і їсть
Звіт «до / після»: однаковий подразник, різні мізки
Звіт по нейронах: найактивніші типи і де вони в мозку
Архітектура: бот, LLM-агент і сервіс симуляції
Найсильніший шлях у графі синапсів: від нюху до руху
Старт і меню з кнопок
Гра «Вгадай, що зробить муха»
Пояснення, що змінилось після «поломки»