Месяц назад решил добавить поддержку Gemini в Feeds Fun и под это дело изучал топовые LLM фреймворки — писать свой велосипед не хотелось.
В итоге нашёл стыдный баг в интеграции с Gemini в LLamaIndex. Судя по коду, он есть и в Haystack и в плагине для LangChain. А корень проблемы вообще в SDK Google для Python.
При инициализации нового клиента для Gemini код фреймворка перетирает/подменяет API ключи во всех клиентах, созданных до этого. Потому что API ключ, по-умолчанию, хранится в синглетоне.
Смерти подобно, если у вас multi-tenant приложение, и незаметно во всех остальных случаях. Multi-tenant — это когда ваше приложение работает с несколькими пользователями.
Например, в моём случае, в Feeds Fun пользователь может ввести свой API ключ, чтобы улучшить качество сервиса. Представьте какой забавный казус мог бы случиться: пользователь ввёл API ключ для обработки своих рассылок, а потратил токенов (заплатил) за всех пользователей сервиса.
Репортил только в LLamaIndex как security issue и уже 3 недели ноль реакции, для Haystack и LangChain лень воспроизводить. Так что это ваш шанс зарепортить багу в топовый репозиторий. Под катом будет вся инфа, воспроизвести не сложно.
Ошибка примечательна многим:
В итоге я забил на эти фреймворки и впилил свой костыль, благо HTTP API для Gemini есть.
Мой вывод из этого безобразия такой: доверять коду, который под капотом у современных LLM фреймворков нельзя. Надо перепроверять, вычитывать. То, что у них написано «production ready», не значит, что они действительно production ready.
Далее расскажу подробнее про сам баг.
В свой отпуск Юля решила показать мне красивые немецкие горы и отвезла на пару дней в Grainau — это такой кусочек Баварии, который почти как Швейцария. В Швейцарии я не был, но, судя по картинкам, похоже.
Если кратко, то очень красивое место с размеренным темпом жизни. Если надо выдохнуть, подлечить нервишки и насладиться природой, то вам сюда. Но если вы без движа не можете, то быстро заскучаете.
Что тут есть:
Это если кратко, а сейчас подробнее.
Открыл для себя новые направления для мониторинга.
Авторам минус за тавтологию. Есть вычислительная механика, которая занимается численным моделированием механических процессов и про неё есть статься на вики. Этот пост не про неё.
Этот пост про computational mechanics, которая изучает абстракции сложных процессов: как эмерджентное поведения возникает из суммарного поведения / статистики низкоуровневых процессов. Например, почему стабильно Большое Красное Пятно на Юпитере, или, почему результат вычислений процессора не зависит от свойств каждого электрона в нём.
Концепт устройства, которое может существовать в конечном множестве состояний и может предсказывать своё будущее состояние (или распределения состояний?) на основе текущего.
Computational mechanics позволяет (или должно позволять) представить сложные системы как иерархию ε-machine. Тем самым появляется формальный язык для описания сложных систем и эмерджентного поведения.
Для примера, наш мозг можно представить как ε-machine. Формально, состояние мозга никогда не повторяется (напряжения на нейронах, позиции молекул нейромедиаторов, etc), но существует огромное количество ситуаций, когда мы делаем одно и то же в одних и тех же условиях.
Научно-популярное изложение: https://www.quantamagazine.org/the-new-math-of-how-large-scale-order-emerges-20240610/
P.S. Попробую копнуть в научные статьи. Расскажу, если найду что-нибудь интересное и прикладное. P.P.S. Давно думаю в сторону похожей штуки. К сожалению, повороты жизненного пути не позволяет серьёзно копать в науку и математику. Всегда радуюсь, когда сталкиваюсь с результатами копания других людей.
«Сеть и бабочку» я купил по ошибке, когда лет 5 назад был в Питере и устроил день книжных. Набрал килограмм 10 книг :-D, эту захватил по инерции, не вчитавшись в содержание. Думал, книга будет о сетевом эффекте и распространении идей, а оказалось она о том, как «управлять» мозгом, опираясь на одну из нейронных сетей в нём. На какую? Для книги и её содержания не имеет никакого значения.
Мнение моё о «Сети и бабочке» двоякое. С одной стороны не могу отказать ей в полезности, с другой… можно было подать материал в 100 раз лучше и в 3 раза короче. Местами авторы ходят по тонкому льду и рискуют провалиться в инфоцыганство.
Зима не успела закончиться, а я уже выполнил один из планов на год :-D
Причём не только перевёл блог на новый движок, но и сам этот движок написал и заопенсорсил: https://github.com/Tiendil/brigid
Что будет интересным для вас.
На индексной странице появился крутой фильтр постов по тегам. Вдохновлённый feeds.fun. Попробуйте поиграть с ним. Пока он доступен только для больших экранов — на мобилках не увидите — поправлю в будущем.
Посты должны стать читаемее, сайт — удобнее, красивее, быстрее.
Никаких cookies и корпоративных трекеров. Как трекер пока использую облачный plausible.io позже подниму свой инстанс.
Мультиязычность. Большинство новых постов будут доступны на русском и английском. Постепенно буду переводить интересные старые посты.
Исходники постов также открыты и лежат в отдельном репозитории: https://github.com/Tiendil/tiendil-org-content