Обновить
1024K+

Python *

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

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

Память для LLM-чата на Python. Часть 3: добавляем историю сообщений и контекст

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

Во второй части мы сделали консольный чат с циклом и system prompt. Но у него был пробел: каждый запрос шёл к модели независимо, без контекста предыдущих реплик. В третьей части добавляем историю сообщений — и чат наконец начинает помнить разговор.

Читать далее

Новости

Как засунуть 62ГБ в 15ГБ и не сойти с ума: Партизанский MLOps на примере Gemma 4 31B

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

TL;DR: В этой статье мы возьмем новейшую Gemma 4 31B, которая в оригинале весит 62 ГБ, и заставим её работать и выгружаться на бесплатном Kaggle с лимитом диска в 57 ГБ. Спойлер: нам придется удалять исходники прямо во время работы Python-скрипта.

Читать далее

Authorization без middleware: как я завернул Casbin в декораторы для FastAPI

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5K

Когда в FastAPI-проекте появляется нормальная авторизация, код быстро начинает расползаться в стороны.

Сначала все выглядит терпимо: один Depends(get_current_user), один Depends(get_enforcer), одна ручная проверка. Потом роутов становится больше, правил доступа становится больше, и внезапно половина endpoint’ов начинает содержать не бизнес-логику, а обвязку вокруг нее.

В какой-то момент меня перестал устраивать и классический подход через dependency injection в каждом роуте, и вариант с middleware. Хотелось, чтобы правило доступа было видно прямо рядом с маршрутом, но при этом не приходилось таскать авторизацию в сигнатуры всех функций.

В итоге я собрал casbin-fastapi-decorator — тонкий слой над Casbin для FastAPI, который позволяет описывать authorization через декораторы.

Идея простая:

Читать далее

Почему я написал Ёбифай: свой планировщик для фоновых задач на Python

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели4.7K

Но очень быстро оказывается, что настоящая сложность не в самих задачах, а в инфраструктуре вокруг них.

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

В какой-то момент становится очевидно:

Читать далее

ruGPT3XL идёт в качалку / поднимаем контекст до 8k

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.4K

Это продолжение предыдущей публикации про реставрацию ruGPT3XL. Для тех кто не читал, кратенько, я конвертировал древний Megatron-LM чекпоинт в HuggingFace-формат, залил веса на HF, накатил поддержку GGUF в llama.cpp и подумал, что всё. Но нет.

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

Решил поднять контекст до 8k.

Читать далее

Микросервис потоковой конвертации видео (Python, FFmpeg)

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.8K

Недавно перед нами встала задача быстро реализовать микросервис для конвертации видео. Стандартным решением для таких целей является FFmpeg, который умеет читать файлы чанками (запросы HTTP Range) с URL и выводить результат в stdout. Поэтому я решил попробовать подход с потоковой конвертацией.

Важно уточнить, что под «потоковой обработкой» здесь подразумевается передача данных в виде последовательности чанков (Chunked Streaming), а не классический Continuous Streaming, как в случае с live-видео.

Читать далее

Ускоряем игру «Жизнь» с помощью CUDA / Triton

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

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

Игра «Жизнь» — это простой клеточный автомат, поэтому она должна хорошо поддаваться GPU-ускорению. Правила просты: каждая ячейка в двухмерной сетке или жива, или мертва. На каждом шаге мы подсчитываем живых соседей ячейки (включая диагонали). Если ячейка жива, она остаётся живой, если живы два или три её соседа. В противном случае она умирает. Если клетка мертва, она оживает, если живы ровно три соседа. Из этих простых правил возникает потрясающий объём сложности, о котором написаны подробные статьи.

Для простоты я буду рассматривать только сети N×N и пропущу вычисления на краях. Всё будет работать на Nvidia A40, а бенчмарк производительности я буду проводить при N=216. Пока мы будем хранить каждую ячейку в виде 1 байта, поэтому весь массив займёт 4 ГБ.

Весь код выложен в репозитории GitHub.

Читать далее

Кастомная аналитика для Wildberries и Ozon — WBOZYA-dash

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

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

