Обновить
793.13

Python *

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

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

От простого бота к самообучающемуся интеллекту: эволюция ИИ-агентов для бизнеса

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

Пролог: Почему бизнесу нужна эволюция, а не революция

Представьте сцену: Вы запускаете первый ИИ-агент для поддержки клиентов. Первые две недели — восторг. "Он отвечает! Он работает!" Месяц спустя — разочарование. "Он повторяет одни и те же ошибки. Не умеет работать со сложными запросами. Требует постоянного контроля".

Знакомо? Это классическая история "пилотного проекта, который не масштабируется".

Моя команда прошла этот путь. Мы потратили 18 месяцев на эволюцию от примитивного бота до системы, которая:

Самостоятельно обрабатывает 85% сложных запросов

Снизила операционные затраты на 40%

Еженедельно улучшает свои показатели на 3-5% без вмешательства разработчиков

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

Читать далее

От токенизации до генерации: как я с нуля написал GPT для Python-кода

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

Когда все вокруг пользуются ChatGPT и Claude, возникает естественный вопрос: а что, если попробовать сделать нечто подобное самому? Не для того, чтобы конкурировать с гигантами, а чтобы понять изнутри, как работают современные языковые модели.

Этот проект — моя попытка пройти весь путь: от токенизации текста до генерации кода. Не используя готовые решения от HuggingFace, а реализуя каждый компонент самостоятельно. И знаете что? Это оказалось одновременно сложнее и интереснее, чем я предполагал.

Читать далее

От vibe coding к Spec-Driven Development: как приручить скорость ИИ и довести проект до продакшена

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

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

Поговорим о том, как не дать «вайб-кодингу» развалить ваш продакшен и почему Spec-Driven Development (SDD) — это наш новый «компилятор», которому нужно доверять.

Читать далее

Антипаттерны на питоне, которые меня победили

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

У нас в компании был один проект, с которым я не справился.

Дело было так: мне сообщили, что знакомый плюсовик написал какой-то скелет проекта на питоне, а теперь мне надо его допилить, подставив в нужные места реализации. Почему тогда делал он, а не я, а сейчас должен делать я, а не он? Да чёрт его знает. Но я подумал, что смогу — унаследуюсь и переопределю методы где нужно, подставлю зависимости во всякие DI, ну что там может быть плохого?

Оказалось, что плохо вообще всё.

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

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

Короче, вот она — анти-статья, собранная из того проекта. А где мне не хватало примеров, я брал код из Django, потому что он вообще полностью собран на антипаттернах.

Получилось много букв, как всегда

Как я устал пересчитывать кгс/см² в бары и написал своё приложение на Python

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

Я инженер ОВиК, и меня достало каждый день гуглить перевод кгс/см² в бары. Универсальные конвертеры не знают про Гкал/ч и кгс/м², а инженерные калькуляторы — платные или с рекламой. Написал своё Android-приложение на Python/Kivy: 10 категорий, 60 единиц измерения (включая все инженерные), 5 калькуляторов (скорость в трубе, тепловая мощность с гликолями, расширительный бак по СП 60.13330, потери на клапане, площадь изоляции). Работает полностью офлайн, бесплатно, без рекламы. Рассказываю как сделал, с какими граблями столкнулся и как выложил в RuStore.

Читать далее

Кэш-монтирование или Cache mount в Docker. Использование кэш-монтирования в GitLab CI/CD

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

Кэш-монтирование в Docker — это мощный инструмент, который может значительно ускорить процесс сборки образов в CI/CD. Но его правильная настройка в GitLab требует понимания не только работы BuildKit, но и особенностей взаимодействия с различными конфигурациями GitLab Runner — DinD и DooD.

В этой статье я расскажу об устройстве кэш-монтирования в Docker и как его использовать в GitLab CI/CD. На примере простой сборки Python-проекта покажу готовые решения для кэширования зависимостей, чтобы оптимизировать сборку Docker-образов.

Читать далее

PyTorch vs TensorFlow: что выбрать для deep learning в 2026 году

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

Выбор фреймворка для глубокого обучения — это стратегическое решение, влияющее на скорость разработки, стоимость и масштабируемость. Правило «PyTorch — для исследований, TensorFlow — для продакшена» больше не работает. К 2026 году оба фреймворка активно заимствуют лучшее друг у друга: PyTorch наращивает промышленные возможности (TorchServe, ExecuTorch), а TensorFlow с Keras 3 становится гибче для исследований.

