Обновить
496.02

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Semantic Retrieval-Augmented Contrastive Learning (SRA-CL) для sequential рекомендательных систем: обзор

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров603

👋 Привет, Хабр!

Меня зовут Никита Горячев, я Research Engineer в WB, последние несколько лет работаю на стыке RecSys, LLM и мультимодальных моделей. Каждый день мы обрабатываем миллиарды событий, а модели, которые мы внедряем, напрямую влияют на CTR, удержание и конверсию, принося немало дополнительной выручки.

До этого я успел поработать в AI-стартапе в Palo Alto, где занимался голосовыми агентами (ASR/TTS), и в МТС, где мы строили AI-экосистему. Ранее в Сбере я занимался созданием единого RecSys SDK для всей экосистемы (от SberMegaMarket до Okko и Zvuk), а ещё раньше — развивал персонализацию и ML в ритейле и нейротехе.

Сегодня я хотел бы поговорить о том, как большие языковые модели могут починить контрастивное обучение в рекомендательных системах. Контрастивные методы давно стали стандартом в NLP и CV, но в последовательных рекомендациях они работают далеко не идеально: данные разрежены, а аугментации часто искажают смысл вместо того, чтобы его сохранять. Авторы свежей статьи с arXiv — “Semantic Retrieval Augmented Contrastive Learning for Sequential Recommendation (SRA-CL)” — предлагают элегантное решение: использовать LLM для генерации семантически осмысленных позитивных пар. Звучит просто, но даёт заметный прирост качества — давайте разберёмся, как именно это работает.

Читать далее

Functools, Itertools, Collections и с чем это всё едят

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров3.4K

В этой статье я коротко показываю, как три стандартные библиотеки Python — itertools, collections и functools — упрощают повседневные задачи.

В itertools разбираю полезные итераторы и паттерны работы с последовательностями: от count/cycle/repeat до groupby, permutations/product и zip_longest — всё с минимальными примерами.

В collections показываю готовые контейнеры для практики: Counter, deque, defaultdict, OrderedDict и namedtuple — где они уместны и чем удобнее обычных структур.

В functools делюсь инструментами “функционального” стиля и декорирования: lru_cache, cmp_to_key, total_ordering, partial, reduce, update_wrapper и wraps — зачем они нужны и как их быстро применить.

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

Читать далее

LLM на прокачку: практический гайд по Alignment

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.3K

Мы в Точка Банке делаем свою LLM. Чтобы она работала хорошо, недостаточно просто обучить её на куче текстов. Для получения осмысленного и предсказуемого поведения модели, нужен Alignment — дообучение с учётом предпочтений и ограничений. В статье расскажу, какие методы применяют в современных моделях, и как мы адаптировали их под себя.

Читать далее

Эксперимент: может ли AI реально помочь с рефакторингом легаси-кода на Python

Время на прочтение11 мин
Количество просмотров4.6K

Показываем на практике, как с помощью ChatGPT можно за несколько минут преобразить реально существующие фрагменты легаси-кода на Python.

Читать далее

Spring Boot + Python: от эксперимента до open-source

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.7K

Как исполнять Python внутри Spring Boot?

Я прошёл путь от сырых AOP-костылей до production-ready библиотеки с REST, gRPC и безопасным исполнением скриптов. В статье: опыт, архитектура и базовые примеры использования.

Читать далее

Ищем порт на коммутаторах D-Link

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров6.6K

Предисловие.

Есть у нас сеть. Не вдаваясь в подробности, состоит она из нескольких десятков коммутаторов D-Link и Cisco. Последние выполняют роль агрегаторов трафика, а D-Link занимаются доступом. Соответственно много VLAN, много устройств. И очень часто, пользователи меняют свое расположение, а вместе с ними переезжают их компьютеры и МФУ. Всё это дело хоть и подключается к нумерованным розеткам, часто поиск порта на коммутаторе для замены VLAN довольно долог и не удобен. Кроме того, техники, которые занимаются непосредственно подключением оборудования, не имеют доступа на коммутаторы. Им приходится глазами искать кабель в стойке, а потом просить инженеров проверить VLAN. Хотелось как-то упростить процесс.

Я уже давно неспешно изучаю Python в качестве дополнительного образования. В основном для применения в автоматизации на работе и дома. Ну тут вот и сошлось: Python, проблема и статья на Хабре Python3. Автоматизация конфигурации мультивендорного сетевого оборудования / Хабр. Прямо брать код из ее не стал, такой функциональности не требуется. Да и хотелось самому разобраться, опираясь на идею.