В течение последнего года я занимался разработкой аналитической панели для продавцов на маркетплейсах Wildberries и Ozon, а в перспективе планируется интеграция с Яндекс.Маркет. Я хотел бы поделиться своим опытом и представить систему WBOZYA-dash, которая предназначена для анализа продаж через эти маркетплейсы. До конца весны 2026 выпущу, думаю, с десяток статей на эту тему, а пока сделаю общий обзор своей системы.

Читать далее

Как я уместил «Войну и мир» в 10 ГБ видеопамяти, или почему нейросеть убивает героев и выдумывает Пьера Бездаровского

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели9.2K

Что делать, если по литературе задали два тома "Войны и мира", а времени (или желания) читать нет? Конечно, запрячь нейросеть! Но как быть, если в твоем распоряжении всего 10 ГБ видеопамяти, а модель упорно пытается "убить" выживших героев и переименовывает Пьера Безухова в Бездаровского?

В этой статье я поделюсь опытом запуска Saiga Llama 3 8B на домашнем железе, расскажу, как бороться с галлюцинациями через промпт-инжиниринг, и почему 7500 символов текста Толстого иногда весят столько же, сколько одна строчка жесткого правила в системном промпте. Внутри - анализ вероятностей токенов, лог работы модели и готовый код для суммаризации длинных текстов.

Узнать, как я спас Николая Ростова от LLM

YOLOv11 и RF-DETR для object detection в видео. Добавление временных характеристик с помощью суперкадра

Время на прочтение4 мин
Охват и читатели6.5K

Если ввести в поиск запрос object detection, почти сразу среди результатов окажутся модели семейства YOLO в разных версиях. Это неудивительно: они популярны, быстры, достаточно просты в использовании и хорошо подходят для прикладных задач. Модели вроде YOLO и RF-DETR обычно работают по одной и той же схеме: на вход подается изображение, на выходе мы получаем предсказания объектов.

Такой подход удобен и хорошо работает для картинок. Но видео — это не просто набор независимых кадров.

Читать далее

Рейтинг языков программирования на GitHub: анализ 2024–2025 в JupyterLab и Anaconda

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

Мы не стали спорить с TIOBE и RedMonk и собрали свой рейтинг языков программирования на основе GitHub. Данные за 2024–2025 показывают неожиданные вещи: JavaScript впереди, TypeScript резко растёт, а Rust и Go выигрывают по качеству проектов. Разбираем, что стоит за цифрами и где могут быть искажения.

Читать далее

0.3 секунды на фургонный флот. 3D-упаковщик грузов, который понимает LIFO и не давит коробки

Время на прочтение6 мин
Охват и читатели6K

Представьте логиста, у которого перед глазами 400 разных коробок и 8 машин. У него есть Excel, калькулятор и два часа времени. Я решил, что это несправедливо, и написал веб-сервис на Django, который делает это мгновенно. Внутри: 3D MaxRects, полная свобода вращения (6 осей) и учет суровой реальности — от очередности выгрузки до предельной нагрузки на нижние ряды.

Для тех, кто предпочитает один раз увидеть: вот 3-минутное демо работы интерфейса и визуализации на Three.js

https://youtu.be/JP80ESX0YiQ

Читать далее

Место Питона, Си и Паскаля в образовательном процессе

Время на прочтение5 мин
Охват и читатели6.6K

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

Подробнее

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

Работа с Telegram Bot API: https, commands, send или как создать бота

Уровень сложностиСложный
Время на прочтение17 мин
Охват и читатели6.7K

Всем привет!

Если вы хоть раз пытались нормально вкатиться в разработку Telegram-ботов, то почти наверняка сталкивались с одной проблемой: информации в интернете много, но она какая-то рваная. То есть где-то вам сразу дают библиотеку, заставляя писать код и даже не объяснив, как бот вообще работает.

В особых сценариях (например разработка userbot) смешивают воедино Telegram Bot API, Telegram API (да, это разные вещи!), api_id, api_hash, token, chat_id, webhook и еще десяток терминов.

