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

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

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

Далее

Внезапно поучаствовал в коллективном иске в США

Неожиданно столкнулся с работающим правосудием в США, причём почти ничего не делал для этого.

  • Году в 2017-2018, когда был бум крипты, подписался в один майнерский стартап: купил их токенов, одну единицу оборудования.
  • Стартап пошёл в рост, начал строить мега ферму, но не фортануло — на пик их трат пришлось падение биткоина, деньги кончились, контора обанкротилась. Забавно, что через месяц-два после подачи на банкротство биткоин всё отыграл назад. Не повезло :-)
  • На потерянные деньги тогда уже забил, конечно. Действовал по правилу «вкладывай только 10% дохода, которые не жалко потерять».
  • Поскольку юридически всё происходило в США, народ там собрался и подал коллективный иск.
  • Мне прислали письмо, по которому я автоматически среди истцов, если не откажусь. Я не отказался, интересно же.
  • Всё затихло до этого (2024) года.
  • Весной пришло ещё одно письмо: «подтвердите владение токенами и укажите их количество, мы победили и поделим оставшееся на всех владельцев пропорционально, за вычитом здоровой комиссии юристам».
  • А как я подтвержу? Больше 5 лет прошло. Счёт в банке РБ закрыт, админка конторы недоступна, прямой транзакции в блокчейне нет — отправлял прямо с какой-то биржи (хотя так делать не рекомендуется).
  • Нашёл на почте письмо от конторы о том, что я купил токены (без указания количества), распечатал в pdf. Прикрепил к заявке его и скриншоты транзакции с биржи за тот период. Дал адрес своего текущего кошелька, где эти токены лежат мёртвым грузом. Отправил.
  • Сегодня на банковский счёт прислали 700$. Это, конечно, не всё потерянное, но процентов 25% будет, может даже больше.

Какие выводы можно из этого сделать:

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

Обзор книги «Сигнал и Шум»

Обложка книги «Сигнал и Шум».

Нейт Сильвер — автор «Сигнала и Шума» — широко известен благодаря своим удачным прогнозам, например, выборов в США. Неудивительно, что книга стала бестселлером.

Собственно, прогнозам книга и посвящена: подходам к прогнозированию, сложностям, ошибкам, заблуждениям и так далее.

Как обычно, я рассчитывал на более теоретическое изложение, в духе Масштаба, но автор выбрал другой путь и подаёт свои идеи через разбор конкретных случаев: один случай на главу. Каждая глава описывает большую задачу, например, предсказание погоды, и с помощью неё даёт несколько призм для взгляда на прогнозирование. Это определённо делает материал доступнее, но лично я хотел бы больше системности и теории.

Из-за подхода через изложение кейсов, сделать краткую выдержку из книги сложно. Это возможно, было бы даже интересно попробовать, но объём работы слишком большой — автор не ставил целью свести всё в цельную систему или короткий набор тезисов.

Поэтому дам отзыв на книгу в целом, примерный перечень призм и набор прикольных фактов.

Далее

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

Далее

О книге «Сеть и бабочка»

Обложка книги «Сеть и бабочка».

«Сеть и бабочку» я купил по ошибке, когда лет 5 назад был в Питере и устроил день книжных. Набрал килограмм 10 книг :-D, эту захватил по инерции, не вчитавшись в содержание. Думал, книга будет о сетевом эффекте и распространении идей, а оказалось она о том, как «управлять» мозгом, опираясь на одну из нейронных сетей в нём. На какую? Для книги и её содержания не имеет никакого значения.

Мнение моё о «Сети и бабочке» двоякое. С одной стороны не могу отказать ей в полезности, с другой… можно было подать материал в 100 раз лучше и в 3 раза короче. Местами авторы ходят по тонкому льду и рискуют провалиться в инфоцыганство.

Далее