Усі проєкти

Нейронаука та AI

Мозок мухи: Telegram-бот на справжньому коннектомі

Бот, у якому працює повна схема мозку плодової мушки: натискаєш кнопку, бот запускає симуляцію всього мозку, код рахує, що зробила муха, а LLM-агент пояснює чому.

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

Задача

Учені FlyWire повністю розмітили мозок плодової мушки: 138 639 нейронів і 54,5 млн синапсів. Я поставив собі задачу показати цю науку так, щоб її зрозуміла людина без біологічної освіти. І так, щоб було видно: відповіді дає модель мозку, а не вигадує чат-бот.

Рішення

Telegram-бот, у якому ця схема працює як модель. Користувач натискає кнопку, наприклад «прихлопнути муху газетою» чи «дати цукор», а бот:

  1. запускає спайкову симуляцію всього мозку;
  2. показує, що зробила муха: втекла, почала їсти чи чистити вусики;
  3. надсилає ролик, де ліворуч схематична муха, а праворуч видно, як сигнал біжить її мозком;
  4. додає звіт по нейронах зі схемою мозку і пояснює, чому так сталося.

Вердикт рахує код, а не 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, тому проєкт некомерційний.

Процес роботи

Як проходила робота над цим проєктом: від розбору задачі до запуску й доопрацювання.

  1. 01

    Аналіз

    Розібрав статтю Shiu et al. (Nature, 2024) і дані FlyWire v783: які нейрони-виходи в ній перевірені для поведінки і що модель чесно може виміряти, а що ні (політ, завмирання, нюх).

  2. 02

    Проєктування рішення

    Розділив систему на два сервіси: симулятор на Python з API і бот на TypeScript. Вирішив, що вердикт рахує код за трьома перевіреними нейронами, LLM лише пояснює, а гра працює взагалі без LLM.

  3. 03

    Реалізація

    Переписав модель нейронів на numba, зробив ролики «муха + мозок», пошук шляхів у графі синапсів, LLM-агента із сімома інструментами під OpenAI і Claude та меню лише з кнопок.

  4. 04

    Тестування

    86 автотестів: спайки збігаються з повним розрахунком до одиниці, відтворено результати статті, а кожен сценарій гри й «поломки» перевірено на кількох випадкових запусках.

  5. 05

    Запуск

    Запуск однією командою через Docker Compose, дані FlyWire завантажуються при першому старті. Бот відповідає з роликом за 5–17 секунд.

  6. 06

    Оптимізація

    Скоротив симуляцію з хвилин до 0,3–2,5 с і рендер ролика до 3–4 с. Лавиноподібну активність обрізає бюджет подій, а для нюху, де модель нестабільна, агент чесно використовує пошук шляхів замість симуляції.