Эссе о разработке игр, мышлении и книгах

Топовые LLM фреймворки могут быть не так надёжны, как вы думаете

Месяц назад решил добавить поддержку 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 лень воспроизводить. Так что это ваш шанс зарепортить багу в топовый репозиторий. Под катом будет вся инфа, воспроизвести не сложно.

Ошибка примечательна многим:

  1. Оценка критичности ошибки очень зависит от вкусовщины, опыта и контекста. Для меня, в проектах в которых я работал, — это критическая ошибка безопасности. Но, похоже, для большинства актуальных проектов, которые используют LLM, это вообще не принципиально. Что навевает некоторые мысли о мейнстрим около-LLM разработках.
  2. Это хороший индикатор низкого уровня контроля качества кода: код ревью, тестов — всех процессов. Всё-таки это интеграция с одним из топовых провайдеров API, найти проблему можно было кучей разных способов, но ни один не сработал.
  3. Это хорошая иллюстрация порочного подхода к разработке: «копипастим из туториала и льём на прод». Чтобы допустить эту ошибку нужно было проигнорить одновременно и базовую архитектуру твоего проекта и логику вызова кода, который ты копипастишь.

В итоге я забил на эти фреймворки и впилил свой костыль, благо HTTP API для Gemini есть.

Мой вывод из этого безобразия такой: доверять коду, который под капотом у современных LLM фреймворков нельзя. Надо перепроверять, вычитывать. То, что у них написано «production ready», не значит, что они действительно production ready.

Далее расскажу подробнее про сам баг.

Далее

Grainau: хайкинг и пивас на высоте 3000 метров

Примерно так это всё выглядит с земли.

Примерно так это всё выглядит с земли.

В свой отпуск Юля решила показать мне красивые немецкие горы и отвезла на пару дней в Grainau — это такой кусочек Баварии, который почти как Швейцария. В Швейцарии я не был, но, судя по картинкам, похоже.

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

Что тут есть:

  • Самая высокая гора в Германии плюс пара ледников.
  • Зимой есть лыжи. Если очень надо, то летом тоже есть, но спуск короткий и подъёмники выключены.
  • Большое чистое озеро и пара таких же чистых, но поменьше.
  • Огромное количество троп для хайкинга.
  • Огромное количество водопадов, ручьёв и пара горных рек.
  • Ресторанчики с пивасом.
  • Красивый бурелом в лесах, частная собственность, заборы, коровы с колокольчиками и трактористы-гонщики.

Это если кратко, а сейчас подробнее.

Далее

Концепт-документ ММО про исследование космоса

Предполагаемый постер для игры. (c) DALL-E

Предполагаемый постер для игры. (c) DALL-E

Ещё один из вариантов концепта Сказки 2.0.

Возможно, последний в этом формате: мне понравилось оформлять концепт в форме презентации, пока занимался в школе World Builders.

Название

Lords Captains MMO

Да, это калька с Warhammer 40k и Rogue Trader в частности, но для концепта пойдёт.

Одной строкой

Исследуй бесконечную вселенную на звёздном корабле с миллионами душ на борту, объединяй и развивай заброшенные миры.

Платформы

Браузеры, мобильные.

Жанр

Ориентированная на исследования торгово-политическая MMO PVE песочница.

Ближайшие аналоги

EVE, Sim City, Crusader Kings, 4X игры, Rogue Trader.

Далее

Computational mechanics & ε- (epsilon) machines

Открыл для себя новые направления для мониторинга.

Computational mechanics

Авторам минус за тавтологию. Есть вычислительная механика, которая занимается численным моделированием механических процессов и про неё есть статься на вики. Этот пост не про неё.

Этот пост про computational mechanics, которая изучает абстракции сложных процессов: как эмерджентное поведения возникает из суммарного поведения / статистики низкоуровневых процессов. Например, почему стабильно Большое Красное Пятно на Юпитере, или, почему результат вычислений процессора не зависит от свойств каждого электрона в нём.

ε- (epsilon) machine

Концепт устройства, которое может существовать в конечном множестве состояний и может предсказывать своё будущее состояние (или распределения состояний?) на основе текущего.

Computational mechanics позволяет (или должно позволять) представить сложные системы как иерархию ε-machine. Тем самым появляется формальный язык для описания сложных систем и эмерджентного поведения.

Для примера, наш мозг можно представить как ε-machine. Формально, состояние мозга никогда не повторяется (напряжения на нейронах, позиции молекул нейромедиаторов, etc), но существует огромное количество ситуаций, когда мы делаем одно и то же в одних и тех же условиях.

Научно-популярное изложение: https://www.quantamagazine.org/the-new-math-of-how-large-scale-order-emerges-20240610/

P.S. Попробую копнуть в научные статьи. Расскажу, если найду что-нибудь интересное и прикладное. P.P.S. Давно думаю в сторону похожей штуки. К сожалению, повороты жизненного пути не позволяет серьёзно копать в науку и математику. Всегда радуюсь, когда сталкиваюсь с результатами копания других людей.

Мои GPT-шки и prompt engineering

Понечки занимаются prompt engineering (c) DALL-E

Понечки занимаются prompt engineering (c) DALL-E

Я пользуюсь ChatGPT практически с момента выхода её четвёртой версии (то есть уже больше года). За это время хорошо набил руку в написании запросов к этой штуке.

В какой-то момент, OpenAI разрешили настраивать свой чат с помощью собственных текстовых инструкций (ищите Customize ChatGPT в меню). Я постепенно дописывал туда команды и вот на днях размер инструкций превысил разрешённый максимум :-)

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

Поэтому покумекав, я решил вместо кастомизации своего чата, вынести инструкции в GPT ботов. OpenAI называют их GPTs, по-русски буду называть их GPT-шками. По-сути, это такие же чаты, в которых больше лимит на кастомизированные инструкции и в них можно залить дополнительные тексты как базу знаниий.

Когда-нибудь, я сделаю GPT-шку для этого блога, а пока расскажу про двух рабочих лошадок, которыми пользуюсь каждый день.

  • Expert — ответы на вопросы.
  • Abstractor — краткое изложение текста.

Для каждой будет описание базового промпта с моими комментариями.

OpenAI недавно открыла магазин GPT-шек, буду благодарен если пролайкаете мои. Конечно, только если они вам полезны.

Далее