#OCRBench LLM-as-a-Judge: Error Analysis & Checklist
В книге Валеры и Арсения по ML System Design мы писали главу Error Analysis, по мотивам которой была написана моя статья на Хабре "Почему анализ ошибок – это начало разработки ML системы, а не её конец", а также создана одноимённая задача в Симуляторе DS
Когда у нас появляется какой либо способ оценки – кросс-валидация, offline эксперименты, LLM бенчмарк – мы получаем возможность закапываться в ошибки. Где пользователь не делает целевое действие? Где самое сильное расхождение с правильным ответом?
В главе книги мы описывали с каких сторон можно подходить к анализу ошибок, например, можно глазками смотреть на best cases, worst cases – искать, что в них общего, какие паттерны. Также можно мануально выделять группы/кластеры и смотреть перфоманс на ней
Сейчас у нас есть LLM, поэтому вместо рутинной мануальной работы:
1. Можно кидать целые логи / датасеты (с разбором ошибок от LLM-судьи с предыдущего этапа) – в LLM, и просить кластеризовать типовые проблемы
2. Затем можно под каждую из них завести бинарный флаг "есть / нету" и включить это как чеклист ответа LLM-судьи. Для судьи я использую модель от OpenAI где SO (structured output) работает стабильно, поэтому проблем с парсингом ответа несмотря на преумножение числа полей - не возникает
3. В конце прогона агрегируем по каждой модели и получаем "след" её проблем на нашей задаче
Иметь подобную декомпозицию проблем модели и пайплайна сильно полезнее, чем иметь одно агрегированное число "вот такая-то точность". Какие-то из проблем будут критичными, какие-то менее важны, но по крайней мере у тебя появляется четкая картина характера ошибок и теперь понятно, в «какую сторону» исправлять систему
По сути как взять градиент по бенчмарку и делать back propagation 🤓
Ваш @bogdanisssimo
Завтра проходит онлайн-конференция karpov.cоnf от karpov.courses о том, как выстраивать data-driven культуру в компании. Конференция будет полезна как владельцам бизнеса и менеджерам – так и дата аналитикам, дата инженерам, ML инженерам (которым важно в правильный момент сказать на идею руководителя "нет")
Скажем, не всегда осмысленно с точки зрения времени и денег заводить ML-сервисы в компании, где ещё не выстроена data-driven культура и не настроена базовая аналитика, пайплайны данных и у бизнеса нет понимания как проводить A/B тесты и как превращать данные в деньги
(у меня самого в карьере был подобный опыт, думаю, заслуживает отдельного поста)
Регистрироваться здесь: /channel/KarpovCourses/2108
Вопрос от подписчика:
Кстати расскажешь как-нибудь какими тулзами аналитическими пользуешься?
Теория ограничений (теория узких мест) – это примерно тоже самое, что делать back propagation но в масштабах всего бизнеса. Вместо слоёв у тебя этапы воронки:
/channel/bogdanisssimo/1026
Вместо нейронов – компоненты продукта и маркетингового пайплайна (этапы воронки), вместо синапсов - конверсии. На каждом цикле оптимизации ты делаешь оценку в каком направлении что нужно поменять, чтобы больше максимизировать чистую прибыль / LTV:CAC или другую метрику
Как и в deep learning, ты можешь делать как forward pass и backward pass
Например, деньги и юнит-экономика – мы можем "отнормировать" на любом этапе: ты знаешь сколько денег тратишь - можешь оценить CPM (cost per mile, цена за 1000 просмотров) → CPI (cost per install) → CPT (cost per trial) → CAC (customer acquisiton cost, стоимость привлечения 1 платящего пользователя)
Так и, в обратную сторону, backward pass: LTV (Customer LifeTime Value) ← Trial LTV (сколько чистой прибыли принесёт 1 триал) ← Install LTV (сколько денег принесёт 1 инсталл) ← RPM/PPM (revenue per mile / profit per mile, выручка/прибыль на 1000 просмотров)
В случае если канал привлечения один – соотношения (например Install LTV : CPI, LTV : CAC, RPM : CPM) не поменяются. Если несколько каналов (например разбивка по гео) или несколько продуктов (например iOS vs Android) здесь уже начинают размазываться – и можно принимать решение, куда перенаправить усилия, ресурсы
Вайб – ваш бесконечный источник приколов и анекдотов на каждый день
https://onelink.to/get-vibe
https://addyo.substack.com/p/vibe-coding-is-not-an-excuse-for
Читать полностью…Скука – необходимое условие для продуктивной работы, для фокуса
Демка приложения, апрель 2025: onelink.to/get-vibe
Читать полностью…Чтобы раз и навсегда закрыть вопрос, сколько букв "r" в слове strawberry
Читать полностью…Когда начинаешь изучать вопрос торговых марок, бренда, IP…
Благо с 2018 lenovo не имеет права на этот трейдмарк
Мы набираем 2М просмотров в неделю и я всё ещё считаю, что не понимаю как работает маркетинг
💀💀💀
В Узбекском AppStore вышел на первое, в РФ пока на втором
Но кстати, и в чарты узбекского AppStore в категории Lifestyle увидел попал, топ-141 (в комментах по другим странам скинул)
https://apps.apple.com/app/vibe-ai/id6553989941
Вообще, эта неделя была топ-2 по скачиваниям, топ-1 неделя была когда в тиктоке 5 миллионов просмотров на 1 видосе набрали
Если вы работаете с документами, Mistral OCR реально SOTA
https://docs.mistral.ai/capabilities/document/
Всегда напоминай себе, что текущие модели – самые худшие модели, которыми ты будешь пользоваться всю оставшуюся жизнь
Читать полностью…Как подключу o3 к MCP всех аналитических тулзов, можно уже и не работать 🤣
Читать полностью…Чуть освежил onboarding screen
Уже в AppStore: onelink.to/get-vibe
Это была рекордная неделя по скачиваниям, триалам, MRR, активным подпискам
Буквально всё втупую по теории ограничений:
• мало просмотров? → организовываешь контент in-house или платное промо, набираешь миллионы просмотров
• теперь много просмотров, но мало скачиваний? → работаешь качеством интеграции, четким call-to-action, воронкой в AppStore
• много инсталлов, просел ARPU (средняя выручка на инсталл) → обновляешь онбординг / пейволл / ценообразование / фиксишь баги на входе
И так работаешь по кругу, каждую неделю фокусируясь на той метрике, которая сейчас просела. Бизнес это тоже своего рода рутина
Скачать приложение: https://onelink.to/get-vibe
Мне написали ребята которые пилят стартап, который как раз помогает создавать эвалы. Судя по ленду, у ребят хорошее чувство вкуса и крутой продукт. Я точно буду пробовать
https://inferscope.tech/
https://youtu.be/e4xDdCoMrT0?si=oTkGxC-MUo4N2YG5&t=390
Каждый раз, когда встречаешь кого-то в чём-то лучше тебя, есть 2 типа реакции:
А. Обесценить, нивелировать достижения (эго спасено, нет нужды менять себя)
B. Задаться вопросом: какие уроки я могу из этого извлечь? как это может помочь мне стать лучше?
Первый путь простой и с точки зрения энергии низкозатратный. Быть циником легко. Ты лишь стоишь на месте и всех оцениваешь, критикуешь. Бонус того, чтобы не пробовать – не испытывать боли от неудач. Второй путь требует работы над собой, времени, усилий, труда.
Я предпочитаю видеть в своём окружении только людей, кто (даже когда это эмоционально сложно) сознательно выбирать второй вариант. Вместо сравнений, оправданий и обесцениваний – вечный вопрос "чему я могу научиться?". Такие люди впитывают новые знания и навыки как губка, быстро эволюционируют и делают level up с каждым годом
Growth mindset
#OCRBench Как строить бенчмарк с LLM-as-a-Judge?
Решил пойти по стопам Рината (@llm_under_hood) и периодически публиковать результаты тех или иных внутренних бенчмарков по разным моделям. Например вот как можно сделать бенчмарк по OCR (Optical Character Recognition), в нашем случае парсинг переписки со скриншота
Для тех, кто не знает, я делаю AI Dating Copilot – приложение, которое по скриншоту переписки или профиля подсказывает, что написать. Короткое демо iOS приложения в действии:
/channel/bogdanisssimo/1899
Вообще, разработка эвалов (систем оценки тех или иных задач вашего AI-сервиса) – одно из ключевых занятий при создании AI продуктов. Без них у тебя единственный способ принятия решений – это "по ощущениям". Мы конечно же пропагандируем Data-Driven Dating, поэтому сегодня мы говорим о том, как строить свои бенчмарки
Я понимаю, что этим постом я буквально делаю подарок коллегам по цеху, но если они не догадались в 2025 использовать LLM для OCR, это говорит о том, что они не очень заботятся о качестве продукта для пользователя и совсем не экспериментируют с пайплайном. Тем более, я почти год назад об этом писал сам (см. «Мечтает ли GPT-4o о сегментации картинок»). В конечном итоге оцениваю, что для моей аудитории это даст х100 больше value, чем преимуществ конкурентам
Значит, как я варил свой OCR Benchmark:
1. Берем 100-200 скриншотов переписок от пользователей, особенно нас интересуют сложные кейсы, где классический парсер (TextRecognition + if-else) или LLM часто ошибаются
2. Берем *довольно сложный* промпт для парсинга диалога, со всеми деталями (включая кто на какое сообщение ответил / поставил реакцию / какой длины голосовое и т.д.)
3. Пусть у нас есть какая-то система, которая работает сейчас. Мы через неё прогоняем все кейсы, затем глазками смотрим каждый скриншот, ручками меняем output до идеального. Это наши ground truth. Где-то будут ошибки в отправителях. Где-то будут пропущены какие-то куски сообщений. Где-то будет лишний мусор. Все это мануально вычищается
4. Прогоняем для нужной LLM все скриншоты
5. Теперь самое интересное: как сравнивать предикты и expected output? Год назад (когда ещё не было GPT-4o-mini и Claude 3 Haiku была не такой уж стабильной) я бы это делал по старинке через расстояние Левенштейна. Какие есть проблемы у этого подхода?
- непонятно как численно сравнивать и штрафовать за кейсы когда сообщение правильно распознано, но приписано не тому отправителю
- есть моменты когда куски диалога описывают что-то (кто кому какую реакцию поставил), а не буквально парсят текст на картинке
- пара букв разницы может иметь разный вес в зависимости от контекста
- ошибки вначале диалога менее критичны чем ошибки в самом конце (которые важнее всего для определения ситуации и понимания, что написать)
- одна и та же ошибка в короткой переписке и в длинной может по-разному влиять на диалог
Поэтому намного стабильнее, практичнее и проще использовать легковесную LLM-судью, которой мы даём кейс, ожидаемый результат и результат модели и просим на основе нашего подробного чеклиста (наши критерии) сравнить, оценить от 0 до 100 + дать фидбек по замеченным ошибкам (которые можно будет использовать для отладки, см. «анализ ошибок в ML системах»).
Внизу прикрепляю результаты замеров OCR Bench по разным LLM из свеже вышедших
—
Разумеется ровно такой же подход распространяется на очень широкий спектр кейсов. По сути это сводит оценку очень сложных выхлопов моделей к подобию тривиальных unit-тестов из разработки. В большинстве (менее технических) задач LLM-оценщик не заведётся с первого раза и понадобится большое количество итераций вместе с экспертом по выравниванию оценок LLM-оценщика и эксперта
Подробнее про LLM-as-a-judge можно почитать здесь:
- https://www.evidentlyai.com/llm-guide/llm-as-a-judge
- https://www.confident-ai.com/blog/why-llm-as-a-judge-is-the-best-llm-evaluation-method
- https://huggingface.co/learn/cookbook/en/llm_judge
Ваш любимый @bogdanisssimo, буду благодарен репостам друзьям и в ваши каналы
P.S. Какие модели посоветуете ещё прогнать? Какие тулзы для эвалов вы юзаете?
Кладбище приложений
Иногда я гуляю по AppStore и вижу десятки, если не сотни, приложений в своей нише
«Последее обновление было 7 месяцев назад». Нулевая выручка в AppsFigures/SensorTower: А ведь каждое из этой сотни – это как минимум десятки или сотни человеко-часов, потраченных на разработку; возможно тысячи долларов. 95% из них это copy cats. А сколько ещё сверху не дожило и до AppStore…
Реальная конкуренция из этих сотен – это всего 3-5 команд
Безусловно, вайб-кодинг значительно упрощает жизнь, но он не отнимает потребности в упорстве, маркетинге, общении с пользователями, чувстве вкуса и глубины понимания боли пользователя
Заыайбкодить болванку с загрузкой скринов, gpt api вызовом и пейволлом, завести юрлицо (особенно если ты не из РФ) – действительно нетрудно. Но реальная работа с этого лишь начинается, а не коннчается
Подавляющее большинство фаундеров сдаётся слишком рано, пройдя меньше 1-5% пути
Или, как говорят в Y Combinator:
Большинство стартапов умирает от суицида, не от убийства
Запустили Gemini 2.5 Flash в превью, по ценам – в 10 раз дешевле o4-mini. Должно быть сносно для написания кода, где хочется подешевле, картинок и длинного контекста.
Читать полностью…У OpenAI вышел классный гайд для бизнеса, на тему того как внедрять GenAI в бизнесс процессы:
https://openai.com/business/guides-and-resources/
Внутри 3 части:
– АИ на предприятии: Опыт семи передовых компаний
– Практическое руководство по созданию агентов ИИ: Что агенты АИ могут сделать для ваших сотрудников?
– Определение и масштабирование сценариев применения АИ: На чём концентрируются компании, первыми внедрившие АИ
Я полистал и там внутри много вещей на которых лично я набивал шишки в практике с GenAI, очень рекомендую корпоративным менеджерам
Про вайбкодинг
Я сжег уже больше 100М токенов в Claude Code, потому имею моральное право поделиться опытом про вайбкодинг.
1. Вайбкодинг действительно очень сильно ускоряет решение большей части задач. Нюанс, как обычно, в том, чтобы вовремя заметить те 20% кода, где его применять не надо.
Не надо применять:
- нетривиальный алгоритмический код (сломается в корнеркейсе - задолбаешься дебажить);
- свежие библиотеки (даже если заставлять читать документацию из интернета, в среднем получается плохо);
- метапрограммирование, написание фреймворков, дизайн API между компонентами;
- security-sensitive задачи.
Надо применять:
- +1 задачи (посмотри, как сделано здесь, и сделай по аналогии);
- все некритичные задачи в незнакомом домене (набросать фронтенд);
- типичный IO layer (в основном хендлеры);
- задачи, в которых вся “сложность” - знать 100500 команд и флагов API (например, aws cli).
2. Вайбкодинг несет неочевидный оверхед в сеньорной команде. Раньше если человек видел код и не понимал его с первой попытки, применялась презумпция качественного кода: если оно написано и закоммичено умным человеком, то, наверное, в этом смысл, надо перечитать и вдуматься. Сейчас иногда приходится переспрашивать “в этом есть какой-то нетривиальный замысел или ты просто нагенерил говна?”
3. Всегда нужно останавливаться и рефакторить - что-то руками, что-то и вайбкодом (“остановись и посмотри, что ты нахуевертил”). Вайбкодинг приводит к куче лишних сущностей, надо вовремя подрезать.
4. Если диалог идет не в ту сторону с нескольких итераций, нужно всегда начинать сначала, его уже не спасти. Если несколько попыткок стабильно скатываются в дичь, несмотря на добавление деталей в изначальный промпт, см. пункт 1.
5. Главный кайф не только в кодогенерации, а именно в активном агентском режиме - кидаешь промпт типа “посмотри на CI, почему упал такой-то PR и найди проблему” или “я задеплоил сервис этим терраформом, посмотри все логи и разберись, почему хелсчеки не проходят”.
6. Для эффективной работы нужно дописывать правила в CLAUDE.md
(.cursorrules
и так далее), подключать релевантные MCP и в целом анализировать, где оно косячит. Например, вот кусок моего глобал конфига:
Python style guide:
1) when catching exceptions, use logger.exception("message"), not logger.error(str(e)).
2) do not use mocks unless explicitly asked!
3) ensure types are correct, e.g. def hello(name: str = None) is WRONG, def hello(name: str | None = None) is correct.
4) use logger = logging.getLogger(__name__) when declaring a logger
5) prefer match + case over if + elif + else
6) using hasattr is typically a sign of bad design!
Google Is Winning on Every AI Front (Score: 153+ in 4 hours)
Link: https://readhacker.news/s/6sCAV
Comments: https://readhacker.news/c/6sCAV
Вайб топ-2 в Российском и Узбекском AppStore по ключевому слову “vibe” 🤩
https://apps.apple.com/app/vibe-ai/id6553989941
Vibe Coding: Как писать код в 10 раз быстрее с помощью AI
📅 14 апреля | 🕔 17:00 по московскому времени
🎙 Спикеры:
- Богдан Печёнкин — фаундер Vibe AI и автор канала @bogdanisssimo
- Александр Лыков — к.ф.-м.н., академический руководитель Школы Высшей Математики
Что тебя ждёт:
➖Живые примеры, как сейчас пишется код
➖Вехи внедрения AI в разработку (GitHub Copilot → ChatGPT/DeepSeek → Cursor → Lovable/Bolt/Replit)
➖Современный Vibe coding, как сейчас выглядит рынок инструментов
➖Как нужно поменять разработчикам и менеджерам подход к разработке / майндсет / процесс и с чего начать переход
📍 Записывайся прямо сейчас по ссылке