Интересное что-то
517 subscribers
2.72K photos
253 videos
139 files
4.52K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.me/asisakov_channel
Чат: https://t.me/youknowds_chat
Download Telegram
Forwarded from Neural Kovalskii
SearXNG Tavily Adapter: когда жаба душит платить за поиск 🐸

Надоело тратить деньги на 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!

Не забываем ставить звезды в репо!
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?

При желании почти любую задачу можно так или иначе выразить в деньгах
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). К сожалению, нет рекомендаций, как эффективно обрабатывать несколько клиентов.

Какой подход вы используете для эффективной обработки нескольких сетевых соединений?
Forwarded from BOGDANISSSIMO
пожалуй, самое грамотное видео о коммуникации, которое я смотрел. Очень плотное по содержанию, много прикладных советов

https://www.youtube.com/watch?v=BIvVGhy_VxU

- как правильно организовывать миты (прим. важно уделять время "продаже" - короткому напоминанию/объяснению почему мы созвонились, какую проблему решаем, почему это важно для бизнеса, а не переходить сразу к "логистике")
- как быть эксплицитным, как не завышать/не занижать свою уверенность в своей информации (самая большая проблема, когда твои гипотезы позиционируются как факты - значит, коммуникации-то и не случилось)
- как запрашивать обратную связь, "managing up" - как налаживать коммуникацию со своим менеджером (прим. "у меня проблема X" = заставляешь его делать твою работу, думать, диктовать что делать; "у меня проблема X, вот такие 3 решения вижу, ничего ли не упустил?" = сильно упрощаешь взаимодействие с тобой и показывает самостоятельность)
- как писать коротко и структурировано, чтобы тебя слышали с первого раза (лучше писать в 2 раза дольше, но чтобы все с первого раза всё узнали/поняли, чем писать неясно и отвлекать кучу коллег от работы запуская пинг-понг из сообщений в рабочем чате); о важности перечитывания хотя бы 1 раз того, что ты пишешь

+ очень много других тактических приемов, благодаря которым и вам будет легче работать и оказывать влияние на команду, и с вами будет легче работать
Forwarded from Denis Sexy IT 🤖
У OpenAI вышел классный гайд для бизнеса, на тему того как внедрять GenAI в бизнесс процессы:
https://openai.com/business/guides-and-resources/

Внутри 3 части:
– АИ на предприятии: Опыт семи передовых компаний
– Практическое руководство по созданию агентов ИИ: Что агенты АИ могут сделать для ваших сотрудников?
– Определение и масштабирование сценариев применения АИ: На чём концентрируются компании, первыми внедрившие АИ

Я полистал и там внутри много вещей на которых лично я набивал шишки в практике с GenAI, очень рекомендую корпоративным менеджерам
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
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) здесь уже начинают размазываться – и можно принимать решение, куда перенаправить усилия, ресурсы
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 пару батчей назад стартап на эту тему
Forwarded from BOGDANISSSIMO
#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

#Evals