Интересное что-то
517 subscribers
2.72K photos
253 videos
138 files
4.51K links
Материалы и мысли, понадерганные отовсюду
Блог: https://t.iss.one/asisakov_channel
Чат: https://t.iss.one/youknowds_chat
Download Telegram
Forwarded from Daniilak — Канал
Переход c Selenium на Playwright

У меня имеется мой парсер для особых сервисов, который имеет в себе классический зоопарк с selenium (xvfb, конкретная версия ChromeDriver), а также постоянные проблемы с таймаутами и нестабильностью. В общем, всё как обычно.... а Xvfb было решением, которое... позволяет компилировать wasm скрипты

Я очень давно хотел его выкинуть. и наконец-то я близко у цели. Один playwright install chromium — и всё работает. Нативный async/await вместо костылей с WebDriverWait. Dockerfile сократился. Были улучшены воркеры, взамен самописных скриптов

Playwright действительно быстрее. Не на 10%, а ощутимо. Особенно заметно на больших объемах данных. Код стал чище — вместо
WebDriverWait(driver, 20).until(expected_conditions.presence_of_element_located((By.ID, "element")))
теперь просто await page.wait_for_selector("#element")

Не нужно гадать, почему браузер упал — Playwright просто говорит, что не так. Docker образ стал легче — я убрал xvfb, кучу системных пакетов и прочую ерунду. Теперь базовый образ python slim + Playwright.

Технически тоже всё упростилось. Браузер теперь инициализируется один раз на воркер и переиспользуется. Конфиги настраиваются через действительно конфиги, а не через аргументы. а их там аж 30 chrome параметров наберется. Скриншоты делаются встроенными методами

Да, можно было написать код на Selenium лучше, делать больше оберток и покупать лучше сервера, но он мне очень сильно надоел...
Forwarded from Женя Янченко
Частичные индексы

Представьте ситуацию. В БД PostgreSQL есть таблица с данными водителей:
id
company_id
name
phone


Внутри одной компании номер телефона водителя должен быть уникален. Для этого заведен индекс уникальности по (phone, company_id).

Затем добавляется возможность удалять водителей из кабинета компании. Удаление реализуем через soft delete: добавляем в табличку поле is_deleted. Все работает корректно.

Проходит время, и от пользователей приходит баг: при добавлении нового водителя возникает ошибка.

В логах видно, что БД ругается из-за нарушения уникальности. Оказалось, что запись с таким номером телефона уже существовала и была удалена.

Перед вставкой записи о новом водителе в коде делали проверку, нет ли уже в этой компании водителя с таким телефоном, но проверка была для неудаленных водителей: WHERE is_deleted = false, поэтому она не находила ранее удаленного водителя (и это правильно).
Для просмотра списка водителей тоже возвращались только неудаленные записи.

А индекс уникальности по (phone, company_id) при добавлении поля is_deleted изменить забыли. Поэтому при попытке добавить ранее удаленного водителя с тем же номером телефона возникала ошибка 😢

Разобрались, сделали, чтобы индекс уникальности тоже учитывал только неудаленные записи:
create unique index uc_drivers_phone_company_id
on drivers(phone, company_id)
where is_deleted is false;


Такой индекс называется частичным.

Частичный индекс — это индекс, который строится не по всем строкам таблицы, а по их подмножеству, определяемому условием WHERE. Это не обязательно должен быть индекс уникальности, может использоваться для индексов поиска.

Обратите внимание, что поле из WHERE не обязано быть индексируемым. В примере мы строим индекс по полям phone, company_id, а в предикате используем поле is_deleted.


Когда частичный индекс может пригодиться:

➡️ Как в разобранном выше кейсе, если нужно сделать уникальность по условию.

➡️ Когда в таблице 90% записей "неинтересны" для запросов, можно построить частичный индекс по оставшимся 10%, он будет работать быстрее и занимать в несколько раз меньше места.

Например, у вас есть таблица счетов.
90% счетов имеют статус "Оплачено", а запросы касаются счетов в других статусах.

Если сделать частичный индекс, проиндексировав для поиска оставшиеся 10% неоплаченных счетов, то такой индекс будет занимать значительно меньше места, чем индекс по всем строкам.

Это имеет смысл на больших таблицах, от миллионов строк, когда индекс по всей таблице становится слишком тяжёлым. Плюс запросов к тем 90% непроиндексированным строкам действительно должно быть минимум, ведь они будут обрабатываться без индекса.


⚡️ Ещё кейс из практики.

Когда работала в платформе, тоже столкнулась с ситуацией, в которой пригодились частичные индексы для уникальности.