Написание кода началось с запроса к GigaChat, заодно было интересно проверить насколько он хорошо пишет скрипты. Не буду утомлять приводя весь цикл нашего общения, остановлюсь кратко: сперва GigaChat выдал скрипт на основе библиотеки paramiko, после уточнения, что нужно для Telnet выдал и эту версию. После нескольких итераций, в том числе с асинхронными функциями, остановился на библиотеке telnetlib. В Python 3.12 есть ее замена telnetlib3, т.к. сама telnetlib вырезана в релизе - устарела. ИИ вполне можно использовать для написания небольших скриптов, как отработка идеи или небольших функций в проектах. Однако стоит проверять код, т.к. в части случаев он получается совсем не рабочий. Ну и заодно - изображение в начале текста тоже сделал GigaChat, я то рисовать не умею.

Читать далее

Telegram Bot API 9.2: прямые сообщения и рекомендуемые посты

Время на прочтение4 мин
Количество просмотров5.9K

15 августа 2025 года Telegram выпустил обновление Bot API 9.2. Если прошлые версии (9.0 и 9.1) в основном усиливали возможности ботов в работе с платным контентом, подарками и чек-листами, то 9.2 делает шаг в сторону более тесной интеграции ботов с каналами и их экосистемой.

В этом релизе добавили поддержку прямых сообщений в каналах, инструменты работы с рекомендуемыми постами, расширили систему чек-листов и доработали механику подарков. Давай разберём, что это значит для разработчиков и администраторов сообществ.

Читать далее

Скриншоты сайта в адаптивную Tailwind верстку

Время на прочтение2 мин
Количество просмотров3.5K

Я знаю, что существует 100 500 способов перекинуть картинку в готовую вёрстку.
Но когда у меня дошло до дела, результат оказался так себе.
То ли я криворукий, то ли все эти инструменты ещё далеки от совершенства.
В итоге понял, что мне проще накидать свой собственный велосипед — скрипт на Python (~200 строк).

Решил выложить, может, кому‑то пригодится.

Скрипту можно скормить три скриншота сайта:

1) Десктоп‑версия

2) Планшет

3) Мобильная версия

На выходе получим одну HTML‑адаптивную вёрстку (десктоп, планшет, мобила) с использованием Tailwind CSS.

Читать далее

QTune — open-source решение для быстрого файн-тюнинга моделей

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.7K

Сегодня я хочу рассказать о своем проекте QTune. Это open-source приложение с графическим интерфейсом, которое превращает сложный и требовательный процесс файнтюнинга в понятный и управляемый процесс, доступный каждому. Это не просто набор скриптов, а полноценная студия, охватывающая весь цикл: от создания датасета до запуска готовой модели локально.

Читать далее

Создаем простого грид-бота для Московской биржи через QUIK и Python

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K

Алгоритмическая торговля на Московской бирже с помощью терминала QUIK остаётся популярным способом автоматизировать стратегии. В этой статье мы напишем грид-бота, который выставляет ордера сеткой вокруг текущей цены и зарабатывает на колебаниях.

Читать далее

Сказ о том, как мы приложение для падел-тенниса создавали

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров3.6K

Как‑то раз двое ML‑щиков решили соединить свою любовь к компьютерному зрению и ракеточным видам спорта. Так родилась идея сделать систему видеоаналитики для падел‑тенниса.

Падел — это игра на стыке большого тенниса и сквоша. От сквоша падел взял стеклянные стенки вокруг корта, а от большого тенниса — почти всё остальное.

Читать далее

Мой первый пет‑проект: как я создавал ядро для Telegram‑ботов

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров6.3K

Я собрал ядро для Telegram‑ботов и описал архитектуру, которая держится на YAML‑сценариях и очереди в БД. Почему отказался от брокера, как экономлю апдейты в базе, как работает «разблокировщик» цепочек и что это даёт в предсказуемости. Показываю решения и компромиссы без «магии».

Читать далее

Хватит тестировать на «кошках»! Разворачиваем циничный API на FastAPI за 5 минут для реальных AQA-задач

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.3K

Привет, Хабр! Меня зовут Ваня, и я AQA-инженер. Как и многие из вас, я занимаюсь обучением будущих покорителей Postman и Pytest. И, как многие из вас, я столкнулся с проблемой: все существующие тестовые API — невыносимо скучные.

Todo-листы, интернет-магазины с товарами Item 1, Item 2, API для управления книгами... Серьезно? После пятого GET /todos начинаешь сомневаться не только в своей карьере, но и в смысле бытия. Данные в них стерильны, как операционная, а сценарии предсказуемы, как сюжет российского сериала.

Моим ученикам было скучно. Мне было скучно. Я понял, что нужен свой API. С блэкджеком и... ну, вы поняли. С API, который будет не просто функциональным, но и забавным. Который захочется «потыкать» просто ради того, чтобы увидеть очередной перл в ответе сервера.

Так родился «Cynical Circle API» — API для тех, кто понял жизнь и устал от ванильных примеров.

(Так выглядит наша интерактивная документация. Уже интригует, не правда ли?)