Согласно опросу Stack Overflow Developer Survey 2024, PyTorch (10,6%) и TensorFlow (10,1%) находились примерно на одной отметке по частоте использования у разработчиков, а в исследовательских и AI-first-компаниях уверенно лидирует PyTorch. Но есть нюансы.

Разобраться в особенностях фреймворков →

Окончательно разбираем списки в питоне

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

Какая структура данных стоит за list? Как быстро отрабатывает операция append? Эти вопросы часто задают на собеседованиях, и чтобы на них отвечать, нужно понимать, как список работает под капотом. В этой статье разберём, как же устроен список в питоне, копнём на уровень CPython и позапускаем код. После прочтения вы будете знать о списках больше, чем ваши коллеги.

Разобраться в списках

Гиперсети: нейронные сети для обработки иерархических данных

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

С точки зрения нейронных сетей мир плоский. Иерархические данные напоминают, что это не так.

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

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

Стандартные нейронные сети в таких условиях жёстко сбоят. Обучите одну модель сразу на всех датасетах — и она расфокусируется из-за различий, станет усреднять функции, которые усреднять не следует. Натренируйте по модели на каждом из датасетов — и получите переобучение, в особенности, если датасеты будут маленькими. Такие обходные манёвры как задействовать статические векторные представления (эмбеддинги) или постоянно наращивать размер сети в сущности не решают ключевую проблему: система запоминает причуды сети, не моделируя её структуру, складывающуюся на уровне датасета. А ведь именно эта структура — залог качественных результатов.

Читать далее

Heavy Digital: Как я создал синтетический датасет завода, который заставил профи потратить 3 суток на анализ

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

Некоторое время назад я опубликовал статью про генерацию синтетических данных для электродуговых печей (EAF). Идея была проста: реальных промышленных данных нет (они стоят миллиарды или засекречены), а учить ML‑модели на чем‑то надо.

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

Читать далее

Шампур Логистик: Как упаковать флот и не сойти с ума от 70 000 контейнеров

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

Сегодня мы выходим в продакшн с системой "Шампур Логистик", которая пакует флот из 15 судов и распределяет манифест на 70 000 контейнеров быстрее, чем вы успеете допить кофе.

Это уже не просто «тетрис в вакууме». Мы построили промышленный конвейер на FastAPI и Celery, где математическое ядро с 90% Test Coverage сталкивается с суровой физикой моря: лимитами стекирования в 210 тонн, жестким LIFO-зонированием портов и капризными рефрижераторами.

В этой статье я покажу изнанку системы: как за 16 минут превратить маркетинговый хаос в выверенный цифровой двойник рейса, почему 10% свободного места в трюме — это не ошибка, а осознанная экономия миллионов долларов, и как наш "Шампур" защищает прибыль перевозчика в закрытом море кода.

<cut />

Читать далее

Нейросетевой прогноз погоды для edge-устройств

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

Всем привет! Хочу рассказать не столько про свою модель, сколько про инженерные компромиссы, с которыми я столкнулся во время работы над проектом. Буду рад любой критике.

Речь пойдет о моем проекте edge-weather-forecast — лёгкой нейросетевой модели прогнозирования температуры, которую можно запускать прямо на метеостанции или на простом CPU-устройстве вроде Raspberry Pi.

Читать далее

ai-sidekick: Быстрый старт в мир AI-агентов и RAG

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

Приветствую, Хабр! Представляю вам свой фреймворк - ai-sidekick

Мы разберём готовый к работе фреймворк для экспериментов с MCP-tools. А также, на его основе, рассмотрим архитектуру RAG (Retrieval-Augmented Generation) AI-ассистента для поиска информации в вашей собственной базе знаний. Это не набор абстракций в тысячу строк, а минималистичная кодовая база на Python и Docker, которая предоставляет возможность экспериментировать с конфигурациями и кодом под ваши задачи.

Читать далее

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

Ускоряем инференс в Python с ONNX

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

Привет! Если у вас когда‑либо был опыт деплоя нейросетки, вы знаете, что обучение — это полдела, а вот добиться шустрого инференса — целое искусство. Часто обученная в PyTorch модель дает замечательные метрики, но стоит попытаться запустить её в приложении начинаются всякие проблемки.

