Forwarded from max.sh
На неделе выступил на Google Developer Group (GDG) митапе c рассказом про Gemini CLI.
Gemini CLI – это ответ гугла на Claude Code. Только все исходники в опенсоурсе.
В течение нескольких недель пытался пользоваться именно этим агентом, чтобы потом поделиться ощущениями с другими разработчиками. На митапе было несколько разработчиков из команды гугла, ждали именно такого фидбэка. рад стараться 🫡
TL;DR: у проекта точно есть потенциал, особенно за счет интересных фич. Лицензия хорошая, Apache 2.0, и хорошо подходит тем, кто делает своих агентов: всё можно переделать под себя, кодовая база не очень сложная. Так как проект в ранней фазе, дают 500 кредитов в день на бесплатное использование. Но это меньше, чем кажется, учитывая, как порой тупит агент и как приходится перезапускать сессии, кредиты сгорают быстро. Для ежедневного использования не рекомендую, слишком сыро.
Выжимка с доклада и общие впечатления такие:
• Gemini CLI стал официально доступен ещё в июле. И тогда им было просто невозможно пользоваться: CLI банально зависал и крашился на любом сценарии.
• На сегодняшний момент вопросы со стабильностью всё ещё не решены, но продуктом можно пользоваться. По эргономике он всё ближе и ближе к Claude Code, который авторы, очевидно, берут за референс.
• Полезность агента во многом измеряется качеством ллм, которая оркестрирует его действия. Как несложно догадаться, в агенте от гугла доступны только модели Gemini, конкретно Pro 2.5 и Flash. Последняя абсолютно бесполезная, и любую задачу приходится править по 2–3 раза. Pro-вариант заметно лучше и может генерировать адекватный рабочий код one-shot-ом. К качеству есть вопросы, но это ко всем агентам относится.
• Отдельно хочется упомянуть веб-разработку. Мне нравится делать тесты на парах вида: (картинка с референсным стилем фронтенда, промпт с конкретной инструкцией как нужно организовать веб страницу). Получается style-transfer задача, где нужно и придерживаться инструкции, и учитывать стиль. Вот тут Гемини просто ломается и не способен адекватно копировать стиль. Самый лучший в моих экспериментах это Codex: буквально в one-shot режиме выдаёт красивые визуалы и придерживается инструкции. Claude Code где-то посередине, тоже не очень круто.
• Так как модель не самая крутая, авторы делают фокус на профессиональных разработчиках и добавляют в начинку фичи, которые повышают производительность. Чтобы вообще не нужно было переключаться между вкладками и проводить всё время в окне с Гемини. Из полезного:
- Можно запускать агента в --sandbox режиме, когда он исполняется в отдельном докер-контейнере без возможности испортить локальные файлы.
-Можно переходить в shell mode, чтобы исполнять терминальные команды.
- Есть опция делать snapshot-ы, чтобы откатывать историю изменений прямо в агенте без явного использования гит-команд.
- Отдельно уделили внимание командам для работы с памятью: можно сжимать контекст, подгружать новые инструкции на лету, не правя GEMINI.md.
- Все эти продвинутые фичи в разной степени забагованности и работают не всегда интуитивно. А ещё некоторые выпиливаются между релизами 😄
- Тот факт, что агент опенсорсный, позволяет заглянуть в архитектурные решения и подсмотреть детали. Монорепа состоит из двух независимых частей: CLI UI для интерфейса и Core/ для tools, логики агента и API к Gemini. В целом добавлять свои built-in инструменты несложно, и можно переписать system prompt под себя. Поэтому, если вы разрабатываете своего агента, это может быть хорошим стартом.
Gemini CLI – это ответ гугла на Claude Code. Только все исходники в опенсоурсе.
В течение нескольких недель пытался пользоваться именно этим агентом, чтобы потом поделиться ощущениями с другими разработчиками. На митапе было несколько разработчиков из команды гугла, ждали именно такого фидбэка. рад стараться 🫡
TL;DR: у проекта точно есть потенциал, особенно за счет интересных фич. Лицензия хорошая, Apache 2.0, и хорошо подходит тем, кто делает своих агентов: всё можно переделать под себя, кодовая база не очень сложная. Так как проект в ранней фазе, дают 500 кредитов в день на бесплатное использование. Но это меньше, чем кажется, учитывая, как порой тупит агент и как приходится перезапускать сессии, кредиты сгорают быстро. Для ежедневного использования не рекомендую, слишком сыро.
Выжимка с доклада и общие впечатления такие:
• Gemini CLI стал официально доступен ещё в июле. И тогда им было просто невозможно пользоваться: CLI банально зависал и крашился на любом сценарии.
• На сегодняшний момент вопросы со стабильностью всё ещё не решены, но продуктом можно пользоваться. По эргономике он всё ближе и ближе к Claude Code, который авторы, очевидно, берут за референс.
• Полезность агента во многом измеряется качеством ллм, которая оркестрирует его действия. Как несложно догадаться, в агенте от гугла доступны только модели Gemini, конкретно Pro 2.5 и Flash. Последняя абсолютно бесполезная, и любую задачу приходится править по 2–3 раза. Pro-вариант заметно лучше и может генерировать адекватный рабочий код one-shot-ом. К качеству есть вопросы, но это ко всем агентам относится.
• Отдельно хочется упомянуть веб-разработку. Мне нравится делать тесты на парах вида: (картинка с референсным стилем фронтенда, промпт с конкретной инструкцией как нужно организовать веб страницу). Получается style-transfer задача, где нужно и придерживаться инструкции, и учитывать стиль. Вот тут Гемини просто ломается и не способен адекватно копировать стиль. Самый лучший в моих экспериментах это Codex: буквально в one-shot режиме выдаёт красивые визуалы и придерживается инструкции. Claude Code где-то посередине, тоже не очень круто.
• Так как модель не самая крутая, авторы делают фокус на профессиональных разработчиках и добавляют в начинку фичи, которые повышают производительность. Чтобы вообще не нужно было переключаться между вкладками и проводить всё время в окне с Гемини. Из полезного:
- Можно запускать агента в --sandbox режиме, когда он исполняется в отдельном докер-контейнере без возможности испортить локальные файлы.
-Можно переходить в shell mode, чтобы исполнять терминальные команды.
- Есть опция делать snapshot-ы, чтобы откатывать историю изменений прямо в агенте без явного использования гит-команд.
- Отдельно уделили внимание командам для работы с памятью: можно сжимать контекст, подгружать новые инструкции на лету, не правя GEMINI.md.
- Все эти продвинутые фичи в разной степени забагованности и работают не всегда интуитивно. А ещё некоторые выпиливаются между релизами 😄
- Тот факт, что агент опенсорсный, позволяет заглянуть в архитектурные решения и подсмотреть детали. Монорепа состоит из двух независимых частей: CLI UI для интерфейса и Core/ для tools, логики агента и API к Gemini. В целом добавлять свои built-in инструменты несложно, и можно переписать system prompt под себя. Поэтому, если вы разрабатываете своего агента, это может быть хорошим стартом.
Forwarded from Заскуль питона (Data Science)
В этой статье
Для решения простых задач используется аналитика (быстрая выгрузка, метрика в срезе и др.). Конечно, большую часть данных можно получить из имеющейся отчетности, но что, если нужно ответ узнать сразу? Вместо того, чтобы лезть по сотням дашбордов, где периодически данные могут не биться (так как сборка осуществляется по-разному).
Пишете в бота: «Средний чек Москва, 2025 vs 2024, динамика в%» → Через 15 секунд получаете точный ответ с трендом.
1. Запрос пользователя, промпт с описанием таблицы
2. Text2SQL (LLM)
3. Определение типа визуализации.
4. Бекенд -> БД (забрать данные)
5. Чат
Я начал потихоньку реализовывать эту логику на имеющихся витринах, но столкнулся с тем, что периодически модель может галлюцинировать (как это указано в статье, выдавая несуществующие колонки), ну и возникают дополнительные сложности, о которых ниже.
Наша цель — не просто построить вопросно-ответную систему, а создать полноценного ассистента, который учитывает контекст и историю диалога. Например, если после первого запроса пользователь пишет: «А сгруппируй не по кластерам, а по магазинам», нам необходимо объединить предыдущие сообщения с новым уточнением. Для этого мы получаем историю из backend, определяем, является ли текущий запрос продолжением, и, если да — формируем краткое суммарное описание диалога. В противном случае передаём исходный запрос без изменений.
1. Написать логику сборки метрик
2. Учитывать контекст предыдущих сообщений
3. Обработка естественного языка и неоднозначных формулировок
4. Борьба с галлюцинациями
5. Оптимизация скорости и ресурсов
6. Работа с большими схемами данных
7. Интерпретация результата
8. Валидация качества работы модели. В качестве метрики использовали (LLM + EX) / 2 для сравнения нескольких моделей.
Метрика рассчитывается через попарное сравнение отсортированных колонок. У этого подхода есть ограничения: если, например, модель вывела долю вместо процента — получим False Negative. Если пользователь сформулировал общий запрос, допускающий несколько корректных SQL-вариантов, то результат также будет считаться ошибкой.
LLM. Совпадает ли сгенерированный SQL с эталонным по логике запроса.
EX (Execution Accuracy). Совпадает ли результат выполнения запроса (таблица/агрегация) с заранее написанным ответом.
DeepSeek R1 (0.765) — лидер по совокупному качеству: наиболее точные и осмысленные SQL-запросы.
Qwen 2.5-72B (0.425) — уверенное второе место, компромисс между качеством и ресурсами.
SQLCoder-8B (0.185) — слабый результат: частые галлюцинации и ошибки исполнения.
В итоге команда X5 остановилась на Qwen 2.5-72B.
1. Поддержка нескольких таблиц
2. Поддержка запросов с джойнами
3. Внедрение классификации запросов пользователей по сложности
4. Дообучение собственной модели
5. Замена LLM на более лёгкие модели
6. Работа с произвольными Excel-файлами
7. Schema-linking на основе RAG’a
Также, при выборе модели, подходящей под использование на том или ином шаге мы учитываем сложность задачи - например, для перевода технических названий колонок на русский язык с учетом контекста запроса мы выбрали использование более легковесной модели: Qwen3-4B, чтобы ускорить работу системы. Для сложных этапов как, например, генерация SQL, мы используем модели побольше.
Кайф, когда такие вещи реально разгружают аналитику от рутины и освобождают время на исследования и развитие продукта
Ставьте
@zasql_python
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Заскуль питона (Data Science)
🆎 ЦПТ, скосы распределений, логарифмирование
В Google Colab приложил симуляции, которые показывают, как интуитивно работают методы + прикрепил разбор статьи с описанием работы различных методов, сходимости и прочее.
🔗 👉 Ссылочка тут
+ за выходные ознакомился с парочкой статей, которые описывают то, как работать с тяжелыми хвостами.
Если наберется много🐳 , разберу подробней парочку из них. Где-то планируется завышать значение t-критическое, где-то отсекать хвосты и моделировать их через определенный алгоритм, а где-то их обрезать, например, как тут выкинуть топ n% выбросов, ну и существуют методы, когда заменяют выбросы значением квантилей.
В общем, кажется, идеального решения нет и всё зависит от:
1. формы распределения (логнормальное, экспоненциальное, скошенное)
2. доли активных пользователей
3. цели теста (чувствительность vs устойчивость).
🐍 Дополнительно дублирую ссылочку на Google Colab
🐸 @zasql_python
В Google Colab приложил симуляции, которые показывают, как интуитивно работают методы + прикрепил разбор статьи с описанием работы различных методов, сходимости и прочее.
+ за выходные ознакомился с парочкой статей, которые описывают то, как работать с тяжелыми хвостами.
Если наберется много
В общем, кажется, идеального решения нет и всё зависит от:
1. формы распределения (логнормальное, экспоненциальное, скошенное)
2. доли активных пользователей
3. цели теста (чувствительность vs устойчивость).
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Тимлид Очевидность | Евгений Антонов
Я принес. Общение с социопатом: руководство по выживанию
Сегодня вам принес заплюсованную хабрастатью https://habr.com/ru/articles/937746/
В чем-то напоминает часть книги Гоулстона «Как разговаривать с мудаками». После первого прочтения я её не оценил и даже покритиковал. А потом спустя лет 7-10 вернулся к ней еще раз с уже поднакопившимся жизненным опытом и совсем иначе взглянул на неё 🙂
Если коротко, то суть статьи в том, чтобы понять и принять, что на работе и в бытовой жизни нам могут попадаться социопаты, которые вроде бы ведут себя как все окружающие и кажется, что хотят добра и эффективности. А в какой-то момент вы начинаете понимать, что вы делаете не то, что должны и хотели бы, а то, о чем с вами эти люди «договорились».
Договорились разными манипуляциями, обманом, давлением, газлайтингом, принижением, обещанием великого успеха вам, а потом он оказался у них в активе. Или вчера с вами человек разговаривал очень вежливо и уважительно, когда был у вас в подчинении. Завтра уже стал панибратски, когда стал вровень по иерархии. А послезавтра через губу и с нажимом, когда стал вашим руководителем.
Дальше в статье приводятся вполне разумные советы о том, как надо себя вести, какой вокруг себя забор построить, как сохранять диалог в рамках профессионализма, не давая себя затянуть в болото демагогии, где социопат уже набил руку.
Если совсем упрощать, то нужно иметь сильную позицию. Сильная позиция в том, что у вас есть план и вы его придерживаетесь, собственное аргументированное мнение и вы готовы рационально обсуждать, но не поддаваться на манипуляции и давление. И сильная позиция в том, что у вас есть или группа поддержки, или разные возможности в жизни (карьерные и финансовые, например), которые позволят сказать «ну уж нет, так со мной нельзя».
Недавно имел с друзьями разговор про буллинг (а сегодняшняя тема в некотором смысле похожа на буллинг) и что в его случае делать. Есть ряд социально одобряемых ответов типа мема «стоп! мне неприятно!», или «попробуй эскалировать наверх», или «не обращай внимания», или «забей и не связывайся». Они в некоторых случаях работают, но нередко всё это разбивается о то, что эскалировать особо некому, потому что рука руку моет (я попадал в такую ситуацию), или слова с рациональными доводами так и повисают в воздухе.
Не хочется советовать что-то плохое и обостряющее, но чем дольше живу и попадаю в разные ситуации, тем больше вижу примеров, что «буллят» тех, кто молча и покорно это принимает, тем самым поощряя и дальше такое поведение. Те, кто «дает сдачи», обычно сначала немного страдают от этой борьбы, но потом «задиры» предпочитают обходить их стороной и лишний раз не связываться, сконцентрировавшись на молчунах.
Приходилось ли вам сталкиваться с социопатами на работе и в быту? Как вы выходили из сложных ситуаций? Как отстаивали свою позицию?
Сегодня вам принес заплюсованную хабрастатью https://habr.com/ru/articles/937746/
В чем-то напоминает часть книги Гоулстона «Как разговаривать с мудаками». После первого прочтения я её не оценил и даже покритиковал. А потом спустя лет 7-10 вернулся к ней еще раз с уже поднакопившимся жизненным опытом и совсем иначе взглянул на неё 🙂
Если коротко, то суть статьи в том, чтобы понять и принять, что на работе и в бытовой жизни нам могут попадаться социопаты, которые вроде бы ведут себя как все окружающие и кажется, что хотят добра и эффективности. А в какой-то момент вы начинаете понимать, что вы делаете не то, что должны и хотели бы, а то, о чем с вами эти люди «договорились».
Договорились разными манипуляциями, обманом, давлением, газлайтингом, принижением, обещанием великого успеха вам, а потом он оказался у них в активе. Или вчера с вами человек разговаривал очень вежливо и уважительно, когда был у вас в подчинении. Завтра уже стал панибратски, когда стал вровень по иерархии. А послезавтра через губу и с нажимом, когда стал вашим руководителем.
Дальше в статье приводятся вполне разумные советы о том, как надо себя вести, какой вокруг себя забор построить, как сохранять диалог в рамках профессионализма, не давая себя затянуть в болото демагогии, где социопат уже набил руку.
Если совсем упрощать, то нужно иметь сильную позицию. Сильная позиция в том, что у вас есть план и вы его придерживаетесь, собственное аргументированное мнение и вы готовы рационально обсуждать, но не поддаваться на манипуляции и давление. И сильная позиция в том, что у вас есть или группа поддержки, или разные возможности в жизни (карьерные и финансовые, например), которые позволят сказать «ну уж нет, так со мной нельзя».
Недавно имел с друзьями разговор про буллинг (а сегодняшняя тема в некотором смысле похожа на буллинг) и что в его случае делать. Есть ряд социально одобряемых ответов типа мема «стоп! мне неприятно!», или «попробуй эскалировать наверх», или «не обращай внимания», или «забей и не связывайся». Они в некоторых случаях работают, но нередко всё это разбивается о то, что эскалировать особо некому, потому что рука руку моет (я попадал в такую ситуацию), или слова с рациональными доводами так и повисают в воздухе.
Не хочется советовать что-то плохое и обостряющее, но чем дольше живу и попадаю в разные ситуации, тем больше вижу примеров, что «буллят» тех, кто молча и покорно это принимает, тем самым поощряя и дальше такое поведение. Те, кто «дает сдачи», обычно сначала немного страдают от этой борьбы, но потом «задиры» предпочитают обходить их стороной и лишний раз не связываться, сконцентрировавшись на молчунах.
Приходилось ли вам сталкиваться с социопатами на работе и в быту? Как вы выходили из сложных ситуаций? Как отстаивали свою позицию?
Хабр
Общение с социопатом: руководство по выживанию
За годы профессионального пути мне довелось побывать в самых разных ролях: от рядового сотрудника до руководителя, от наставника до консультанта. Я работал и в государственных учреждениях, и в частных...
Forwarded from Мальцев: Карьера с AI
Как писать промпты с появлением GPT-5. Ищем универсальный шаблон для ChatGPT, Алисы, DeepSeek и других нейросетей в 2025.
Что нового в GPT-5 и как с этим работать?
В https://cookbook.openai.com описано, что у модели появились два ключевых параметра, которыми можно управлять прямо в промпте и назначать как всей задаче, так и ее частям (если нужно глубже продумать и расписать конкретный подвопрос):
1️⃣ reasoning_effort (усилие для размышления): Насколько глубоко нейросеть должна «задуматься».
🔴 Minimal: Для простых и быстрых задач.
🔴 Medium: Сбалансированный подход (стоит по умолчанию).
🔴 High: Для сложных проблем, требующих глубокого анализа.
2️⃣ verbosity (подробность ответа): Насколько развёрнутым будет ответ.
🔴 Low: Кратко и по делу.
🔴 Medium: Сбалансированное объяснение.
🔴 High: Максимально детальный ответ с примерами.
Забирайте шаблон универсального промпта по новой методологии P.R.O.M.P.T. для GPT-5
К промпту есть 3 дополнения:
❇️ С появлением GPT-5 можно не тратить токены на запрос «покажи всю цепочку рассуждений». Это ускоряет ответ и снижает «водность», сохраняя качество.
❇️ У OpenAI появился крутой инструмент для отладки промптов: https://platform.openai.com/chat/edit?models=gpt-5. В нём можно довести до ума любой шаблон.
❇️ Я сделал библиотеку в десятки промптов по этому шаблону для разных рабочих и учебных задач на все случаи жизни — бесплатно забрать ее можно в моем боте.
❤️ и 👍 - если разбор и новый шаблон были полезны, в следующий раз подробно разберем чат с Алисой и ее модели.
💬 - поделитесь в комментах как вам первые тесты GPT-5 и работа с новым промптом. Ваш фидбэк поможет мне сделать обновление статьи на vc.ru максимально полезным!
Мальцев: Карьера. Маркетинг. AI | Бот с контентом для подписчиков
В начале 2025 я писал статью про “Универсальный промпт для нейросетей” для VC, лонгрид собрал сотни репостов и остается в топе популярных раздела AI. Но за полгода многое поменялось и пора разобраться c обновлениями GPT-5, Алисы, других нейросетей.
Начнем с шаблона под пятерку, пример промпта для которой я добавил к этому посту.
Что нового в GPT-5 и как с этим работать?
В https://cookbook.openai.com описано, что у модели появились два ключевых параметра, которыми можно управлять прямо в промпте и назначать как всей задаче, так и ее частям (если нужно глубже продумать и расписать конкретный подвопрос):
Забирайте шаблон универсального промпта по новой методологии P.R.O.M.P.T. для GPT-5
P — PURPOSE (Цель)
Мне нужно, чтобы ты [сформулируйте, что нужно сделать. Используйте глаголы действия и укажите, что является конечным результатом...]. Нужный уровень «reasoning_effort»: [выбрать из Minimal — для рутины, Medium — стандартные задачи, High — сложные кейсы/исследование].
R — ROLE (Роль)
Ты — [Кто?] и работаешь с [ключевые навыки/знания/ограничения по методам работы...].
O — ORDER OF ACTION (Порядок действий)
Перед ответом на мою задачу создай план из трех шагов: 1) исследование, 2) черновик ответа, 3) анализ и улучшение ответа. Делай шаги последовательно. Если тебе не хватает вводных от меня для качественного ответа, то задай мне не более трех вопросов для уточнения перед шагом 2 «Написание черновика». Предоставь краткий контрольный список «Готово», подтверждающий результаты каждого шага. Продолжай, пока план не будет полностью выполнен.
M — MOULD THE FORMAT (Формат)
Дай ответ в виде [Опишите желаемый формат результата. Укажите тип, структуру, элементы.].
P — PERSONALITY (Личность)
Нужный уровень «Verbosity»: [Выбрать из Low — кратко и по делу, Medium — сбалансированное объяснение, High — максимально детальный ответ с примерами.].
T — TIGHT CONTROLS (Жёсткий контроль)
[Тут по желанию ограничьте действия для экономии токенов или, наоборот, требуйте настойчивости, которая потратит весь лимит.].
К промпту есть 3 дополнения:
❤️ и 👍 - если разбор и новый шаблон были полезны, в следующий раз подробно разберем чат с Алисой и ее модели.
Мальцев: Карьера. Маркетинг. AI | Бот с контентом для подписчиков
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from .ml
Polars в продакшене: best practices
Когда нужно готовить фичи и витрины «здесь-и-сейчас», pandas-пайплайн часто даёт лишние задержки. Разберёмся, как построить на Polars быстрый и устойчивый конвейер для ETL и ML.
Чтобы что?
📌 Меньше TCO на ETL. За счёт pushdown и параллельности вы читаете меньше данных, тратите меньше CPU и памяти. На том же кластере — больше задач и стабильнее SLA.
📌 Быстрые фичи для моделей. Окна, джоины и агрегации считаются в Polars, а в модель уходят уже компактные матрицы/тензоры — время обучения и инференса сокращается.
📌 Порог входа ниже. С SQLContext команда может начать с SQL и постепенно переходить к выражениям, не теряя производительности.
Базовый набор шагов
📝 Начинайте со scan_* и Lazy. Схема простая: scan_parquet/csv → select/filter/with_columns → финальный collect(). Ранний select() экономит I/O.
📝 Для отладки используйте fetch(), он подходит для быстрых «прогонов» на маленьком сэмпле.
📝 Настройте джоины. Для джойнов по времени — join_asof, сортировка фреймов по ключам, для строковых ключей используйте тип Categorical и включённый StringCache, чтобы джоины были и быстрее, и стабильнее по памяти.
📝 Создавайте новые фичи выражениями. Конструируйте логику через when/then/otherwise, pl.struct, селекторы pl.selectors — это заменяет циклы и apply, оставляя работу на стороне внутреннего оптимизированного движка polars.
📝 Подружите свой пайплайн с ML-стеком. NumPy/torch/sklearn: df.to_numpy()/s.to_numpy() → torch.from_numpy() — минимум копий между слоями. Pandas-мир: to_pandas(use_pyarrow_extension_array=True) включает Arrow-бэкенд и помогает экономить память за счет zero-copy операций.
📝 Включайте streaming там, где длинные пайплайны. collect(engine="streaming") и sink_* уменьшают пиковую память и сглаживают латентность. sink_* позволяет обрабатывать и записывать данные на диск батчами, чтобы не перегружать RAM.
📝 Где уместно — SQL. Регистрируйте фреймы в SQLContext, пишите запросы на SQL, а узкие места постепенно переносите на выражения. Данная практика хороша для быстрого переезда на polars в командах, которые плохо знакомы с синтаксисом polars, но разбираются в SQL-выражениях.
Анти-паттерны в продакшене
Кейс Точка Банк
📝 Контекст
Задача реал-тайм рекомендаций. Узкое место — джоины, фильтры и сортировки на горячем потоке данных.
📝 Что сделали
Перенесли препроцессинг с pandas на Polars, переписали джоины в lazy-план, навели порядок в типах (категориальные ключи + общий словарь) и добавили join_asof для временных связок.
📝 Результат
Пайплайн стал выполняться примерно в 5 раз быстрее end-to-end на том же железе — основной прирост дали «проталкивание» фильтров и параллельные джоины.
Получается, что если собирать пайплайн с учетом всех лучших практик работы с polars — lazy, pushdown, выражения, аккуратные джоины и понятные мосты в ML — вы получаете устойчивый прирост скорости и контроля над ресурсами.
💜 Этот пост написал Всеволод Богодист, DS в Точка Банк
Когда нужно готовить фичи и витрины «здесь-и-сейчас», pandas-пайплайн часто даёт лишние задержки. Разберёмся, как построить на Polars быстрый и устойчивый конвейер для ETL и ML.
Чтобы что?
📌 Меньше TCO на ETL. За счёт pushdown и параллельности вы читаете меньше данных, тратите меньше CPU и памяти. На том же кластере — больше задач и стабильнее SLA.
📌 Быстрые фичи для моделей. Окна, джоины и агрегации считаются в Polars, а в модель уходят уже компактные матрицы/тензоры — время обучения и инференса сокращается.
📌 Порог входа ниже. С SQLContext команда может начать с SQL и постепенно переходить к выражениям, не теряя производительности.
Базовый набор шагов
📝 Начинайте со scan_* и Lazy. Схема простая: scan_parquet/csv → select/filter/with_columns → финальный collect(). Ранний select() экономит I/O.
📝 Для отладки используйте fetch(), он подходит для быстрых «прогонов» на маленьком сэмпле.
📝 Настройте джоины. Для джойнов по времени — join_asof, сортировка фреймов по ключам, для строковых ключей используйте тип Categorical и включённый StringCache, чтобы джоины были и быстрее, и стабильнее по памяти.
📝 Создавайте новые фичи выражениями. Конструируйте логику через when/then/otherwise, pl.struct, селекторы pl.selectors — это заменяет циклы и apply, оставляя работу на стороне внутреннего оптимизированного движка polars.
📝 Подружите свой пайплайн с ML-стеком. NumPy/torch/sklearn: df.to_numpy()/s.to_numpy() → torch.from_numpy() — минимум копий между слоями. Pandas-мир: to_pandas(use_pyarrow_extension_array=True) включает Arrow-бэкенд и помогает экономить память за счет zero-copy операций.
📝 Включайте streaming там, где длинные пайплайны. collect(engine="streaming") и sink_* уменьшают пиковую память и сглаживают латентность. sink_* позволяет обрабатывать и записывать данные на диск батчами, чтобы не перегружать RAM.
📝 Где уместно — SQL. Регистрируйте фреймы в SQLContext, пишите запросы на SQL, а узкие места постепенно переносите на выражения. Данная практика хороша для быстрого переезда на polars в командах, которые плохо знакомы с синтаксисом polars, но разбираются в SQL-выражениях.
Анти-паттерны в продакшене
📎 collect() после каждого шага. Так вы рвёте план и теряете оптимизации. Копите цепочку и собирайте один раз в конце.
📎 Маятник между pandas и Polars. Постоянные конвертации туда-сюда съедают выигрыш. Держите данные в Polars до последнего шага; если нужна совместимость, используйте Arrow-бэкенд.
📎 Игнорирование специфики типов. Оставлять ключи строками = призывать медленные джоины. Перекладывайте ключи в Categorical и включайте общий словарь.
Кейс Точка Банк
📝 Контекст
Задача реал-тайм рекомендаций. Узкое место — джоины, фильтры и сортировки на горячем потоке данных.
📝 Что сделали
Перенесли препроцессинг с pandas на Polars, переписали джоины в lazy-план, навели порядок в типах (категориальные ключи + общий словарь) и добавили join_asof для временных связок.
📝 Результат
Пайплайн стал выполняться примерно в 5 раз быстрее end-to-end на том же железе — основной прирост дали «проталкивание» фильтров и параллельные джоины.
Получается, что если собирать пайплайн с учетом всех лучших практик работы с polars — lazy, pushdown, выражения, аккуратные джоины и понятные мосты в ML — вы получаете устойчивый прирост скорости и контроля над ресурсами.
💜 Этот пост написал Всеволод Богодист, DS в Точка Банк
Forwarded from Заскуль питона (Data Science)
Классы в Python для аналитика (?)
Знаю, что многим аналитикам тема классов кажется ненужной — и это нормально.
Сам изучал ООП на своем направлении в магистратуре, очень много всего предстояло изучить... И про свойства, про то, как реализовать, жуть короче, хочется функциями пользовать и все (и то максимум)...
Но если присмотреться, мы сталкиваемся с ними каждый день, просто не задумываемся об этом.
Например, в pandas🐼 .
1️⃣ Класс: pandas.DataFrame, который задает структуру таблиц: колонки, индексы, методы
2️⃣ Объект: df = pd.DataFrame(...), может быть задан через чтение баз данных, csv, вручную и тд.
3️⃣ Методы: df.groupby(), df.query, df, etc.
Классы могут помочь, когда мы хотим выстроить определенную структуру и избежать хаоса в коде
🔽 Опишу самый простой пример 🔽
Класс User описывает пользователя продукта.
У него есть: атрибуты user_id, os, orders и метод is_active(),
который определяет, активен ли пользователь (есть ли у него заказы).
Я слышал, что на некоторых курсах по аналитике уже включают ООП. Например, в теме по 🆎.
Это логично: когда ты работаешь с десятками экспериментов, хочется выстроить для них единую структуру, чтобы каждый тест имел одинаковый формат, методы расчёта и итоговую инфу👀
💻 💻 Подход с классами не ограничивается тестами.
Необязательно использовать что-то сложное, например, на обучении я реализовывал классы для обращения к API / обработке ошибок / хранения информации на кошельке у юзера. Офк, это можно решить и с помощью SQL (про хранение данных), а у меня проект был без него💅
Его можно применять и в других задачах — например, в ML, где удобно базово описать модель под свои данные и потом переиспользовать или наследовать её в будущем.
✏️ Что можно почитать?
1.🔗 Ссылочка 1
2.🔗 Ссылочка 2
3.🔗 Ссылочка 3
Если интересен разбор с кейсами применения ООП, ставьте🐳 , пишите, использовали ли вы у себя?
@zasql_python
Знаю, что многим аналитикам тема классов кажется ненужной — и это нормально.
Сам изучал ООП на своем направлении в магистратуре, очень много всего предстояло изучить... И про свойства, про то, как реализовать, жуть короче, хочется функциями пользовать и все (и то максимум)...
Но если присмотреться, мы сталкиваемся с ними каждый день, просто не задумываемся об этом.
Например, в pandas
Классы могут помочь, когда мы хотим выстроить определенную структуру и избежать хаоса в коде
Класс User описывает пользователя продукта.
У него есть: атрибуты user_id, os, orders и метод is_active(),
который определяет, активен ли пользователь (есть ли у него заказы).
class User:
"""Класс, описывающий пользователя продукта."""
def __init__(self, user_id: int, os: str, orders: list[int]):
"""
Args:
user_id (int): Уникальный идентификатор пользователя.
os (str): Операционная система (например, 'iOS' или 'Android').
orders (list[int]): Список идентификаторов заказов пользователя.
"""
self.user_id = user_id
self.os = os
self.orders = orders
def is_active(self) -> bool:
"""Проверяет, есть ли у пользователя хотя бы один заказ."""
return len(self.orders) > 0
Я слышал, что на некоторых курсах по аналитике уже включают ООП. Например, в теме по 🆎.
Это логично: когда ты работаешь с десятками экспериментов, хочется выстроить для них единую структуру, чтобы каждый тест имел одинаковый формат, методы расчёта и итоговую инфу
class Experiment:
def __init__(self, name, control, test, metric_name):
self.name = name
self.control = control
self.test = test
self.metric_name = metric_name
def calc_mean(self, group):
return group[self.metric_name].mean()
def uplift(self):
return (self.calc_mean(self.test) - self.calc_mean(self.control)) / self.calc_mean(self.control)
def summary(self):
return {
"experiment": self.name,
"uplift": round(self.uplift() * 100, 2),
"control_mean": self.calc_mean(self.control),
"test_mean": self.calc_mean(self.test),
}
Но в крупных компаниях зачастую реализована своя A/B платформа, аналитику остается только делать дизайн эксперимента, подводить итоги и делать рекомендации...🧐
Необязательно использовать что-то сложное, например, на обучении я реализовывал классы для обращения к API / обработке ошибок / хранения информации на кошельке у юзера. Офк, это можно решить и с помощью SQL (про хранение данных), а у меня проект был без него
Его можно применять и в других задачах — например, в ML, где удобно базово описать модель под свои данные и потом переиспользовать или наследовать её в будущем.
class ConversionModel:
def fit(self, df):
...
def predict(self, new_data):
...
1.
2.
3.
Если интересен разбор с кейсами применения ООП, ставьте
@zasql_python
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Заметки LLM-энтузиаста
🚀 Полезные материалы по RAG/GitHub и новый поток курса по ИИ-прототипам и вайб-кодингу!
——————————————————————————
Чтобы не затерялось хотел бы поделиться ссылками на интерактивныe материалы по RAG (в дополнении к заметке) и GitHub-инструментам, которые готовил для разных мероприятий в этом году.
📚 Полезные материалы по RAG:
• https://dzhechko.github.io/yc-rag-lecture-intro/
• https://rag-sandbox-guide.pages.dev
🔧 GitHub инструменты:
• https://github-ecosystem-guide.pages.dev/
🔑 Коды доступа к продвинутому курсу:
`llmnotes2024`
`github-premium`
`advanced-course`
`telegram-llm`
💡 Как использовать код:
• Перейдите к разделу "Продвинутый курс"
• Введите код в поле "Введите код доступа"
• Нажмите "Проверить"
• Откроется доступ к курсу
——————————————————————————
И приглашаю всех желающих 29 октября (в эту среду) на пятый поток курса по "ИИ-прототипам и вайб-кодингу", где за 8 занятий мы будем копировать киллер-фичи успешных стартапов с оценкой свыше $1B! 💰
🎯 Что будем делать:
За 2 часа работы в Cursor/Lovable/Replit/Claude Code воссоздаем основные функции каждой компании-единорога
🦄 Список компаний для копирования:
1️⃣ MindTickle ($1.2B) - ИИ-тренажер для продавцов (делали в прошлом потоке)
2️⃣ Yuanfudao ($15.5B) - ИИ-репетитор
3️⃣ G2 ($1.1B) - Отзовик по B2B-SaaS-сервисам
4️⃣ OnlyFans ($8B) - Платный контент для взрослых
5️⃣ Outreach ($4.4B) - Поиск b2b-лидов и письма им
6️⃣ Whatnot ($5B) - Живые аукционы
7️⃣ BetterUp ($4.7B) - ИИ-коучинг и менторинг в компаниях
8️⃣ Guild ($4.4B) - Корпоративное обучение
9️⃣ DeepL ($2B) - Синхронный перевод
Теперь этим компаниям-единорогам стоит опасаться конкуренции! 😄
📈 Бонус: еще с десяток проектов из прошлых наборов будут доступны в записи!
📝Официальный анонс здесь
📝 Регистрация: https://productuniversity.ru/cursor
🎮 Интерактив: https://quest.productuniversity.ru/
(пройдя интерактив, вы получите ссылку на запись свежего видео-обзора лучших AI-инструментов для Vibe Coding'а)
Отличная возможность запустить свой стартап или внутренний проект! 🚀
@llm_notes
#rag #vibecoding #github #courses #startup
——————————————————————————
Чтобы не затерялось хотел бы поделиться ссылками на интерактивныe материалы по RAG (в дополнении к заметке) и GitHub-инструментам, которые готовил для разных мероприятий в этом году.
📚 Полезные материалы по RAG:
• https://dzhechko.github.io/yc-rag-lecture-intro/
• https://rag-sandbox-guide.pages.dev
🔧 GitHub инструменты:
• https://github-ecosystem-guide.pages.dev/
🔑 Коды доступа к продвинутому курсу:
`github-premium`
`advanced-course`
`telegram-llm`
💡 Как использовать код:
• Перейдите к разделу "Продвинутый курс"
• Введите код в поле "Введите код доступа"
• Нажмите "Проверить"
• Откроется доступ к курсу
——————————————————————————
И приглашаю всех желающих 29 октября (в эту среду) на пятый поток курса по "ИИ-прототипам и вайб-кодингу", где за 8 занятий мы будем копировать киллер-фичи успешных стартапов с оценкой свыше $1B! 💰
🎯 Что будем делать:
За 2 часа работы в Cursor/Lovable/Replit/Claude Code воссоздаем основные функции каждой компании-единорога
🦄 Список компаний для копирования:
1️⃣ MindTickle ($1.2B) - ИИ-тренажер для продавцов (делали в прошлом потоке)
2️⃣ Yuanfudao ($15.5B) - ИИ-репетитор
3️⃣ G2 ($1.1B) - Отзовик по B2B-SaaS-сервисам
4️⃣ OnlyFans ($8B) - Платный контент для взрослых
5️⃣ Outreach ($4.4B) - Поиск b2b-лидов и письма им
6️⃣ Whatnot ($5B) - Живые аукционы
7️⃣ BetterUp ($4.7B) - ИИ-коучинг и менторинг в компаниях
8️⃣ Guild ($4.4B) - Корпоративное обучение
9️⃣ DeepL ($2B) - Синхронный перевод
Теперь этим компаниям-единорогам стоит опасаться конкуренции! 😄
📈 Бонус: еще с десяток проектов из прошлых наборов будут доступны в записи!
📝Официальный анонс здесь
📝 Регистрация: https://productuniversity.ru/cursor
🎮 Интерактив: https://quest.productuniversity.ru/
(пройдя интерактив, вы получите ссылку на запись свежего видео-обзора лучших AI-инструментов для Vibe Coding'а)
Отличная возможность запустить свой стартап или внутренний проект! 🚀
@llm_notes
#rag #vibecoding #github #courses #startup
rag-sandbox-guide.pages.dev
RAG Семинар - Retrieval Augmented Generation
Изучите RAG с нуля: архитектура, векторный поиск, практические примеры с Yandex Foundation Models
Forwarded from Заметки LLM-энтузиаста
🤖 Microsoft выпустила Agent Lightning — фреймворк для обучения ИИ-агентов с помощью обучения с подкреплением
Многие ИИ-агенты отлично работают в демо, но проваливаются в реальных сценариях с многоэтапными задачами, приватными данными и незнакомыми инструментами. Промпт-инжиниринг не всегда надежен и имеет свои ограничения.
Microsoft представила Agent Lightning — открытый фреймворк, который обучает ИИ-агентов методом обучения с подкреплением практически без изменений в существующем коде.
Хотя, например, авторы Manus считают, что излишнее усложнение агентов путем дообучения моделей - это ловушка, которой следует избегать (см. интерактивный транскрипт из заметки)
🔧 Как это работает:
ИИ-агент работает в обычном режиме, а фреймворк перехватывает поток выполнения. Он фиксирует каждый вызов LLM, обращение к инструментам и сигналы вознаграждения в виде структурированных блоков данных, а затем передает эти данные в алгоритмы оптимизации, которые реально улучшают производительность агента.
⚡️ Основные возможности:
1️⃣ Простая интеграция — добавьте трейсер в существующий код агента и начните собирать данные для обучения. Система автоматически инструментирует вызовы LLM без переписывания под конкретные фреймворки
2️⃣ Множественные методы оптимизации — выбирайте между обучением с подкреплением с интеграцией VERL для файн-тюнинга модели или автоматической оптимизацией промптов
3️⃣ Независимая архитектура масштабирования — запускайте десятки воркеров на CPU-машинах, пока обучение происходит на GPU-кластерах
4️⃣ Мониторинг в продакшене — встроенное логирование отслеживает каждое решение агента, вызов LLM и сигнал вознаграждения через OpenTelemetry
🔗 Совместимость:
Работает с любыми фреймворками для ИИ-агентов: LangChain, OpenAI Agent SDK, AutoGen, CrewAI, Microsoft Agent Framework, или даже без фреймворка (чистый Python OpenAI).
📊 Преимущество RL над обучением с учителем:
Обучение с подкреплением требует только сигналы результата (задача решена/провалена), в то время как обучение с учителем требует детальных аннотаций для каждого шага каждой задачи, что крайне дорого для интерактивных сценариев.
🔬 Подробнее:
• GitHub: https://github.com/microsoft/agent-lightning
• Документация: https://microsoft.github.io/agent-lightning/latest/
• DeepWiki: https://deepwiki.com/microsoft/agent-lightning
@llm_notes
#reinforcement_learning #rl #agents #microsoft #machine_learning #ml #llm
Многие ИИ-агенты отлично работают в демо, но проваливаются в реальных сценариях с многоэтапными задачами, приватными данными и незнакомыми инструментами. Промпт-инжиниринг не всегда надежен и имеет свои ограничения.
Microsoft представила Agent Lightning — открытый фреймворк, который обучает ИИ-агентов методом обучения с подкреплением практически без изменений в существующем коде.
Хотя, например, авторы Manus считают, что излишнее усложнение агентов путем дообучения моделей - это ловушка, которой следует избегать (см. интерактивный транскрипт из заметки)
🔧 Как это работает:
ИИ-агент работает в обычном режиме, а фреймворк перехватывает поток выполнения. Он фиксирует каждый вызов LLM, обращение к инструментам и сигналы вознаграждения в виде структурированных блоков данных, а затем передает эти данные в алгоритмы оптимизации, которые реально улучшают производительность агента.
⚡️ Основные возможности:
1️⃣ Простая интеграция — добавьте трейсер в существующий код агента и начните собирать данные для обучения. Система автоматически инструментирует вызовы LLM без переписывания под конкретные фреймворки
2️⃣ Множественные методы оптимизации — выбирайте между обучением с подкреплением с интеграцией VERL для файн-тюнинга модели или автоматической оптимизацией промптов
3️⃣ Независимая архитектура масштабирования — запускайте десятки воркеров на CPU-машинах, пока обучение происходит на GPU-кластерах
4️⃣ Мониторинг в продакшене — встроенное логирование отслеживает каждое решение агента, вызов LLM и сигнал вознаграждения через OpenTelemetry
🔗 Совместимость:
Работает с любыми фреймворками для ИИ-агентов: LangChain, OpenAI Agent SDK, AutoGen, CrewAI, Microsoft Agent Framework, или даже без фреймворка (чистый Python OpenAI).
📊 Преимущество RL над обучением с учителем:
Обучение с подкреплением требует только сигналы результата (задача решена/провалена), в то время как обучение с учителем требует детальных аннотаций для каждого шага каждой задачи, что крайне дорого для интерактивных сценариев.
🔬 Подробнее:
• GitHub: https://github.com/microsoft/agent-lightning
• Документация: https://microsoft.github.io/agent-lightning/latest/
• DeepWiki: https://deepwiki.com/microsoft/agent-lightning
@llm_notes
#reinforcement_learning #rl #agents #microsoft #machine_learning #ml #llm
Forwarded from Заметки LLM-энтузиаста
🤖 LangChain запускает свой Agent Builder — конструктор ИИ-агентов без кода
LangChain представил LangSmith Agent Builder в закрытом превью — платформу для создания ИИ-агентов без необходимости писать код. Теперь создавать автономных агентов смогут не только разработчики.
Что отличает от конкурентов:
🔹 Это не визуальный конструктор workflow, а именно агент-билдер
🔹 Агенты принимают решения динамически, а не следуют заранее заданному пути
🔹 Встроенная система памяти — агент запоминает исправления и применяет их в будущем
Ключевые возможности:
1️⃣ Разговорная настройка — описываете задачу простым языком, система задает уточняющие вопросы и автоматически генерирует промпты
2️⃣ Адаптивная память — агенты обновляют свои инструкции на основе ваших корректировок без ручного редактирования
3️⃣ Интеграция с сервисами — подключение к Gmail, Slack, Linear, LinkedIn через OAuth и MCP
4️⃣ Agent Inbox — мониторинг всех потоков агентов с индикаторами статуса и уведомлениями
Архитектура агента включает:
• Промпт — логика и описание задач агента
• Инструменты — подключение к внешним сервисам через MCP
• Триггеры — автоматический запуск по событиям или расписанию
• Субагенты — разделение сложных задач на специализированные модули
Платформа подходит для внутренних задач: email-ассистенты, чат-боты, интеграция с Salesforce. Например, агент может ежедневно присылать сводку встреч или создавать задачи в Linear на основе писем.
В целом, все это можно сделать и в том же manus.im через интеграционную связку "отправка задания по email" в manus, внутри которого предварительно настроены нужные mcp-серверы.
Но если вы хотите влиять на архитектуру agent flow и в дальнейшем мониторить его состояние, то LangSmith Agent Builder подойдет лучше, чем универсальная система вроде manus.im.
Получается, LangSmith Agent Builder - это что-то вроде lovable/replit для построения мульти-агентной системы.
Кстати, вот еще один вариант системы такого плана, но которую можно потестировать и без private preview (я ее использовал в третьем потоке курса по ИИ-прототипированию для быстрого создания мульти-агентных цепочек).
Источники:
📝 [Официальный блог LangChain]
🎥 [Демо на YouTube]
@llm_notes
#agents #langchain #automation #productivity #builder
LangChain представил LangSmith Agent Builder в закрытом превью — платформу для создания ИИ-агентов без необходимости писать код. Теперь создавать автономных агентов смогут не только разработчики.
Что отличает от конкурентов:
🔹 Это не визуальный конструктор workflow, а именно агент-билдер
🔹 Агенты принимают решения динамически, а не следуют заранее заданному пути
🔹 Встроенная система памяти — агент запоминает исправления и применяет их в будущем
Ключевые возможности:
1️⃣ Разговорная настройка — описываете задачу простым языком, система задает уточняющие вопросы и автоматически генерирует промпты
2️⃣ Адаптивная память — агенты обновляют свои инструкции на основе ваших корректировок без ручного редактирования
3️⃣ Интеграция с сервисами — подключение к Gmail, Slack, Linear, LinkedIn через OAuth и MCP
4️⃣ Agent Inbox — мониторинг всех потоков агентов с индикаторами статуса и уведомлениями
Архитектура агента включает:
• Промпт — логика и описание задач агента
• Инструменты — подключение к внешним сервисам через MCP
• Триггеры — автоматический запуск по событиям или расписанию
• Субагенты — разделение сложных задач на специализированные модули
Платформа подходит для внутренних задач: email-ассистенты, чат-боты, интеграция с Salesforce. Например, агент может ежедневно присылать сводку встреч или создавать задачи в Linear на основе писем.
В целом, все это можно сделать и в том же manus.im через интеграционную связку "отправка задания по email" в manus, внутри которого предварительно настроены нужные mcp-серверы.
Но если вы хотите влиять на архитектуру agent flow и в дальнейшем мониторить его состояние, то LangSmith Agent Builder подойдет лучше, чем универсальная система вроде manus.im.
Получается, LangSmith Agent Builder - это что-то вроде lovable/replit для построения мульти-агентной системы.
Кстати, вот еще один вариант системы такого плана, но которую можно потестировать и без private preview (я ее использовал в третьем потоке курса по ИИ-прототипированию для быстрого создания мульти-агентных цепочек).
Источники:
📝 [Официальный блог LangChain]
🎥 [Демо на YouTube]
@llm_notes
#agents #langchain #automation #productivity #builder
Forwarded from дAI потестить!
This media is not supported in your browser
VIEW IN TELEGRAM
Че как там дела у нейрофотографов? Все еще делают нейрофототсессии за деньги??
P.S. Промпт подглядел у Юли 85Gb, но буду делать вид что придумал сам.
P.P.S.S. С некоторыми лицам работает плохо, но от этого только интереснее.
Бесплатно https://labs.google.com/mixboard/
P.S. Промпт подглядел у Юли 85Gb, но буду делать вид что придумал сам.
P.P.S.S. С некоторыми лицам работает плохо, но от этого только интереснее.
Бесплатно https://labs.google.com/mixboard/