Обновить
512K+

Python *

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

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

Как тестировать HTTP-запросы к внешним сервисам в Python-приложениях: requests-mock, pytest-httpx и FastAPI

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

Не всегда стоит патчить ответ от внешнего HTTP-сервиса через mocker.patch. В таких тестах приложение возвращает ожидаемый ответ, но важная часть логики остаётся непроверенной: какой URL собрал клиент, каким методом ушёл запрос, какое тело было отправлено и как обработался ответ внешнего сервиса. В статье показываю другой подход: мокать не метод клиента, а сам внешний HTTP-сервис. Для клиентов на requests используем requests-mock, для клиентов на httpx — pytest-httpx. Так тесты остаются быстрыми и без реальной сети, но при этом проходят через настоящий код клиента и позволяют проверять состояние фейкового внешнего сервиса, тем самым улучшая качество тестов.

Читать далее

MCP-серверы для Claude Code: как подключить Telegram, базы данных и всё что угодно

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

Когда я начал пользоваться Claude Code, у меня было ощущение, что я дал умному человеку доступ только к одной папке на компьютере. Он видит код, помогает с задачами — но не знает, что происходит снаружи. Нет доступа к чатам, к базе данных, к GitHub issues. Всё это приходилось копировать руками и вставлять в контекст.

Потом я узнал про MCP.

Читать далее

nORM — ORM, но есть одно «no»

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

Если вы работаете с базами данных и используете ORM, вы, вероятно, сталкивались с той же проблемой, что и я. ORM отлично подходят для отображения таблиц на объекты. Но они начинают мешать, когда запрос становится сложным: агрегации, тщательно продуманные JOIN’ы, формы отчетов, которые не соответствуют одной модели на таблицу. Вы боретесь с ORM, переходите на сырой SQL, а затем вручную пишете связующий код (маппинг).

Не каждый SELECT возвращает то, что подходит под одну ORM-модель. SQL - это лучший язык для доступа к данным. Лучшие ORM, которые я использовал, такие как Drizzle, побеждают, потому что они остаются близки к SQL. Я хотел пойти дальше: хранить SQL в системе контроля версий и генерировать из него типизированный Python.

Именно поэтому я создал nORM (no ORM - не ORM) и выпустил версию v0.1.0 на этой неделе (мой первый опенсорс проект).

Читать далее

Как собрать своё зеркало PyPI на nginx за вечер (и не зависеть от блокировок pypi.org)

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

Вчера pypi.org несколько часов был недоступен из российских сетей. Для кого-то это «подождём», а для CI/CD, прода и просто рабочего дня — это вставший pip install и красные сборки.

Причина системная: pypi.org и хранилище пакетов files.pythonhosted.org живут на CDN Fastly, у которого нет точек присутствия в России и доступ к которому уже не раз ограничивался. Вчерашняя недоступность — не первая и почти наверняка не последняя.

Хорошая новость: чтобы застраховаться, не нужно зеркалировать весь PyPI (это терабайты и постоянная синхронизация). Достаточно поднять лёгкий реверс-прокси на nginx. В этом гайде соберём такой с нуля — с кешированием и прозрачным переключением для pip.

Не хотите хостить сами? Есть уже готовое зеркало — pypi.depkit.ru. Оно работает на российских IP, имеет большой объём кеша под пакеты и отдаёт их очень быстро. Можно просто подставить его в index-url (как — в конце статьи) и пропустить всю настройку. Дальше — для тех, кому интересно поднять своё.

Читать далее

Как я сделал локальный RAG-сервис для SRE: ищем по документации, ранбукам и коду через Ollama

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

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

Но довольно быстро стало понятно, что с временными и ресурсными ограничениями лучше не пытаться написать маленький PagerDuty. Поэтому я сузил задачу до более реалистичного ядра: локального RAG-сервиса, который ищет по документации, ранбукам и коду, а затем передаёт найденный контекст в LLM.

Так появился llmortem — FastAPI-сервис, который можно подключить к OpenWebUI как OpenAI-compatible backend.

В статье расскажу, как устроена архитектура, почему я начал с BM25, зачем индексировать docstring’и и какие ограничения у такого подхода.

Читать далее

Торговля на отклонениях: почему мы вернулись к тесту Дики-Фуллера (ADF)

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

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

В прошлой статье про Гамма-флип я вскользь касался механики работы с отклонениями, но не раскрыл тему до конца.