Читать далее

Ближайшие события

От консоли к GUI: Как написать игру «Сапёр» на Python с нуля версия GUI (часть вторая)

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров3.4K

Создайте свою версию легендарного «Сапёра» на Python с графическим интерфейсом. В этом подробном руководстве вы шаг за шагом реализуете полноценную игру: от настройки игрового поля с помощью Tkinter до обработки кликов, управления флагами и интеллектуального открытия клеток. Вы освоите генерацию мин с безопасной зоной, рекурсивное раскрытие пустых областей, систему подсчёта времени и проверку условий победы

Читать далее

Как написать bzip2-архиватор на Python: разбираем преобразование Барроуза-Уилера

Уровень сложностиСложный
Время на прочтение25 мин
Количество просмотров4.6K

Привет! Я Рома, бэкендер-питонист в KTS.

Это вторая статья в моем цикле об алгоритме архивации bzip2. Первую можно прочитать здесь, но для понимания сегодняшней темы она необязательна. Ниже я разберу преобразование Барроуза-Уилера — ключевой этап сжатия bzip2.

Читать далее

GPT-4o vs YandexGPT: как мы отлаживали метрики в DeepEval из-за требований ИБ

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров1.5K

В нашей компании мы занимаемся автоматизацией тестирования и часто сталкиваемся с необходимостью не только разворачивать сложные пайплайны, но и реализовывать метрики, которые действительно помогают выявлять тонкие баги в работе LLM-классификаторов. Есть понятная open-source инфраструктура, привычные инструменты и строгие требования ИБ. Но когда начинаешь сравнивать разные модели-судьи — например, GPT-4o от OpenAI и YandexGPT, — традиционные подходы к валидации и любимые метрики внезапно ведут себя очень по-разному.

В этой статье я расскажу, как обычный процесс локализации метрик для DeepEval вывел нас не только на поиск багов в коде, но и привёл к пересмотру самой логики автоматизированной оценки: почему педантичность одной LLM может “маскировать” ошибки, а прагматичность другой — неожиданно улучшить вашу диагностику. Разберём код живых метрик, покажем, как переход от faithfulness к relevancy помог нам обнаружить и устранить важную логическую уязвимость, и выделим пять универсальных уроков, которые понадобятся каждому, кто автоматизирует оценку LLM не “по учебнику”, а по-настоящему.

Если вам интересен опыт построения эксплуатируемых, не “пластмассовых” метрик для LLM-классификаторов в условиях ограничений ИБ и смешанных инфраструктур (OpenAI + российские модели) — добро пожаловать под кат!

Читать далее

Как экспортировать HTML-таблицы в Excel с помощью Python

Время на прочтение11 мин
Количество просмотров2.8K

Экспорт HTML-таблиц в Excel — это распространенная задача в обработке данных, отчетности и автоматизации. Независимо от того, работаете ли вы с данными, полученными с веб-страниц, панелями управления или отчетами на основе HTML, преобразование таблиц в формат Excel может облегчить анализ данных и их обмен.

В этом блоге мы рассмотрим...

Читать далее

Асинхронные тесты для UI и API на Python: примеры, подводные камни и трезвый вывод

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров3.2K

Асинхронность в тестах выглядит как способ «бесплатно» ускорить прогон: пока один тест ждёт ответа сервера, другой мог бы выполняться. Я переписал UI (Playwright) и API (HTTPX) тесты на async/await, прогнал их в CI/CD и посмотрели на результат. Спойлер: магического ускорения не произошло — разбираемся, почему так и когда асинхронность всё-таки нужна.

Читать далее

Python: Генераторы. Методы send, throw и close

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров6K

Это — обучающая статья, в которой подробно разбирается поведение send, throw и close методов генератора.

Впрочем, для опытных пользователей может быть интересно узнать про:
• нововведение, добавленное в close начиная с Python 3.13
• случай, в котором поведение CPython расходится с The Python Language Reference
• некоторые моменты, описанные в PEP 342 - Coroutines via Enhanced Generators

Всё это вы также найдете в статье.

Читать далее

Автоматическая сортировка файлов на Python: из хаоса в порядок одной командой

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров5.3K

Привет, Хабр! Думаю, всем знакома ситуация: десятки файлов на рабочем столе, сваленных в единую кучу. Скрины, документы, архивы — и всё в одном рабочем пространстве. Наводить порядок не всегда получается, а жить в беспорядке не очень удобно. Недавно, в процессе наведения порядка, я утомился делать это руками и написал скрипт на Python, который структурирует и раскидает всё по папкам самостоятельно.

Скрипт в статье:

- Автоматически сортирует файлы по 9 категориям
- Поддерживает 50+ форматов файлов
- Предоставляет гибкие настройки

Читать далее

Вклад авторов