Одно из решений, которое часто выручает — ONNX и ONNX Runtime. Если эти буквы для вас пока ничего не значат — не беда, сейчас разберёмся что к чему. А если вы уже слышали про ONNX, то, возможно, задавались вопросом: «А реально ли ускорить инференс, заморочившись с этой технологией?» Еще как!

Ускорить инференс

Событийный цикл в asyncio: как Python-код работает поверх механизмов Linux

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

Большая статья для тех, кто, как и я, споткнулся об asyncio и так не разгадал до конца «магию» событийного цикла. Попробовал распутать этот клубок через подробный рассказ (в как можно более доступной форме) о внутренних механизмах Линукса и самого asyncio, которые лежат в основе событийного цикла. К концу статьи, надеюсь, магия исчезнет, а взамен придет ясное понимание фундамента. Статья будет полезна и тем, кто работает с asyncio на других платформах.

Погружаемся

C Django Rest Framework мы все дальше от Бога

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

Django Rest Framework (DRF) - чуть ли не единственный фреймворк для разработки REST на базисе Django. Мой нарратив о Django в прошлой статье заключался в том, что это неповоротливый монолит, который абсолютно не следует best practices и не стремится к ним. Если вдруг вы не задумывались о том, как связаны DRF и Django, то вас может быть немного это удивит - никак. Их делали совершенно разные люди, но каким-то образом они сошлись в общей концепции: игнор хороших практик, перегруженные классы и магия, превращающая разработчика в гадалку.

Читать далее

Детерминированное поведение и стейт-машины для ваших агентов

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

Агенты отлично справляются с узкими, конкретными задачами — например, написать функцию или короткий текст — но начинают буксовать на сложных многошаговых процессах. Чем более абстрактна и «высокоуровнева» работа, тем больше ошибок они допускают: путают шаги, пропускают операции, неверно интерпретируют инструкции. Такие ошибки накапливаются и усиливают друг друга, приводя к неожиданным результатам. Чем больше задача, которую вы отдаёте агенту, тем выше шанс, что он её провалит.

Помедитировав немного над этим, я пришёл к интересным эвристикам.

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

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

Например, существует масса формализованных циклов проектирования (PDCA, OODA, DMAIC, 8D и etc.) — по сути, тривиальных мета-алгоритмов; однако каждый шаг этих алгоритмов — это куда более сложная и нетривиальная задача.

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

Читать далее

Разработка Telegram-ботов на Python: системный подход вместо разрозненных гайдов

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

Обычно всё начинается с очень простой задачи, которую нужно решить чем быстрее, там лучше. «А можно ли сделать так, чтобы пользователи сами записывались на консультацию через Telegram?» или «кто-то должен отвечать на типовые вопросы клиентов ночью, пока саппорт спит». Как правило, на этом этапе вспоминают о Telegram-ботах, но тут вопросов возникает еще больше. Сколько стоит разработка? Можно ли создать такого бота своими силами? Что для этого нужно? Насколько это сложно? Или вообще, — а что там внутри этих самых Telegram-ботов, кроме команды «/start»?

А что там внутри?

Как перестать угадывать цены и довериться теории вероятностей. Хроника одного эксперимента

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

В прошлой своей статье я открыл для себя интересную, но неприглядную истину — что рынок это то место, где можно зарабатывать даже не зная будущего. Не угадывая направление — пойдёт вверх или вниз, не изображая из себя Вангу, а лишь правильно работая с вероятностями и размерами позиции. Если вы подбрасываете монетку и ставите 100% на орла — вы банкрот при первом же выпадении решки. Но если вы дробите капитал по формуле Келли или используете ребалансировку, вы можете зарабатывать даже при череде неудач.

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

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

Так вот, я решил принять этот вызов и самостоятельно, без Дмитрия Шалаева разобраться как похожая стратегия может вести себя на акциях Московской биржи.

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

Читать далее

Индикация смены раскладки клавиатуры в виде лампы с RGB-светодиодом для Gnome

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

Этот cказ о том, как мне надоело приглядываться к раскладке клавиатуры, и я решил проблему попутно освоив нестолько фичей в программировании и не только

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

Читать далее