В рамках одной из задач мне нужно было поддержать уникальность связки полей (a, b, c). Я добавила индекс и стала писать тесты. Поле c могло быть null, и в процессе тестирования я обнаружила, что несмотря на индекс могу добавить в таблицу две одинаковые записи со значениями:
a = 1, b = 2, c = null
a = 1, b = 2, c = null


Я знала, что c NULL используется не !=, а IS NULL и IS NOT NULL, так как для PostgreSQL NULL — это не значение, а маркер отсутствия данных. Но оказалось, что с null-значениями еще и уникальный индекс не видит конфликт.

И если мы хотим разрешить только одну такую запись a = 1, b = 2, c = null, то нужно сделать два частичных индекса уникальности:

1️⃣ Уникальность связки (a, b) where c is null
2️⃣ Уникальность связки (a, b, c) where c is not null

Частичные индексы — нечастая история, но могут пригодиться.

Читала, что в некоторых компаниях отказываются от constraints на уровне БД, таких как foreign keys и индексы уникальности, все необходимые проверки существуют только на уровне кода. Поделитесь, пожалуйста, как у вас?

🔗 — у нас созданы foreign keys и индексы уникальности в БД

💅 — у нас все проверки на уровне кода, индексы только для ускорения поиска
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Женя Янченко
Ребят, в комментариях к предыдущему посту про частичные индексы написали, что проблема с NULL значениями в индексах уникальности решена с PostgreSQL 15.
Моя история ещё из 2021 года 👨‍🦳

Сейчас можно добавить такую формулировку при создании индекса в конце:

NULLS NOT DISTINCT

И null values для целей индекса будут считаться одинаковыми, не нужно будет создавать два индекса.
Forwarded from Pavel Zloi
Частенько друзья, знакомые или коллеги интересуются, какие книги я бы порекомендовал инженеру, который только начинает разбираться с тем, как внедрять ML-системы и вообще, как работает "кухня" разработки интеллектуальных систем, ну и поскольку я не учёный, а скорее инженер-интегратор, я рекомендую пару книг за авторством Алекса Соя (которые мне в своё время тоже очень рекомендовали).

⬜️ System Design. Подготовка к сложному интервью

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

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

🟨 System Design. Машинное обучение. Подготовка к сложному интервью

После базовой базы описанной в первой книге можно уже спокойно браться за вторую книгу, которая уже непосредственно про ML рассказывает, хотя наверно будет правильнее сказать MLOps, так как в больше степени там говорится про то какие ИИ-решения бывают, как выбрать наиболее подходящее под задачу, как выполнять оценку, какие типовые решения бывают.

И конечно же масса ссылок на дополнительную документацию, которую тоже очень интересно читать.

PS. И пусть вас не пугает то что книги называются подготовка к сложному интервью, информация изложена в них простым и понятным языком, поэтому даже без глубоких познаний в той или иной теме можно относительно быстро разобраться.
Forwarded from Neural Kovalskii
Я ставлю крест на RAG: почему поиск по базе — это теперь задача для джуна, а будущее — за Generic Agent

Байт засчитан =)

Капля истории
Мы с вами начали с фундамента AI-инфраструктуры тестировали Llama на кластерах 4090, показывал вам тюн Whisper и считали экономику on-premise решений
Затем углубились в сложный RAG и Vibe Coding: заняли топ с малыми моделями в Enterprise RAG Challenge изучили Circuit Tracing для поиска галлюцинаций и научились собирать MVP за 7 дней
В середине 2025 перешли к автономным системам: запустили open-source SGR Deep Research доказали эффективность на бенчмарках и выпустили фреймворк SGR Agent Core


Честно говоря к концу 2025 года стало очевидно что RAG превратился в стандартную инженерную задачу которую может собрать джун по туториалам

Настоящий вызов сместился к агентам
И вот тут начинается самое интересное потому что большинство того что называют агентами на рынке это просто красивые цепочки в no-code конструкторах Workflow где вы заранее продумали каждый if-else
Это не агенты это детерминированные пайплайны с LLM внутри

Я потратил последние месяцы на то чтобы понять как строить настоящие автономные системы (Запускал демо ERC3, строил решения для демо в agentic comerce)
Результат всей моей работы оказался тут sgr-agent-core фреймворк уже набрал 815 звезд на GitHub и работает в продакшене у реальных клиентов
Но главное не звезды а то понимание физики процесса которое я получил, и это так же ответ зачем было его делать

Generic Agent = Based Prompt + ReAct+PlanAct + Context Engineering + Memory + Tool Search

