Обновить
512K+

Python *

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

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

Локальный инструмент для поиска закупок ЕИС по 44-ФЗ и 223-ФЗ: ключевые слова, фильтры и выгрузка в Excel

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

Смотрю на этот текст и понимаю, что все пользуются ИИ, просто кто-то это хорошо скрывает.

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

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

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

ИИ с такой первичной сортировкой может помочь. Но для этого ему нужно дать нормальные данные: таблицу, где есть номер закупки, заказчик, регион, наименование, цена, сроки, ОКПД2, ссылка и дополнительные поля.

Мне был нужен не просто “поиск на сайте”, а программа, которая создаёт Excel для последующей загрузки в ИИ и ручного анализа.

Так появилась идея сделать локальную программу, которая:

Читать далее

Пять продуктов в одном FastAPI-монолите: HTMX вместо React, грабли Telegram Mini App и биллинг на Stars

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

TL;DR: Привет, Хабр. С 2 по 12 мая я в режиме нон-стоп писал Doday — кросс-платформенный todo: web, Telegram Mini App, чат-бот. Получилось 317 коммитов, ~40 000 строк кода, 633 теста, 38 модулей в app/. Стек — FastAPI + HTMX + Alpine.js + Tailwind, без единой строчки React. Писал в паре с Claude Code, и не скрываю этого — расскажу как именно и какая часть кода реально моя голова, а какая — клавиатура. Грабли, цифры, ссылки внутри.

Читать далее

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

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

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

Читать далее

Как я довёл расходы на LLM до нуля: почему на бесплатных тарифах параллелизм — враг

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

Это продолжение первой статьи про Briefka — там я описывал самого бота и базовую архитектуру каскада LLM-провайдеров. За прошедшие 4 месяца бот органически вырос с 59 до 84 пользователей, и именно на этом масштабе бесплатный каскад начал срываться на платного провайдера. Расскажу, почему так вышло и как я вернул расходы к нулю — с цифрами и кодом.

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

Читать далее

Как одна кривая регулярка может «положить» ваш сервер: разбираем уязвимость ReDoS

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

Алерты кричат о 100% загрузке CPU, API лежит, но сетевой трафик на нуле? Знакомьтесь, это ReDoS — атака, при которой безобидная строка из 30 символов и одна неоптимальная регулярка заставляют сервер уйти в вычисления на десятилетия.

В этой статье разбираем «катастрофического возврата» (backtracking) под капотом Python, пишем эксплойт для зависания собственного процессора и разбираем правила, которые спасут ваш бэкенд.

Читать далее

Как дообучить LLM. Рассказываю шаг за шагом

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

В этой статье я шаг за шагом расскажу, как дообучить LLM под свою задачу. В качестве примера возьму open-source модель Qwen2.5-0.5B и дообучу её извлекать информацию из текста в формате JSON по заданной схеме. Сначала дам короткую вводную по этапам обучения языковых моделей, а затем перейдём к практике: подготовим данные, настроим LoRA, обучим модель в Colab и сравним метрики до и после — заодно проверим, насколько сильно модель забывает прежние знания. Рассказ будет сопровождаться кодом на Python.

🔥 Начинаем 🔥

Локальная Gemma 4 на MacBook читает графики и таблицы — и врёт красивее, чем говорит правду

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

MacBook M3, 16 ГБ, никакого облака. Поставил свежую Gemma 4, написал инструмент: кидаешь картинку с графиком или таблицей — получаешь CSV. Три кейса из семи — идеально. На остальных модель начала врать, причём аккуратнее, чем говорила правду: вместо рваных реальных чисел подсовывала гладкие выдуманные. Разобрал по шагам — сетап на маке, грабли с llama.cpp, сам инструмент — и собрал карту, где локальному зрению можно верить, а где оно тихо галлюцинирует

Читать далее

Crashprobe: перехват ошибок Python в синхронном коде и потоках

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

Привет, Хабр! Меня зовут Андрей, как и многие, я уставал от красных сообщений в консоли, где не видно значений переменных. Приходилось ставить print(), гуглить – терял кучу времени. Поэтому я написал crashprobe – библиотеку, которая делает отладку простой и наглядной.

Читать далее

Разбираемся в ML без воды: от базы до Attention. Часть 9: Дерево решений

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

В восьмой части мы завершили изучение SVM и разобрались с Kernel Trick. Теперь пришло время познакомиться с деревьями решений — одним из самых популярных и интуитивно понятных алгоритмов машинного обучения.

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

Читать далее

Топ-10 вопросов на собеседовании по FastAPI

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

FastAPI окончательно закрепился в стеке Python-разработчиков, а значит, на собеседованиях вас точно будут гонять по корутинам, Pydantic и Dependency Injection. Я собрал 10 реальных вопросов (включая коварные подвохи от сеньоров!), которые сейчас задают джунам и мидлам. Никакой сухой теории из доков — только практика. Го под кат — проверим, насколько вы готовы к следующему интервью!

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

Если вы работаете с базами данных и используете 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.4K

Вчера 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.8K

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

Но довольно быстро стало понятно, что с временными и ресурсными ограничениями лучше не пытаться написать маленький 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», а понятный конструктор, на основе которого любой разработчик сможет собрать своего личного ассистента.

Читать далее