Обновить
512K+

Python *

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

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

Укрощаем зоопарк, или Тестируем с помощью собственных API-mocks

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

Как тестировать систему, если половина её компонентов — это «чёрные ящики» с уникальными протоколами, а стандартные API-mocks не справляются? С точки зрения готовых решений — тупик… 

Меня зовут Дмитрий, я AQA-инженер в ИнфоТеКС. Мы с командой столкнулись с этой проблемой и создали собственные API-mocks, которые не просто отвечают шаблонными сообщениями, а ведут себя как настоящие компоненты системы. В этой статье — наш путь от идеи до работающего решения, которое можно адаптировать под ваши задачи.

Читать далее

Ваш собес уже в базе

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

Привет, Habr.

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

Если чуть дольше повариться в рынке, становится видно, что вокруг собеседований уже давно существует отдельная инфраструктура. Речь про слитые вопросы, базы по компаниям, закрытые чаты, документы и каналы, где собирают и передают друг другу реальные этапы найма. Причём это уже давно не история про редкие “утечки” или единичные случаи. Для части рынка это вполне рабочий инструмент подготовки.

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

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

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

Читать далее

Я научил виртуальную камеру быть оператором: как устроен алгоритм face tracking для Shorts/Reels

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

В предыдущей статье я подробно рассказывал про свой "аниме завод" — пайплайн, который автоматически превращает эпизоды в готовые Shorts. Но внутри этой системы есть один особенно важный узел, который заслуживает отдельного разбора: виртуальная камера для автоматического кадрирования.

В этой статье я разберу не просто "функцию автокропа", а полноценный алгоритм виртуальной камеры для вертикального видео. Это тот случай, когда задача на первый взгляд кажется простой: есть горизонтальный ролик, нужно сделать 9:16, удержать человека в кадре и не превратить результат в дёрганый автофокус из начала 2010-х.

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

Читать далее

Анализ документов нейросетью с цитатами из источников: research-docs скилл для Claude Code

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

Закинул 30 PDF в папку — получил HTML-отчёт с ответами на вопросы и цитатами, привязанными к конкретному месту на странице документа. Research-docs — Claude Code скилл от LlamaIndex на базе парсера LiteParse. Разбираю как работает, какие форматы поддерживает, сколько стоит и где подвох с «никаких галлюцинаций».

Читать далее

От утилитарного Telegram-бота до полноценной PWA-панели управления VPS: эволюция проекта (v1.13.0 — v1.21.1)

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

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

В своих предыдущих статьях (раз, два, три) я рассказывал о зарождении идеи и первых шагах разработки Telegram-бота для управления серверами. То, что начиналось как простенький Python-скрипт для проверки uptime и перезагрузки парочки личных VPS, за последние месяцы обросло «мясом» и превратилось во взрослую экосистему с паттерном Agent-Server, своим WebUI, WAF и PWA.

Сегодня я хочу поделиться опытом, который я получил в процессе масштабного рефакторинга (от версии 1.13.0 до актуальной 1.21.x), рассказать о граблях, на которые я наступил при работе с памятью и сетью, и сравнить свой продукт с тем, что уже есть на рынке.

Сразу оговорюсь: хоть я и числюсь единственным разработчиком, проект создается не в вакууме. Во-первых, для ускорения развития продукта я активно использую инструменты ИИ. Сейчас это модно называть «вайбкодингом» (vibe-coding), но в моем случае это осознанный вайбкодинг. Я не перекладываю на нейросети проект целиком, а использую их для автоматизации рутины, сохраняя при этом полное понимание каждой строчки кода, его структуры и заложенной архитектуры. Во-вторых, у меня есть боевой товарищ — друг-тестировщик, который использует панель для своих повседневных задач, нещадно ломает новые фичи на проде, репортит баги и вносит огромный вклад в развитие. Именно благодаря такой живой обкатке инструмент получается действительно юзабельным. И, забегая вперед, вы тоже можете присоединиться к этому процессу!

Читать далее

Как я выбирал стек для SaaS-мониторинга сайтов

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

Как в одиночку собрать полноценный сервис мониторинга с проверками из 10 точек мира, алертами в Telegram/Slack и собственным агентом? Делюсь личным опытом выбора стека: почему FastAPI выиграл у Django, как TimescaleDB справляется с миллионами строк логов и зачем писать агент на Go, если основной код на Python. Только практика, архитектурные решения и честный расчет стоимости инфраструктуры в €11/мес.

Изучить стек

Как мы создали новый тестовый фреймворк, адаптируемый к росту проектов

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

Наш тестовый фреймворк перестал масштабироваться с ростом сервисов. Мы переработали архитектуру, ввели разделение на слои, упростили масштабирование автотестов и подготовили фреймворк к интеграции SDK и использованию AI

Читать далее

Мультиагентная система без LangChain: почему абстракции ломаются и как строить production на чистом Python

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

LangChain обещает: переключите модель одной строкой, подключите RAG за две. У меня в production мультиагентная система с RAG, CRM и тремя мессенджерами — и я построил её без LangChain. Под катом — почему абстракции ломаются, сколько стоит фоллбек на YandexGPT и при чём тут медведь с удочкой.