Это не просто формула это средя для автономности Based Prompt задает законы физики для модели как она должна думать планировать реагировать на ошибки

ReAct это безальтернативный цикл без которого автономности не существует модель должна рассуждать действовать анализировать результат и корректировать план

Context Engineering потому что контекст не резиновый и агент должен уметь управлять своим вниманием сжимать историю отбрасывать неактуальное держать фокус

Memory это не просто кэш это архитектурное решение о том что помнить что забывать когда делать compaction

Tool Search критически важный компонент для энтерпрайза когда у вас 500 плюс API-ручек вы не можете скормить их все в контекст настоящий агент сначала понимает задачу находит нужный инструмент в репозитории и только потом использует

В ближайшие дни у меня будет несколько площадок где я буду давать очень скромный прогноз без хайпа обещаю

Очень хочу показать что курсы по AI-агентам дают вам базу с langchain или n8n и обещают что теперь вы зарабатываете 300к в наносекунду но они не расскажут про управление форматом и структурами внутри tools про constraint и args про то как на самом деле работает structured output (пришлите в коменты если такой курс есть) как управлять ризонингом в агентах и как его вызывать самому (наш тул reasoning+plan)

Must Read от создателей LLM

Перед тем как что-то изобретать и задавать вопросы прочитайте что говорят те кто делает сами модели

OpenAI A Practical Guide to Building Agents

OpenAI Building Agents Track

Anthropic Building Effective Agents

Anthropic Context Engineering

Anthropic Building Agents with Claude Agent SDK

Все они говорят +- одно начинайте с простого не тащите сразу LangGraph на 20 нод сделайте одного агента с одним инструментом заставьте работать потом масштабируйте

Я строю агентов на локальных моделях и как оказалось что бы строить generic agent нужно мощное железо 🗿
Это не потому что я против OpenAI это потому что я хочу полный контроль над инференсом над латенси над стоимостью
Когда ты делаешь продакшен на локальных моделях ты понимаешь каждый байт контекста каждый вызов инструмента каждую миллисекунду задержки
Это сделать тебя лучшим инженером над API вызовами

По этому далее будет усиление на контент именно про них, про агентов, и про sgr-agent-core будем выводить фреймворк на 10к звезд!
Если ты со мной ставь 🖥 Linux =)


Stay tuned!
Please open Telegram to view this post
VIEW IN TELEGRAM
Один вопрос, чтобы понять, подходит ли кандидат под вакансию 🤔

И это вопрос ⬇️
🔊 От кого и в каком виде вы получали задачи?


Его задают, чтобы понять:

🔴как были выстроены процессы в компаниях, где кандидат работал?
🔴имеет ли кандидат опыт работы в режиме повышенной опасности многозадачности?
🔴работал ли он с нечеткими требованиями?
🔴насколько самостоятельной единицей был этот аналитик? или всё ОТ и ДО курировал его техлид?

Ответы варьируются от вот такого травоядного варианта 🐇🍃

Всего на проекте 3 системных аналитика, 1 бизнес-аналитик и техлид аналитиков. Задачи приходят от техлида в виде jira-тикетов с верхнеуровневым описанием, ссылками на макеты в Figma и с бизнес-требованиями от бизнес-аналитика. Уже готовую документацию СА скидывает на ревью своему техлиду.


До такого хищного и зубастого🐯🥩

На проекте я был единственным аналитиком. Бизнес-аналитика или Product Owner как такового не было, и я общался с заказчиком напрямую. Задачи приходили ко мне в устной форме и были сформулированы довольно кратко. Я задавал уточняющие вопросы, протоколировал встречи и фиксировал бизнес требования в отдельном документе
, который никому кроме меня нахер не сдался.
Помимо этого, задачи поступали от техлида. Как правило, это были задачи, связанные с разбором ошибок на проде или техдолг по документации в базе знаний проекта. Какого-то общего планирования, на котором решался бы приоритет и очередность выполнения задач от бизнеса и от техлида не было, организация времени была только моей зоной ответственности. Практики обязательной проверки моих артефактом техлидом не было, я нес полную индивидуальную ответственность за результат.


И это два параллельных мира 👋👋

А теперь представьте, что на проект типа 2 приходит аналитик с опытом только на проектах типа 1. Как думаете, он готов к такому экстриму? Желает ли он этих острых ощущений?

Не, ну может и желает. Это просто надо было обсудить на собесе. А начать — с вопроса «От кого и в каком виде вы получали задачи?» 👌

🙃🙃🙃🙃🙃🙃🙃🙃🙃🙃
А как у вас?