В этой статье мы углубимся в стохастический анализ и рассмотрим методы определения стационарности временных рядов в реальном времени. Разберем математический аппарат расширенного теста Дики-Фуллера (ADF), причины его интеграции в ядро нашей торговой системы и особенности реализации на Python при работе с большими массивами данных.

Читать далее

Как конечные автоматы помогают сделать агента надежнее и при чем тут pydantic-graph?

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

Когда пишешь библиотеку, рано или поздно упираешься в движок. Не в красивый внешний интерфейс и не в обёртки, а в ту часть внутри, которая гоняет процесс. Пара флагов, цикл while, большой if посередине, и через месяц вы уже сами не помните, какие переходы там вообще возможны и почему одна из веток недостижима.

Недавно я пробовал собрать ровно такой движок и наткнулся на библиотеку, которая делает эту работу заметно аккуратнее. Называется pydantic-graph. Про неё почти не пишут, хотя на ней стоит весь pydantic-ai, агентский фреймворк от авторов Pydantic. Дальше я расскажу про неё на конкретном примере, харнессе надёжности для слабых языковых моделей.

Сразу оговорюсь про термин, потому что он сейчас на слуху. Харнесс это не только MCP, скиллы и память. Это все что заставляет модель работать хорошо как агент. Именно эту часть я и беру за основу. Но статья не столько про модели, сколько про сам подход и библиотеку. Основной посыл в том, что это интересный способ собрать движок для чего угодно, где есть состояния и переходы, и при этом не утонуть в собственном цикле.

Весь код оформлен в библиотеку и, вместе с бенчмарком, доступен на GitHub.

Читать далее

Pipeline в машинном обучении: как создавать сложные модели без боли и утечек данных

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

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

В статье разберём, как Pipeline в sklearn помогает собрать обработку данных и модель в единый воспроизводимый конвейер, снизить риск data leakage и упростить работу со сложными ML‑сценариями.

Читать гайд

rtk + context-mode поверх Serena + Semble: стоит ли нахлобучивать прокси-экономию токенов или это бред?

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

Тема экономии токенов сейчас дико популярна, и мы с ребятами в Гильдии AI-инженеров знатно её пообсуждали. Напомню краткую суть: там связка Serena (LSP) + Semble (векторные эмбеддинги) + Ripgrep (поиск координат) показала себя абсолютным топом для точечной навигации.

Но в комментариях и личке мне тут же начали советовать: «Нахлобучь сверху еще rtk для сжатия вывода терминала и context-mode для полнотекстового индекса репозитория! Тема прокси-экономии сейчас на пике хайпа, сэкономишь еще больше!». Я подумал за**ись.

И решил провести душный чек. Взял популярный open-source проект supermemory (~180 файлов, JS/TS) и замерил: действительно ли добавление rtk + context-mode дает реальный профит поверх моего текущего сетапа, или это просто карго-культ и оверхед, который утянет бюджет в минус?

Читать далее

AI-агент своими руками: память, браузер, задачи и навыки — без боли

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

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

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

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

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

Если коротко — хочу сделать не «революционный AGI», а понятный конструктор, на основе которого любой разработчик сможет собрать своего личного ассистента.

Читать далее

Почему Claude Code и Codex не ускоряют команду: у компании нет общей памяти

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

Компании уже оплачивают сотрудникам Claude Code, Cursor или Codex, но не всегда видят рост производительности.

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

Разбираю, зачем команде общая память, и при чём тут GBrain, OpenBrain и обычные Markdown-файлы.

Научиться работать с контекстом

Линейная регрессия на стероидах: Double Machine Learning для устранения смещений в данных

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

Любой аналитик знает, что самым надёжным способом проверки гипотез являются рандомизированные контролируемые эксперименты (RCT), или, как их называют в народе — A/B-тесты. На практике часто возникают ситуации, когда провести A/B-тест невозможно — в основном это происходит по этическим или техническим причинам. Однако бывают кейсы, когда рандомизация невозможна потому, что treatment-ом является определённое действие пользователя. Например, treatment-ом может быть оформление платной подписки или отмена бронирования на сервисе. Давайте назовём такой вид воздействия добровольным.