Читать далее

Обновления функциональности GigaIDE за март 2026

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

Закончился еще один месяц, а значит нам пора поделиться с Вами новостями о развитии GigaIDE. Ниже краткий обзор обновлений PRO-функционала GigaIDE, которые можно найти на нашем маркетплейсе. Обзор инкремента за февраль доступен по данной ссылке.

Читать далее

Один скилл, четыре модели — что может пойти не так

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

На GitHub лежат сотни AI-скиллов. Скилл для code review, скилл для дебага, скилл для обработки PDF, скилл для анализа безопасности. Установил в Cursor или Claude Code — и твой AI-ассистент стал умнее. Звучит как npm install: поставил пакет, он работает.

Но скилл — не пакет. Это текстовый файл с инструкциями, который читает языковая модель. А модели читают по-разному.

Представьте: вы написали подробное ТЗ и отдали его четырём специалистам. Все четверо — профессионалы, все мотивированы, все прочитали ТЗ целиком. Результат будет разный. Каждый делает как его учили, как привык, какой опыт накопил. И всегда есть шанс, что кто-то начнёт не с того конца или вообще решит ответить устно вместо того, чтобы сделать.

Модель = работник. Скилл = ТЗ. Я взял одно ТЗ, отдал четырём работникам, и каждый выполнял его 120 раз. Вот что получилось.

Забегая вперёд: скиллы работают. Но не так, как обещают. И самый интересный результат оказался не там, где я ожидал.

Смотреть результаты

Как я уместил весь MLOps-пайплайн в 10 строк

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

В последнее время я часто работал с разными ML-проектами в GitLab. В каждом был свой .gitlab-ci.yml, своя обвязка вокруг MLFlow, своя регистрация и валидация модели. Со временем я понял, что MLOps-пайплайн во всех проектах очень похож, а при работе с новыми копипаста размножается быстрее кроликов. Ну и тут уже хочешь не хочешь, но идея сделать общий шаблон напрашивается. Однако будем честны, обычный template для CI — это круто, но хочется чего-то гибкого, декларативного и красивого. Для достижения этих целей GitLab уже давно предлагает переходить на CI/CD компоненты. В результате я хотел видеть 10 строк YAML, которые будут выдавать полноценный пайплайн с валидацией данных, обучением, quality gates и регистрацией модели.

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

Сам компонент.

Читать далее

Создание и тестирование пенсионных инвестиционных стратегий с помощью Okama

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

Если вы когда-нибудь задумывались о том, на сколько лет хватит ваших накоплений после выхода на пенсию — эта статья для вас. Мы разберём, как с помощью open-source библиотеки okama для Python можно моделировать и тестировать различные стратегии снятия денег с инвестиционного портфеля. От классического «правила 4%» до продвинутых адаптивных стратегий — всё с примерами кода.

Читать далее

Укрощаем рыночный хаос: Пишем Liquid Neural Network (LNN) на PyTorch для алготрейдинга

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

Если вы когда-нибудь пытались натравить классическую LSTM на минутные свечи волатильных активов, вы знаете эту боль. Сначала Loss красиво падает на трейне, вы предвкушаете покупку острова, а на тесте модель превращается в тыкву. Она либо предсказывает скользящую среднюю со сдвигом на один шаг, либо упирается в «стену» Loss = 0.693 (то есть −ln(0.5)), сводя всё к подбрасыванию монетки.

Проблема не в вас. Проблема в том, что рекуррентные сети (RNN, LSTM, GRU) живут в дискретном времени. Для них шаг между 10:00 и 10:01 абсолютно идентичен шагу между пятницей и утром понедельника. Они не умеют сжимать и растягивать восприятие времени, когда волатильность взрывается.

В этой статье мы отойдем от мейнстримных архитектур и напишем с нуля Liquid Neural Network (Жидкую Нейронную Сеть). Мы заставим время течь непрерывно, используя численные методы дифференциальных уравнений прямо внутри PyTorch-графа, и посмотрим, как она вытаскивает скрытый макро-тренд из абсолютного рыночного хаоса.

Теория без воды: Что делает сеть «жидкой»?

Концепция Liquid Time-Constant Networks была представлена исследователями из Лаборатории искусственного интеллекта MIT (CSAIL). Их изначальная цель — управление дронами и автопилотами в непредсказуемой среде. Но финансовые рынки — это та же турбулентность, только выраженная в долларах , рублях и других валютах.

В классической RNN скрытое состояние h_t обновляется по дискретным шагам:

h_t = \tanh(W_{in} x_t + W_h h_{t-1} + b)

В Liquid Network мы отказываемся от дискретности. Состояние нейрона h(t) — это непрерывная переменная, описываемая обыкновенным дифференциальным уравнением (ОДУ):

Читать далее

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

Краткий справочник про внимания (self-attention, cross-attention, multi-head attention)

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

