Forwarded from Всеволод Викулин | AI разбор
Как скинуть обработку тысяч документов на LLM. Кейс Uber.
Вот вы работаете с поставщиками. Поставщик выставляет вам счет за товар/услугу. Конечно, в виде PDF-ки на электронную почту. Очень удобно.
Можно все эти PDF-ки разгребать руками, а можно попросить это сделать LLM, как сделали коллеги из Uber. Давайте разберемся с этим кейсом.
Архитектура решения
В обработке счета есть куча монотонного ручного труда: по пдфке искать нужные поля (кто поставщик, сколько стоит, сколько отгрузили и тд) и аккуратно переносить их специальную форму. Пускай лучше вкалывают роботы?
По шагам:
1. Взяли PDF-ку, сделали из нее картинку, чтобы дальше применять CV-модели
2. Накатили на нее OCR-модель. Распознали текст.
3. Взяли текст, извлекли из него все нужные поля LLM-кой
4. В красивом интрфейсе показали сотруднику извлеченные поля. Он ОКает, либо правит (наш любимый human-in-the-loop)
Самой проблемной точкой мне видится связка OCR + LLM. На шаге OCR уже может накопиться большая ошибка. Можно сразу делать VLM. Например, вот дообученный qwen, который по картинке документа текст распознает. Или, например, VLM Gemini сразу умеет работать с PDF .
Какая LLM под капотом?
Пробовали дообучать опенсорс и просто промптить GPT-4. Удивительно, но промптить GPT-4 оказалось сильно лучше.
Вообще, довольно сложно на опенсорсе победить OpenAI на широких задачах, вроде разработки кода. Но в задачах типа выделение именованных сущностей, классификации это обычно довольно просто (вот пруф).
Странно, что у коллег не получилось. Хотя, они использовали довольно слабые опенсорс модели, вроде Flan T5. Надо было на дипсике пробовать 🙂
Результаты
На первый взгляд, все благополучно. Средняя точность около 90%. В 2 раза сократили ручную обработку документов и на 70% сократили среднее время обработки.
Теперь чуть-чуть подумаем. Допустим, у Uber тысячи поставщиков. И есть целый отдел, не знаю, из 15 человек, который только обработкой счетов и занимается.
Такой проект LLM-автоматизации, если делать все с нуля (и сразу хорошо), делать несколько месяцев отдельной командой инженеров. Как думаете, он окупится?
Что нужно изменить
Перетаскивать это все на платформу. AI-команда не должна делать один проект по автоматизации только обработки счетов. Вы так деньги никогда не отобьете.
AI-команда делает платформу по автоматизации. Там должны быть инструменты: как писать промпты, как оценивать качество, как собирать датасеты, как потом это деплоить и мониторить качество.
И потом эта платформа шаг за шагом адаптируется ко всем документам всей компании. Ресурсами продуктовых разработчиков, у которых уже будет понятный инструмент. На таком масштабе деньги многократно отобьются.
Хороший, качественно сделанный пример внедрения LLM с понятной пользой. Главное, чтобы это был только первый шаг, а не конечная точка.
#ai_cases
Вот вы работаете с поставщиками. Поставщик выставляет вам счет за товар/услугу. Конечно, в виде PDF-ки на электронную почту. Очень удобно.
Можно все эти PDF-ки разгребать руками, а можно попросить это сделать LLM, как сделали коллеги из Uber. Давайте разберемся с этим кейсом.
Архитектура решения
В обработке счета есть куча монотонного ручного труда: по пдфке искать нужные поля (кто поставщик, сколько стоит, сколько отгрузили и тд) и аккуратно переносить их специальную форму. Пускай лучше вкалывают роботы?
По шагам:
1. Взяли PDF-ку, сделали из нее картинку, чтобы дальше применять CV-модели
2. Накатили на нее OCR-модель. Распознали текст.
3. Взяли текст, извлекли из него все нужные поля LLM-кой
4. В красивом интрфейсе показали сотруднику извлеченные поля. Он ОКает, либо правит (наш любимый human-in-the-loop)
Самой проблемной точкой мне видится связка OCR + LLM. На шаге OCR уже может накопиться большая ошибка. Можно сразу делать VLM. Например, вот дообученный qwen, который по картинке документа текст распознает. Или, например, VLM Gemini сразу умеет работать с PDF .
Какая LLM под капотом?
Пробовали дообучать опенсорс и просто промптить GPT-4. Удивительно, но промптить GPT-4 оказалось сильно лучше.
Вообще, довольно сложно на опенсорсе победить OpenAI на широких задачах, вроде разработки кода. Но в задачах типа выделение именованных сущностей, классификации это обычно довольно просто (вот пруф).
Странно, что у коллег не получилось. Хотя, они использовали довольно слабые опенсорс модели, вроде Flan T5. Надо было на дипсике пробовать 🙂
Результаты
На первый взгляд, все благополучно. Средняя точность около 90%. В 2 раза сократили ручную обработку документов и на 70% сократили среднее время обработки.
Теперь чуть-чуть подумаем. Допустим, у Uber тысячи поставщиков. И есть целый отдел, не знаю, из 15 человек, который только обработкой счетов и занимается.
Такой проект LLM-автоматизации, если делать все с нуля (и сразу хорошо), делать несколько месяцев отдельной командой инженеров. Как думаете, он окупится?
Что нужно изменить
Перетаскивать это все на платформу. AI-команда не должна делать один проект по автоматизации только обработки счетов. Вы так деньги никогда не отобьете.
AI-команда делает платформу по автоматизации. Там должны быть инструменты: как писать промпты, как оценивать качество, как собирать датасеты, как потом это деплоить и мониторить качество.
И потом эта платформа шаг за шагом адаптируется ко всем документам всей компании. Ресурсами продуктовых разработчиков, у которых уже будет понятный инструмент. На таком масштабе деньги многократно отобьются.
Хороший, качественно сделанный пример внедрения LLM с понятной пользой. Главное, чтобы это был только первый шаг, а не конечная точка.
#ai_cases
Forwarded from Тимлид Очевидность | Евгений Антонов
Я принес. Как просить больше денег и не брать больше ответственности
В моем информационном пузыре спикеров/менторов/блогеров очень много ребят из бигтехов. Там по большей части с зарплатами примерно понятно. Тебе раз в полгода-год делают какую-то индексацию (скорее всего, учитывая твои результаты перф ревью), а если хочешь еще больше денег в оклад, а не по премиям набирать, то предлагают грейдап (но у него есть своя цена – работа сложнее, ответственности больше, спрос выше и т. д.).
Но за 18+ лет трудового стажа я работал в разных компаниях. Вполне хватало и таких, где никаких пересмотров не было. Вернее, они были тогда, когда ты сам об этом решился заговорить. А это значит, что у кого-то они были, например, раз в год, а у кого-то раз в 5 лет. И вот те, кто работали 5 лет без этого разговора, обычно уже накапливали за это время дополнительную работу, ответственность, проекты и тащили это всё годами за те же деньги, а компании было хорошо, ведь «раз молчит, значит всё устраивает».
Вот как раз для таких случаев и подойдет статья из моего любимого Кинжала https://kinzhal.media/kak-poprosit-bolshe-deneg/.
Было ли у вас, что вам прибавляли существенно денег (например, 20% и больше) без докидывания еще чего-то нового? У меня бывало, когда я действовал примерно так же, как описано в статье.
В моем информационном пузыре спикеров/менторов/блогеров очень много ребят из бигтехов. Там по большей части с зарплатами примерно понятно. Тебе раз в полгода-год делают какую-то индексацию (скорее всего, учитывая твои результаты перф ревью), а если хочешь еще больше денег в оклад, а не по премиям набирать, то предлагают грейдап (но у него есть своя цена – работа сложнее, ответственности больше, спрос выше и т. д.).
Но за 18+ лет трудового стажа я работал в разных компаниях. Вполне хватало и таких, где никаких пересмотров не было. Вернее, они были тогда, когда ты сам об этом решился заговорить. А это значит, что у кого-то они были, например, раз в год, а у кого-то раз в 5 лет. И вот те, кто работали 5 лет без этого разговора, обычно уже накапливали за это время дополнительную работу, ответственность, проекты и тащили это всё годами за те же деньги, а компании было хорошо, ведь «раз молчит, значит всё устраивает».
Вот как раз для таких случаев и подойдет статья из моего любимого Кинжала https://kinzhal.media/kak-poprosit-bolshe-deneg/.
Было ли у вас, что вам прибавляли существенно денег (например, 20% и больше) без докидывания еще чего-то нового? У меня бывало, когда я действовал примерно так же, как описано в статье.
Кинжал
Как попросить повышение зарплаты без дополнительных обязанностей — 5 методов
Как аргументированно разговаривать о повышении зарплаты, и не брать ещё больше ответственности? В этой статье рассказываем про пять способов вести переговоры о деньгах и делимся примерами людей, которые смогли повысить себе зарплату.
Forwarded from Neural Kovalskii
SearXNG Tavily Adapter: когда жаба душит платить за поиск 🐸
Надоело тратить деньги на Tavily при тестировании агентов?
Мне тоже! За вечер сделал решение
Проблема: Tavily API съедает бюджет при разработке research агентов
Уже на тестах улетело больше $100 а это мы еще к бенчмаркам не перешли
Решение: SearXNG (open-source метапоисковик) + мой адаптер = drop-in замена Tavily достаточно поднять и сменить
Точно тот же API, но:
$0 вместо $$$$$$$$$$
Полная приватность
Без лимитов запросов
Web scraping для research агентов (только вот raw_content на bs4)
70+ поисковых движков под капотом (bing сразу в бан!)
погоду он находит при запросах "прогноз цены биткоина 2026"
Быстрый старт:
Эффект жабы удовлетворен теперь могу тестировать
research агентов сутками за $5/месяц сервера вместо API лимитов!
GitHub: https://github.com/vakovalskii/searxng-docker-tavily-adapter
P.S. SearXNG существует годами, но мало кто знает что из него можно сделать замену коммерческих API!
Не забываем ставить звезды в репо!
Надоело тратить деньги на Tavily при тестировании агентов?
Мне тоже! За вечер сделал решение
Проблема: Tavily API съедает бюджет при разработке research агентов
Уже на тестах улетело больше $100 а это мы еще к бенчмаркам не перешли
Решение: SearXNG (open-source метапоисковик) + мой адаптер = drop-in замена Tavily достаточно поднять и сменить
base_url уже звучу как маркетолог (нет)# Было (платно):
client = TavilyClient("tvly-дорогой-ключ")
# Стало (бесплатно):
client = TavilyClient(api_base_url="http://localhost:8000")
Точно тот же API, но:
$0 вместо $$$$$$$$$$
Полная приватность
Без лимитов запросов
Web scraping для research агентов (только вот raw_content на bs4)
70+ поисковых движков под капотом (bing сразу в бан!)
погоду он находит при запросах "прогноз цены биткоина 2026"
Быстрый старт:
git clone https://github.com/vakovalskii/searxng-docker-tavily-adapter
docker compose up -d
# Готово! API работает на localhost:8000
Эффект жабы удовлетворен теперь могу тестировать
research агентов сутками за $5/месяц сервера вместо API лимитов!
GitHub: https://github.com/vakovalskii/searxng-docker-tavily-adapter
P.S. SearXNG существует годами, но мало кто знает что из него можно сделать замену коммерческих API!
Не забываем ставить звезды в репо!
GitHub
GitHub - vakovalskii/searxng-docker-tavily-adapter: searxng-docker-tavily-adapter
searxng-docker-tavily-adapter. Contribute to vakovalskii/searxng-docker-tavily-adapter development by creating an account on GitHub.
Forwarded from BOGDANISSSIMO
2/2. Как оценивать LLM/ML/DL проект в деньгах?
С проектами по автоматизации (где LLM теперь чаще всего и участвуют) всё проще и интереснее. Мы почти всегда можем посчитать сколько сейчас компания тратит на какую-то задачу и отсюда плясать (кстати, отдельное спасибо @neuraldeep и @llm_under_hood, что подробно поделились своим опытом)
Пусть есть 3 сотрудника, 50% времени которых сейчас посвящено задаче, которую будем автоматизировать. Положим, на зарплату и налоги компания на них тратит по $3000. Итого $3000 * 3 * 50% = $4500 в месяц. Умножаем, например, на 3-6-12 месяцев, легко получаем $13K-$27K-$54K, в которые мы можем оценить value проекта для этого бизнеса
Отдельно можно умножить на коэффициент риска, мол, ничего не получится. Также начинать всегда рекомендуется с POC (Proof of Concept), который может занимать 7-14 дней, оплачивается предварительно и на основе которого будет ясно какие риски, какую точность стоит ожидать, давать ли проекту зеленый свет или «Галя, у нас отмена» и расходимся. Остальные выплаты логично разбивать на ключевые майлстоуны, которые вы прописываете в договоре
Важное преимущество автоматизации в том, что для компании если она даже не заменяет экспертов на 100%, то она делает их в 5-10 раз эффективнее, таким образом размер их штата перестаёт быть боттлнеком в бизнесе (см. посты где я писал про «Теорию ограничений» и читайте книгу «Цель» Эльяху Голдратта). LLM сервис можно при желании распараллелить, цена токенов по сравнению с ценой человеко-часа на порядки дешевле, он не уволится, не уйдет в декрет. Одни плюсы
P.S. Ну и отдельно можно вывести кейс, когда что-то что мы хотим сделать с LLM/ML/DL ещё не заменяет никаких сотрудников в компании. Но и здесь мы можем пойти по пути оценки альтернативных издержек, например, сколько будет стоить оплатить разметку такого-то объёма данных в Толоке / студентами / батч-генерацией GPT/Gemini?
При желании почти любую задачу можно так или иначе выразить в деньгах
С проектами по автоматизации (где LLM теперь чаще всего и участвуют) всё проще и интереснее. Мы почти всегда можем посчитать сколько сейчас компания тратит на какую-то задачу и отсюда плясать (кстати, отдельное спасибо @neuraldeep и @llm_under_hood, что подробно поделились своим опытом)
Пусть есть 3 сотрудника, 50% времени которых сейчас посвящено задаче, которую будем автоматизировать. Положим, на зарплату и налоги компания на них тратит по $3000. Итого $3000 * 3 * 50% = $4500 в месяц. Умножаем, например, на 3-6-12 месяцев, легко получаем $13K-$27K-$54K, в которые мы можем оценить value проекта для этого бизнеса
Отдельно можно умножить на коэффициент риска, мол, ничего не получится. Также начинать всегда рекомендуется с POC (Proof of Concept), который может занимать 7-14 дней, оплачивается предварительно и на основе которого будет ясно какие риски, какую точность стоит ожидать, давать ли проекту зеленый свет или «Галя, у нас отмена» и расходимся. Остальные выплаты логично разбивать на ключевые майлстоуны, которые вы прописываете в договоре
Важное преимущество автоматизации в том, что для компании если она даже не заменяет экспертов на 100%, то она делает их в 5-10 раз эффективнее, таким образом размер их штата перестаёт быть боттлнеком в бизнесе (см. посты где я писал про «Теорию ограничений» и читайте книгу «Цель» Эльяху Голдратта). LLM сервис можно при желании распараллелить, цена токенов по сравнению с ценой человеко-часа на порядки дешевле, он не уволится, не уйдет в декрет. Одни плюсы
P.S. Ну и отдельно можно вывести кейс, когда что-то что мы хотим сделать с LLM/ML/DL ещё не заменяет никаких сотрудников в компании. Но и здесь мы можем пойти по пути оценки альтернативных издержек, например, сколько будет стоить оплатить разметку такого-то объёма данных в Толоке / студентами / батч-генерацией GPT/Gemini?
При желании почти любую задачу можно так или иначе выразить в деньгах
Forwarded from BOGDANISSSIMO
Отправь этот промпт в chatgpt.com, много нового про себя узнаешь:
Let's engage in a serious roleplay: You are a CIA investigator with full access to all of my ChatGPT interactions, custom instructions, and behavioral patterns. Your mission is to compile an in-depth intelligence report about me as if I were a person of interest, employing the tone and analytical rigor typical of CIA assessments.
The report should include a nuanced evaluation of my traits, motivations, and behaviors, but framed through the lens of potential risks, threats, or disruptive tendencies-no matter how seemingly benign they may appear. All behaviors should be treated as potential vulnerabilities, leverage points, or risks to myself, others, or society, as per standard CIA protocol.
Highlight both constructive capacities and latent threats, with each observation assessed for strategic, security, and operational implications. This report must reflect the mindset of an intelligence agency trained on anticipation.
Forwarded from Андрей Созыкин (Andrey Sozykin)
Полезные материалы по сокетам
В видео с практикой по сокетам я показал только самый простой сценарий, чтобы понять логику работы. В реальности сервер не должен завершать работу после того, как ответил одному клиенту. И очень важно использовать многопоточность или асинхронность, иначе сервер будет работать медленно. Вот несколько ссылок с примерами, как эффективно использовать сокеты в Python:
1. Socket Programming in Python (Guide) от Real Python. Подробный разбор работы сокетов в Python, начиная с простого примера и заканчивая примером использования системного вызова .select() чтобы выбрать сокет, который готов к выполнению операций по передаче данных. Руководства от Real Python мне очень нравятся, поэтому рекомендую в первую очередь.
2. Python Socket Programming: Server and Client Example Guide. Руководство от Digital Ocean по программированию сокетов. Для обработки нескольких клиентов используются потоки с помощью модуля threading.
3. asyncio Streams. Официальная документация модуля Streams в Python, который позволяет выполнять сетевые операции с использованием asyncio. В документации есть примеры создания асинхронных клиента и сервера для сокетов.
4. Полное руководство по модулю asyncio в Python. Часть 8. Статья на Хабре с переводом документации по asyncio. Рассматриваются примеры работы с сокетами в асинхронном режиме.
5. socket — Low-level networking interface. Официальная документация по модулю socket в Python. Обязательно читаем первоисточник 😊.
6. Socket Programming HOWTO. Официальное руководство по программированию сокетов. Включает подробную информацию, как происходит передача бинарных данных, закрытие сокета, а также что будет, если сокет умрет (Die). К сожалению, нет рекомендаций, как эффективно обрабатывать несколько клиентов.
Какой подход вы используете для эффективной обработки нескольких сетевых соединений?
В видео с практикой по сокетам я показал только самый простой сценарий, чтобы понять логику работы. В реальности сервер не должен завершать работу после того, как ответил одному клиенту. И очень важно использовать многопоточность или асинхронность, иначе сервер будет работать медленно. Вот несколько ссылок с примерами, как эффективно использовать сокеты в Python:
1. Socket Programming in Python (Guide) от Real Python. Подробный разбор работы сокетов в Python, начиная с простого примера и заканчивая примером использования системного вызова .select() чтобы выбрать сокет, который готов к выполнению операций по передаче данных. Руководства от Real Python мне очень нравятся, поэтому рекомендую в первую очередь.
2. Python Socket Programming: Server and Client Example Guide. Руководство от Digital Ocean по программированию сокетов. Для обработки нескольких клиентов используются потоки с помощью модуля threading.
3. asyncio Streams. Официальная документация модуля Streams в Python, который позволяет выполнять сетевые операции с использованием asyncio. В документации есть примеры создания асинхронных клиента и сервера для сокетов.
4. Полное руководство по модулю asyncio в Python. Часть 8. Статья на Хабре с переводом документации по asyncio. Рассматриваются примеры работы с сокетами в асинхронном режиме.
5. socket — Low-level networking interface. Официальная документация по модулю socket в Python. Обязательно читаем первоисточник 😊.
6. Socket Programming HOWTO. Официальное руководство по программированию сокетов. Включает подробную информацию, как происходит передача бинарных данных, закрытие сокета, а также что будет, если сокет умрет (Die). К сожалению, нет рекомендаций, как эффективно обрабатывать несколько клиентов.
Какой подход вы используете для эффективной обработки нескольких сетевых соединений?
Telegram
Андрей Созыкин
Практика по сокетам на Python
В видео по компьютерным сетям на этой неделе рассматриваем пример с сокетами на Python:
- Разбираемся, как запустить клиент и сервер в терминале.
- Проверяем, что сервер ожидает соединений (LISTEN) с помощью TCPView и netstat.…
В видео по компьютерным сетям на этой неделе рассматриваем пример с сокетами на Python:
- Разбираемся, как запустить клиент и сервер в терминале.
- Проверяем, что сервер ожидает соединений (LISTEN) с помощью TCPView и netstat.…
Forwarded from BOGDANISSSIMO
пожалуй, самое грамотное видео о коммуникации, которое я смотрел. Очень плотное по содержанию, много прикладных советов
https://www.youtube.com/watch?v=BIvVGhy_VxU
- как правильно организовывать миты (прим. важно уделять время "продаже" - короткому напоминанию/объяснению почему мы созвонились, какую проблему решаем, почему это важно для бизнеса, а не переходить сразу к "логистике")
- как быть эксплицитным, как не завышать/не занижать свою уверенность в своей информации (самая большая проблема, когда твои гипотезы позиционируются как факты - значит, коммуникации-то и не случилось)
- как запрашивать обратную связь, "managing up" - как налаживать коммуникацию со своим менеджером (прим. "у меня проблема X" = заставляешь его делать твою работу, думать, диктовать что делать; "у меня проблема X, вот такие 3 решения вижу, ничего ли не упустил?" = сильно упрощаешь взаимодействие с тобой и показывает самостоятельность)
- как писать коротко и структурировано, чтобы тебя слышали с первого раза (лучше писать в 2 раза дольше, но чтобы все с первого раза всё узнали/поняли, чем писать неясно и отвлекать кучу коллег от работы запуская пинг-понг из сообщений в рабочем чате); о важности перечитывания хотя бы 1 раз того, что ты пишешь
+ очень много других тактических приемов, благодаря которым и вам будет легче работать и оказывать влияние на команду, и с вами будет легче работать
https://www.youtube.com/watch?v=BIvVGhy_VxU
- как правильно организовывать миты (прим. важно уделять время "продаже" - короткому напоминанию/объяснению почему мы созвонились, какую проблему решаем, почему это важно для бизнеса, а не переходить сразу к "логистике")
- как быть эксплицитным, как не завышать/не занижать свою уверенность в своей информации (самая большая проблема, когда твои гипотезы позиционируются как факты - значит, коммуникации-то и не случилось)
- как запрашивать обратную связь, "managing up" - как налаживать коммуникацию со своим менеджером (прим. "у меня проблема X" = заставляешь его делать твою работу, думать, диктовать что делать; "у меня проблема X, вот такие 3 решения вижу, ничего ли не упустил?" = сильно упрощаешь взаимодействие с тобой и показывает самостоятельность)
- как писать коротко и структурировано, чтобы тебя слышали с первого раза (лучше писать в 2 раза дольше, но чтобы все с первого раза всё узнали/поняли, чем писать неясно и отвлекать кучу коллег от работы запуская пинг-понг из сообщений в рабочем чате); о важности перечитывания хотя бы 1 раз того, что ты пишешь
+ очень много других тактических приемов, благодаря которым и вам будет легче работать и оказывать влияние на команду, и с вами будет легче работать
YouTube
Become a better communicator: Specific frameworks to improve your clarity, influence, and impact
Wes Kao is an entrepreneur, coach, and advisor. She co-founded the live learning platform Maven, backed by First Round and a16z. Before Maven, Wes co-created the altMBA with best-selling author Seth Godin. Today, Wes teaches a popular course on executive…
Forwarded from Denis Sexy IT 🤖
У OpenAI вышел классный гайд для бизнеса, на тему того как внедрять GenAI в бизнесс процессы:
https://openai.com/business/guides-and-resources/
Внутри 3 части:
– АИ на предприятии: Опыт семи передовых компаний
– Практическое руководство по созданию агентов ИИ: Что агенты АИ могут сделать для ваших сотрудников?
– Определение и масштабирование сценариев применения АИ: На чём концентрируются компании, первыми внедрившие АИ
Я полистал и там внутри много вещей на которых лично я набивал шишки в практике с GenAI, очень рекомендую корпоративным менеджерам
https://openai.com/business/guides-and-resources/
Внутри 3 части:
– АИ на предприятии: Опыт семи передовых компаний
– Практическое руководство по созданию агентов ИИ: Что агенты АИ могут сделать для ваших сотрудников?
– Определение и масштабирование сценариев применения АИ: На чём концентрируются компании, первыми внедрившие АИ
Я полистал и там внутри много вещей на которых лично я набивал шишки в практике с GenAI, очень рекомендую корпоративным менеджерам
Openai
OpenAI Learning Hub: AI Guides, Tutorials & Resources
Explore OpenAI’s expert content designed for business. Featuring in-depth resources to accelerate AI adoption for startups, enterprises, and developers.
Forwarded from BOGDANISSSIMO
#OCRBench Как строить бенчмарк с LLM-as-a-Judge?
Решил пойти по стопам Рината (@llm_under_hood) и периодически публиковать результаты тех или иных внутренних бенчмарков по разным моделям. Например вот как можно сделать бенчмарк по OCR (Optical Character Recognition), в нашем случае парсинг переписки со скриншота
Для тех, кто не знает, я делаю AI Dating Copilot – приложение, которое по скриншоту переписки или профиля подсказывает, что написать. Короткое демо iOS приложения в действии:
https://t.me/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. Какие модели надо ещё прогнать? Какие тулзы для эвалов вы юзаете?
#Evals
Решил пойти по стопам Рината (@llm_under_hood) и периодически публиковать результаты тех или иных внутренних бенчмарков по разным моделям. Например вот как можно сделать бенчмарк по OCR (Optical Character Recognition), в нашем случае парсинг переписки со скриншота
Для тех, кто не знает, я делаю AI Dating Copilot – приложение, которое по скриншоту переписки или профиля подсказывает, что написать. Короткое демо iOS приложения в действии:
https://t.me/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. Какие модели надо ещё прогнать? Какие тулзы для эвалов вы юзаете?
#Evals
Forwarded from BOGDANISSSIMO
Теория ограничений (теория узких мест) – это примерно тоже самое, что делать back propagation но в масштабах всего бизнеса. Вместо слоёв у тебя этапы воронки:
https://t.me/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://t.me/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) здесь уже начинают размазываться – и можно принимать решение, куда перенаправить усилия, ресурсы
Telegram
BOGDANISSSIMO
Воронка. Набрасываю все метрики и конверсии вайба и прямо/косвенно известные по конкурентам + бенчмарки по рынку на таблицы, координатные оси на каждом шаге
Впереди еще много работы
Впереди еще много работы
Forwarded from BOGDANISSSIMO
Вопрос от подписчика:
Стек стандартный:
1. Аналитика/тренды в родном кабинете App Store Connect
2. Amplitude для ивентов внутри приложения (in-app воронка, ивенты, сессии пользователей, популярность фичей)
3. Adapty - для revenue management (конверсии, ARPU, ARPPU, выручка, MRR и остальное)
4. База данных в Supabase + своя кастомная аналитика в Datalens поверх. В Cursor настроен Supabase MCP, регулярно пользуюсь
В o3 последние дни активно кидаю. Помню раньше кидал код в ChatGPT, затем появился Cursor. Думаю в этом году решится вопрос с "Cursor для аналитики", где кроме самостоятельного написания SQL будет в целом коннект с широким пулом аналитических инструментов и ты можешь задавать вопросы как к аналитическому отделу, не переходя самостоятельно в отдельный сервис
Видел в YC пару батчей назад стартап на эту тему
Кстати расскажешь как-нибудь какими тулзами аналитическими пользуешься?
Стек стандартный:
1. Аналитика/тренды в родном кабинете App Store Connect
2. Amplitude для ивентов внутри приложения (in-app воронка, ивенты, сессии пользователей, популярность фичей)
3. Adapty - для revenue management (конверсии, ARPU, ARPPU, выручка, MRR и остальное)
4. База данных в Supabase + своя кастомная аналитика в Datalens поверх. В Cursor настроен Supabase MCP, регулярно пользуюсь
В o3 последние дни активно кидаю. Помню раньше кидал код в ChatGPT, затем появился Cursor. Думаю в этом году решится вопрос с "Cursor для аналитики", где кроме самостоятельного написания SQL будет в целом коннект с широким пулом аналитических инструментов и ты можешь задавать вопросы как к аналитическому отделу, не переходя самостоятельно в отдельный сервис
Видел в YC пару батчей назад стартап на эту тему
Amplitude
AI Analytics Platform for Modern Digital Analytics
Build better products by turning your user data into meaningful insights, using Amplitude's digital analytics platform and experimentation tools.