В русскоязычном пространстве, и в частности на Хабре, достаточно много статей, посвящённых таким методам Causal Inference, как DiD, PSM и Causal Impact. Тем не менее, к моему удивлению, практически нет статей, посвящённых методам на основе ортогонализации и regression adjustment, хотя, на мой взгляд, именно эти методы являются самыми удобными для оценки эффекта от добровольного treatment-а. Пришло время исправить это недоразумение и разобрать метод Double/Debiased Machine Learning (DML) и Partial Linear Regression для задач Causal Inference!

Читать далее

Реверс-инжиниринг карт Heroes of Might and Magic III: Horn of the Abyss + парсер на Python

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

Мне стало любопытно: смогу ли я распарсить карту HotA и написать такой парсер, который сможет быстро отвечать на вопросы вроде: «Где можно выучить заклинание “Городской портал”?», «Где найти артефакт, например, Чёрный шар?», «Есть ли в тюрьме герой Джелу?» и всё в таком духе.

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

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

Если вся эта археология неинтересна, можно просто промотать ближе к концу, взять готовый парсер и наконец узнать, где же на карте можно выучить «Городской портал».

Читать далее

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

Тебя нет в ответах ChatGPT. Пошаговый гайд как это починить за один вечер

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

Спроси ChatGPT или Claude про топовых экспертов в твоей нише и с большой вероятностью себя в ответе не найдёшь. Так было и у меня: руковожу AI-направлением в Т-Банке, выступаю, пишу, а модель об этом не знала, потому что меня не было в данных, по которым она отвечает. За вечер я это починил и собрал пошаговый гайд: как сделать сайт читаемым для агентов, попасть в Wikidata и Google Knowledge Graph. Без IT-бэкграунда, по шагам, с готовым репозиторием для форка.

Читать далее

Обновления GigaIDE за май 2026

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

Как обычно в начале месяца мы рассказываем вам о том, что изменилось в GigaIDE за прошедший месяц — май. Соответствующий обзор за апрель доступен здесь. Ниже — краткий обзор обновлений Pro-функциональности GigaIDE, который можно найти на нашем маркетплейсе.

Читать далее

Tilda и СБИС Presto: как мы синхронизируем остатки через стоп-лист, а не каталог

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

Как мы избавили общепит от часа ручной работы каждое утро: разобрали реальный кейс синхронизации стоп-листа из СБИС Presto в каталог на Tilda через CommerceML. Поток на Python/FastAPI, дебаунс через SHA-256, eventual consistency без очередей и грабли, на которые наступили в проде.

Решение и грабли

Мой личный джун. Часть 1. Учим агента писать код и пользоваться git

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

Привет, Хабр! Меня зовут Владимир и я стал немного более GPU-rich. А это значит, что пора сдуть пыль со старого проекта)

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

Читать далее

Как я отучил оракула молоть околесицу про ГОСТы: сказ о doc-rag без единого (почти) заморского слова

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

Дело моё — программы писать, а сходиться им положено с мастеровой грамотой: ГОСТами, СТО, спецификациями. Хочу спросить оракула в писарне про точный пункт — получаю складную околесицу со ссылками на то, чего никто не писал. Тогда я сложил себе doc-rag: местную снасть для извлечения премудрости из собственных свитков. Внутри — устройство, грабли, история про утраченный указатель и попытка рассказать всё это без единого заморского слова.

Распахнуть свиток

Параллельность RNN?

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

Смотрели итоги прошедшего ICLR? Меня заинтересовала довольно провокационная статья от Эплов — ParaRNN. Казалось бы, параллельность РНН — это их главный недостаток, благодаря которому их заменили трансформеры (в большинстве задач).

Читать далее

SmileLadder. Цикл «Память и мозг». Внимательно смотрим на что‑то и запоминаем?

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

Мы слышали про фотографическую память (вот интересная статья на habr) со школьных лет, знаем о существовании учеников, которым не надо было учить правила русского языка, а достаточно было просто один раз прочитать что‑то в книжке и они получали суперспособосность без ошибок писать диктанты. Мы видели в разных супершпионских кино как главный герой буквально бросив взгляд на какого‑то человека за доли секунд сопоставляет, копаясь в своей памяти, его образ с базой данных разыскиваемых преступников. И конечно многие помнят игру, в которой надо посмотрев на разложенные карточки, которые потом перевернут, искать пары.

Словом, мне стало интересно и в продолжении серии своих публикаций про память и мозг, решил поделится оценкой механики связи движения глаз и процесса запоминания. В том числе отправной точной стала недавняя статья в Nature Neuroscience

Читать далее