#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, как сейчас выглядит рынок инструментов
➖Как нужно поменять разработчикам и менеджерам подход к разработке / майндсет / процесс и с чего начать переход
📍 Записывайся прямо сейчас по ссылке
OpenAI открыто говорят каких усилий стоило обучить GPT-4.5
https://youtu.be/6nJZopACRuQ
Кевин Вейл, Chief Product Officer в OpenAI
https://www.youtube.com/watch?v=scsW6_2SPC4
Рассказывает о самом важном для нас:
- как поменяется процесс работы и создания продуктов в ближайшем будущем (что автоматизируется, а что нет? где нужен человек? нужно ли учиться писать код?)
- в какие рынки OpenAI/DeepMind/xAI и другие лабы не будут заходить (в каких нишах строить стартапы?)
- почему навык построения эвалов (бенчмарков/системы оценки своей AI системы) становится самым критичным в любом продукте
- какие навыки важнее всего развивать в AI эру
и о многом другом
Моя интуиция, что такое NPS 70+: это когда 75-80% пользователей настолько вовлеклись в использование продукта, что они просто не раздумывая ставят 9 или 10 в опроснике - чтобы уже свернуть его и не отвлекаться от продукта
Как считать NPS рассказывал здесь: /channel/bogdanisssimo/328
Когда собирать - сильно зависит от user journey вашего продукта, я собираю когда пользователь загружает свой третий скриншот (как раз в момент небольшого ожидания ответа от LLM). Самое главное чтобы метод сбора не менялся с течением времени, иначе нельзя сравнивать динамику значений по месяцам / кварталам
Забавный факт, число токенов в месяц, которые я расходую, исчисляется сотнями миллионов. Недалеко выйти и за миллиард
И это мы не берём Cursor/ChatGPT
Думай медленно, решай быстро?
https://apps.apple.com/app/vibe-ai/id6553989941
Демка приложения, апрель 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/
Всегда напоминай себе, что текущие модели – самые худшие модели, которыми ты будешь пользоваться всю оставшуюся жизнь
Читать полностью…Вижу много новых подписчиков, расскажите пожалуйста, как узнали про канал, кто / где поделился, может, каким постом?
Читать полностью…Если твой продукт попадает в боль, пользователи тебя из под земли достанут, чтобы попробовать 🫶
Не идеальные конверсии на каких-то из этапов воронки не будет препятствием
Кстати напомню, я добавил около 20 бесплатных сообщения всем кто ещё не брал подписку, чтобы познакомиться с продуктом до того как брать подписку 😏
https://apps.apple.com/ru/app/vibe-ai/id6553989941
Уже в проде: https://apps.apple.com/ru/app/vibe-ai/id6553989941
Читать полностью…Рост NPS линейно растёт с ростом сore-value продукта
Попробовать: onelink.to/get-vibe
[кстати теперь первые сообщения опять сделали бесплатными, чтобы все заценили]
пожалуй, самое грамотное видео о коммуникации, которое я смотрел. Очень плотное по содержанию, много прикладных советов
https://www.youtube.com/watch?v=BIvVGhy_VxU
- как правильно организовывать миты (прим. важно уделять время "продаже" - короткому напоминанию/объяснению почему мы созвонились, какую проблему решаем, почему это важно для бизнеса, а не переходить сразу к "логистике")
- как быть эксплицитным, как не завышать/не занижать свою уверенность в своей информации (самая большая проблема, когда твои гипотезы позиционируются как факты - значит, коммуникации-то и не случилось)
- как запрашивать обратную связь, "managing up" - как налаживать коммуникацию со своим менеджером (прим. "у меня проблема X" = заставляешь его делать твою работу, думать, диктовать что делать; "у меня проблема X, вот такие 3 решения вижу, ничего ли не упустил?" = сильно упрощаешь взаимодействие с тобой и показывает самостоятельность)
- как писать коротко и структурировано, чтобы тебя слышали с первого раза (лучше писать в 2 раза дольше, но чтобы все с первого раза всё узнали/поняли, чем писать неясно и отвлекать кучу коллег от работы запуская пинг-понг из сообщений в рабочем чате); о важности перечитывания хотя бы 1 раз того, что ты пишешь
+ очень много других тактических приемов, благодаря которым и вам будет легче работать и оказывать влияние на команду, и с вами будет легче работать