❤️ - скорее вариант 1, всегда есть четкие требования
⁉️ - скорее вариант 2, у меня черный пояс по сбору требований, а вчера вообще звонили и приглашали работать в разведку
😎 - в активном поиске хоть какого-то варианта
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Dataism
База про работу с метриками.pdf
1001.5 KB
🌟NSM, пирамида и дерево метрик: три всадника продуктовой аналитики

Собрала вам базу по основным понятиям.
В pdf краткий конспект для ленивых энергосберегающих 🔋.
Кстати, тут pdf с диагностикой отрицательного роста.

Какие бывают метрики:
https://gopractice.ru/product/added_value_metrics/ - метрики продукта, роста, эффективности и добавочной ценности
https://amplitude.com/books/north-star/the-north-star-checklist - North Star Metric чек-лист

➡️Иерархия метрик:
https://www.youtube.com/watch?v=DgvUq4D0IUQ - лекция ШМЯ
https://www.youtube.com/watch?v=xh0GTIkYhOw - Денис Теплов из Лиги Ставок про фейлы с NSM. Очень классное выступление!
https://www.youtube.com/watch?v=0KColE4-MdY&t - Глеб Кудрявцев онлайн без регистрации и смс строит дерево метрик
https://library.wannabe.ru/article/kak-postroit-ierarhiyu-metrik-i-ispolzovat-ee-v-rabote

🔼Пирамида метрик:
больше материала найдете в канале Лены Серегиной
https://www.youtube.com/watch?v=7wTO1GonUj4&t=53s - краткое пояснение за разницу между иерархией и пирамидой
https://master-strategy.ru/tpost/nrpt840r71-kak-sdelat-put-razvitiya-kompanii-produk
https://www.agima.ru/blog/analytics/piramida-metrik-pozhaluy-luchshiy-sposob-ponyat-chto-ne-tak-s-vashim-produktom/ - пирамида метрик как способ понять, что не так с продуктом
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from max.sh
📱 канал AI Engineer

В посте выше я ссылался на доклад с AIE митапа. Так вот, у них есть болшой YT канал с очень годным контентом от передовых лаб и AI стартапов.

Канал тут.

Выступления все в среднем по 20 минут и крайне прикладные. Тут вы никогда не увидите формул, глубоких деталей методов или какие-то строгие специфичные eval-ы. Но можно зацепить много идей, посмотреть что делают в индустрии, набраться ключевых слов и ссылок и потом пойти копать дальше.

Большой дисклеймер: Да, крутого контента много, но еще больше бесполезного маркетингового мусора, которое слово в слово дублирует какой-нибудь релиз. Благо, видео короткие, можно быстро отсеять.

Мне, например, очень понравились доклады про разный RL, многие совсем свежие:

1. OpenAI про Agent RL, во второй части доклада рассказывают про пилоты с реальными кастомерами
2. Про эффективный RL, где боттленеки обучения, где простаивают GPU
3. про обучение своих агентов с помощью RL, вот тут вообще кайфовый case study от сбора данных до reward-hacking-ов

Happy Learning!


кстати, митапы проходят не только в SF, но и в других локациях. В этом году состоялся первый в Париже и несколько прошло в Лондоне. Здесь все скромнее по масштабу, но все равно очень интересно. Запланировал выступить в следующем году на таком.

#образование
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from DeepSchool
ClearML Agent: обучение модели в Google Colab

Продолжаем обзор MLOps-экосистемы ClearML, которая покрывает полный цикл разработки и выкатки ML-моделей. Ранее мы разобрали, как работают компоненты ClearML Data и ClearML Session.
А в новой статье рассказали о ClearML Agent — компоненте, который позволяет отправлять задачи в очередь и исполнять их на удалённых машинах. 📡

Из статьи вы узнаете:
- как работает ClearML Agent
- как использовать Google Colab в качестве воркера для ClearML 🍯
- и как можно добавлять задачи в очередь для ClearML Agent

Читайте новую статью по ссылке!👈

🪔 DeepSchool
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Agentic World
На днях OpenAI опубликовали в своем блоге небольшую статью с достаточно громким названием «How evals drive the next chapter in AI for businesses». Я сделал ее перевод, чуть адаптировав для лучшей читабельности, потому что в прямом переводе получался сложночитаемый булшит.

Если вы знаете, что такое бейзлайн и как делаются бенчмарки, то можно не читать, но в целом как легкое напоминание о важности постоянной оценки шагов выполнения LLM-based штук — вполне ничего 🤗

https://habr.com/ru/articles/969358/