А где-то вообще показывают “hello world”, который фактически-то работает, но только ты ступишь на шаг вперед, так всё начинает разваливаться, ведь понимания практически 0.

В этой статье моя цель - разобрать всё это нормально и по-человечески, объяснив как использовать Telegram Bot API для создания ботов.

Читать далее

Более 25 лет в Python не решаются исправить это

Время на прочтение5 мин
Охват и читатели14K

Сегодня (2026.04.01) прошло ровно 9731 день с тех пор, как сообщество Python узнало об изъяне в работе со строками.

Это было так давно, что у Python еще не было мажорных версий (для холиваров приходилось использовать PHP).

Так давно, что еще не существовало ни pythonchallenge.com, ни его прародителя notpron.com - легендарных убийц времени программистов.

Это было в прошлом тысячелетии. А именно - 1999 году, когда, согласно летописям, реализовали тип string. В том же году ведущий разработчик Jim Fulton опубликовал исследование, где без купюр указал на проблему.

Как ни странно, она не решена до сих пор.

Читать далее

Имитация движений: как научить робота повторять движения, используя нейросеть для генерации траектории

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели5.7K

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

Читать далее

Хватит винить кривые руки. Твой язык программирования энергетически тебе не подходит

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

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

На днях HR-отдел отклонил мое резюме на позицию джуна. Вместо фидбека я получил ответ «В нашей команде слишком много козерогов, и нашему тарологу не понравился ваш Сатурн». Сначала я хотел возмутиться, но потом подумал. Может звезды не врут? Возможно наш звездный язык программирования определяется в зависимости от расположения планет во время первого запуска IDE.

Я провел фундаментальное исследование, проанализировал натальные карты Гвидо ван Россума, Страуструпа и прочих, и составил первый в мире точный гороскоп языков программирования.

И результат меня поразил...

Читать далее

Симулятор JWST на Python: как критика Хабра заставила выучить астрофизику и почему мы сделаем открытие раньше NASA

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.8K

Некотороевремя назад я пришел на Хабр с простеньким ML‑скриптом, который искал обитаемые экзопланеты. Я ждал похвалы, но вместо этого получил в комментариях ведро ледяной воды: «Где валидация? Что будет при сдвиге распределения? Машинное обучение без физических лимитов — это декорация!».

Вызов был принят. Я выбросил наивный подход, запер XGBoost в клетку суровых законов термодинамики и переписал всё с нуля.

Спустя недели разработки и чтения научных статей я представляю ExoLogica AI 2.0. Теперь это не табличный калькулятор, а 14-ступенчатый астрофизический конвейер. Он считает долю железного ядра, оценивает гидродинамическое сдувание атмосферы и — самое главное — генерирует синтетические спектры для телескопа Джеймса Уэбба (JWST) на лету.

Под катом: почему знаменитый индекс подобия Земле (ESI) безнадежно устарел, за что наш скрипт выбросил в мусорку кандидатов от Корнеллского университета, и почему гаражный опенсорс с Хабра имеет все шансы сделать великое открытие раньше, чем бюрократы из NASA.

Читать далее

Интервью Гвидо ван Россума с core-разработчиком Python Бреттом Кэнноном

Время на прочтение21 мин
Охват и читатели7.7K

Это интервью Гвидо ван Россума с core‑разработчиком Python Бреттом Кэнноном, в котором они обсудили начало и развитие карьеры Бретта как программиста и активного участника сообщества разработчиков Python, развитие самого языка, сложность управления большим сообществом, кризис PEP 572 >:=, выход Гвидо на пенсию в 2018 г. и к чему это привело.

Читать далее

Все об устройстве WSPR с примерами на Python (часть 1)

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели6.7K

WSPR — цифровой протокол, разработанный Джо Тейлором (K1JT) в 2008-2009 годах, с целью исследования распространения радиосигналов от коротковолновых передатчиков малой и сверхмалой мощности. В этой статье будут рассмотрены устройство и принципы работы протокола.

Статья может быть интересна радиолюбителям, как знакомым, так и не знакомым с WSPR, а также тем, кто хочет понять устройство этого протокола.

Читать далее
1
23 ...