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

Топовые 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.

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

Далее

Считаем бизнес-план для игры в Steam

Заработать миллионы проще простого, сейчас расскажу как :-D

Заработать миллионы проще простого, сейчас расскажу как :-D

Когда выкладывал отчётную презентацию (слайды) по World Builders 2023 (мои посты, сайт), обещал рассказать как делал roadmap и финансовую модель для игры. Выполняю обещание.

К концу поста у нас на руках будут:

  • Краткая стратегия нашей компании: что мы делаем, как, зачем и почему.
  • Табличка наших маяков — успешных игр, которые примерно похожи на то, что мы хотим сделать. Похожи как по геймплею, так и по размеру команды, бюджету, etc.
  • Состав команды, которую нам надо собрать.
  • Roadmap — план разработки нашей игры.
  • Зачатки маркетинговой стратегии.
  • Финансовая модель — сколько мы будем тратить, сколько зарабатывать.
  • Огромное количество моих оговорок по всему посту.
  • Шутки и прибаутки.

Все итоговые документы вы можете найти тут.

Далее

Блог переехал на новый движок

Документальная журналистика: процесс перевозки контента на новый движок (c) ChatGPT

Документальная журналистика: процесс перевозки контента на новый движок (c) ChatGPT

Зима не успела закончиться, а я уже выполнил один из планов на год :-D

Причём не только перевёл блог на новый движок, но и сам этот движок написал и заопенсорсил: https://github.com/Tiendil/brigid

Что будет интересным для вас.

На индексной странице появился крутой фильтр постов по тегам. Вдохновлённый feeds.fun. Попробуйте поиграть с ним. Пока он доступен только для больших экранов — на мобилках не увидите — поправлю в будущем.

Посты должны стать читаемее, сайт — удобнее, красивее, быстрее.

Никаких cookies и корпоративных трекеров. Как трекер пока использую облачный plausible.io позже подниму свой инстанс.

Мультиязычность. Большинство новых постов будут доступны на русском и английском. Постепенно буду переводить интересные старые посты.

Исходники постов также открыты и лежат в отдельном репозитории: https://github.com/Tiendil/tiendil-org-content

Далее

Два года пишем RFC — статистика

График количества RFC за два года

Два года как я Lead/Engineering Manager в платёжке Palta. А на следующей неделе я ухожу из компании в очередной творческий отпуск.

Время подводить итоги. Начну с моей самой любимой инициативы.

С первого месяца я начал продвигать идею предварения крупных изменений текстовыми документами — RFC — Request for Comments.

В этом посте будет анализ двух лет применения этой практики. Чтобы пошарить опыт, подвести итоги и иметь под рукой агитку для моего следующего места работы.

Далее

Про увольнение Sam Altman и регуляцию ИИ

ChatGPT: Draw an image: "Skynet writes regulations for the AI industry" in the style of "Reply of the Zaporozhian Cossacks".

ChatGPT: Draw an image: "Skynet writes regulations for the AI industry" in the style of "Reply of the Zaporozhian Cossacks".

Последние дни идут новости, что Sam Altman — CEO OpenAI — уволен советом директоров и вслед за ним уходит много сотрудников компании.

Точных причин не названо, формулировка борды в духе «утратил доверие».

На сколько я понимаю, основная гипотеза интернетов на текущий момент — разногласия между фракциями прогрессоров и регуляторов.

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

Sam Altman выступает за фракцию прогрессоров.

Если всё так, то его уход — плохая новость. На мой взгляд, самое вредное, что можно сейчас сделать для отрасли — это зарегулировать её.

Далее