Механизм внимания (Attention) - это метод в искусственном интеллекте, который позволяет нейросети динамически определять, какие части входных данных наиболее важны для текущей задачи. Он работает через вычисление весов важности для разных элементов входа: более важные элементы получают больший вес, а менее важные - меньший. Затем модель формирует взвешенную сумму представлений, создавая новый контекстный вектор.

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

Читать далее

Аугментация ограничивающих боксов в детекции: форматы, `BboxParams` и типичные ошибки

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

Когда аугментации в детекции «не работают», проблема часто не в модели, а в bbox после преобразований.

Неверный coord_format, перепутанные нормализованные и абсолютные координаты, агрессивные кропы, пустые боксы после фильтрации — всё это не ломает код, но quietly ломает обучение.

В статье разбираю:

— какие форматы bbox поддерживает Albumentations — как правильно настраивать A.BboxParams — когда использовать min_area и min_visibility — почему обычный RandomCrop часто плохая идея для detection — и где пайплайн чаще всего ломается на практике

Если вы работаете с COCO, YOLO, pascal_voc или просто хотите перестать обучать модель на испорченной разметке — этот материал для вас.

Читать далее

Как мы перестали писать промпты и превратили ИИ в аналоговый синтезатор через PyTorch Hooks

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

Спойлер: Никаких банальных ИИ-оберток, где текст конвертируется в звук через API. Только хардкорная хирургия нейросетей, кросс-модальные мосты и перехват мыслей LLM в реальном времени.

За последний год Hugging Face превратился в конвейер одинаковых проектов: берем Llama/Gemma, прикручиваем к ней интерфейс на Gradio, называем это стартапом. Мы для нашего виртуального музыкального артиста Livadies решили пойти другим путем. Мы задались вопросом: как звучит чистая мысль нейросети, если не переводить ее в текст? И как звучит математическая геометрия доисторического камня или кожи рептилии?

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

Читать далее

Возвращаем к жизни связку openclaw + claude

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

Здравствуйте.

Думаю многие видели, что буквально только что, claude решили резко поменять политику и отключить работу своего решения в сторонних приложениях. То есть даже подписчики их платной подписки за 100 usd, среди которых был и я, теперь не могут использовать удобные безлимитные(в рамках лимитов) решения.

В основном это было сделано из-за безумно популярного агентского решения openclaw, которое в связке с claude sonnet/opus просто идеально. Работало это так. Подключаешься через oauth токен, для claude code и используешь все возможности подписки.

Теперь же claude выдает ошибку LLM request rejected. Они конечно на сайте выложили 100 usd, как компенсацию всем тем людям, что теперь будут вынуждены платить огромные суммы за extra usage, но это все равно не решение.

Идея

Так как работать, так невозможно, мною было решено реализовать прокси сервер для подключения к апи claude через браузерную сессию и сделать для него апи в совместимом openai формате. Чтобы легко можно было интегрировать, как сторонний провайдер в openclaw.

Реализация была поручена одному из лучших моих агентов, по имени Гарри c наибольшим кол-вом накопленного опыта по мере множества моих проектов и работ. Да пока что за их 100 usd бонусный лимит extra-usage.

Читать далее

obabot: пишем бота один раз — запускаем в Telegram и Max

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

Max запустили как полноценную альтернативу Telegram для российского рынка, с открытым Bot API. Разработчики оказались перед классической дилеммой: поддерживать двойную кодовую базу или выбрать одну платформу, теряя аудиторию второй.

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

Библиотека obabot предлагает другой путь: один код — два мессенджера.

Один Код - Два Бота

Вспоминаем молодость: как делались скриншоты на старых кнопочных Nokia

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

Возможность делать скриншот — это базовый минимум, который есть во всех современных смартфонах. Даже у героев вечных споров, iOS и Android используются похожие комбинации «Громкость + Кнопка питания». Разве что на iOS используется «+», а в Android — «-».

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

Тем не менее, решения были. В этой статье я проведу небольшой экскурс в историю программ для скриншотов с телефона, кратко расскажу про протокол Phonet и, возможно, вызову легкие приступы ностальгии.

У меня был Nokia 6303 classic — стильный телефон с металлической крышкой на платформе Nokia Series 40 (S40). Мой путь с этим телефоном разошелся, но спустя почти полтора десятка лет я решил, что хочу разобраться в технологиях, которые использовал, будучи школьником. 

Я нашел в продаже б/у Nokia 6303 classic и погрузился в тему.

Читать далее

Иллюзия логики: как я доказал, что LLM-агенты игнорируют факты, и почему Chain-of-Thought делает только хуже

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

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

Индустрия пытается лечить это костылями: наращивает контекст до миллионов токенов или заставляет модель «подумать шаг за шагом» (Chain-of-Thought). Я решил проверить эту архитектуру на прочность. Собрал локальный измерительный стенд LOCK-R, вооружился Теоремой Байеса и поймал современные LLM за руку.

В этой статье я математически докажу, почему одиночные агенты структурно уязвимы, как токены размышлений заставляют их врать самим себе еще искуснее, и почему паттерн «Слепого Судьи» - это единственный способ вылечить AI от предвзятости. Тестируем на локальной Qwen-9B и фронтирной GPT-5.4.

Читать далее