Обновить
512K+

Python *

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

316,83
Рейтинг
Сначала показывать
Порог рейтинга

Новый релиз django-modern-rest@0.16.0

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

Скорость

  • PydanticFastSerializer.deserialize в x2.2 быстрее

  • PydanticFastSerializer.serialize в x1.33 быстрее

  • Новый BodyMsgspec компонент в x1.6 быстрее чем Body

  • Новый способ сериализации объектов через MsgspecSerializer и msgspec.Struct, gc=False в x2 раза быстрее

  • Content negotiation в x1.2 быстрее для точных заголовков

  • Content negotiation в x65 быстрее для сложных Accept заголовков

Дефолтные значения для компонентов

Теперь можно указывать дефолты для всех компонентов. Мы корректно отобразим их в OpenAPI спецификации:

class ProductController(Controller[MsgspecSerializer]):
    def post(
        self,
        parsed_body: Body[ProductFilters | None] = None,
        parsed_query: Query[Pagination] = DEFAULT_PAGINATION,
    ) -> dict[str, str | int]: ...

Значения по-умолчанию

Готовые вьюхи для аутентификации

Например, чтобы получить Opaque Token по логину и паролю, достаточно всего лишь:

from dmr.security.token import concrete_views

path(
    'auth/',
    concrete_views.ObtainTokenSyncController.as_view(
        serializer=PydanticFastSerializer,
    ),
)

Пагинация через курсор

Теперь мы поддерживаем два типа пагинации: LIMIT + OFFSET и cursor:

paginator = CursorPaginator(
    Entry.objects.order_by('rank', 'name'),
    per_page=parsed_query.limit,
)
page = paginator.page(parsed_query.cursor)  # or: await paginator.apage(...)
return CursorPaginated(next_cursor=page.next_cursor, per_page=..., page=[...])

Cursor pagination

Extras

Создавайте свои контроллеры со своими настройками, мы добавили типизированное поле extras в @modify и @validate:

modify: Final = ModifyEndpoint(SmartResponse)

class APIController(Controller[PydanticFastSerializer]):
    extras = SmartResponse()

    @modify(extras=SmartResponse(response_text='from endpoint'))
    def post(self) -> str:
        return SmartResponse.of(self)

Extras

OpenAPI теперь умеет добавлять любые x- значения

Поддерживаем любые кастомные значения:

class UserController(Controller[MsgspecSerializer]):
    x_extensions: ClassVar = {'x-owner': 'users-team'}  # on the path item

    @modify(x_extensions={'x-rate-limit': 100})  # on the operation
    def post(self, parsed_body: Body[UserModel]) -> UserModel: ...

OpenAPI

Поддержка library-skills

Установите наши скиллы одной командой:

uvx library-skills --claude   # -> .agents/skills/dmr, .claude/skills/...

Делаем разработку с ИИ-агентами - проще!

Буду рад обратной связи в комментах! Какая фича ваша любимая? Чего вам не хватает для следующих релизов?

Теги:
+3
Комментарии0

Представлен открытый проект proxy-scraper для выявления в сети открытых сервисов прокси, которые работают штатно и более менее безопасно.

«Большинство списков бесплатных прокси на 95% состоят из нерабочих адресов, а значительная часть оставшихся — это либо „ловушки“ (honeypots), либо прокси, внедряющие скрипты в загружаемые вами страницы. Инструмент proxy‑scraper собирает публичные прокси (HTTP, SOCKS4 и SOCKS5) из более чем 700 источников и сохраняет только те, что успешно проходят все проверки. При каждом запуске программа анализирует эффективность источников, а полученный результат может преобразовать в единый ротируемый прокси‑адрес. В цифрах: за одни сутки было проверено 3,6 миллиона бесплатных прокси — работоспособными оказались 1,1%, причём более половины из тех, что ответили на первый запрос, не прошли проверку повторным запросом», — пояснил создатель проекта.

Теги:
+7
Комментарии0

Ведомости КМД как данные: что автоматизировать на Python и pandas

TL;DR: Ведомости КМД удобно обрабатывать в Python и pandas: привести выгрузку к плоской таблице, проверить данные, посчитать суммы и распределения, собрать отчёт или дашборд. Главное — не пропускать проверки.

Ведомость — не просто таблица веса. В ней детали, сборки, марки, комплекты документации. Пока объём небольшой, хватает Excel. Когда ведомостей много и структура выгрузок различается, повторяющиеся проверки превращаются в отдельный процесс.

КМД — это деталировочные чертежи металлоконструкций. Ведомости в их составе — таблицы с элементами, деталями, марками, количеством и весом. Именно такие таблицы удобно обрабатывать в Python.

Почему выгрузка не готова к анализу

  • многоуровневые заголовки и объединённые ячейки;

  • несколько листов с разной структурой;

  • разные названия одних и тех же полей;

  • числа и текст в одном столбце;

  • пустые значения, дубликаты, служебные итоги;

  • разные единицы измерения.

Даже суммарный вес по типам элементов начинается с выяснения, что в таблице и как читать поля. Процесс лучше делить: Excel/CSV → подготовка → проверка → расчёты → отчёт.

Подготовка в pandas

pandas читает Excel/CSV, преобразует столбцы, фильтрует, группирует и считает. Если таблица уже плоская:

import pandas as pd
df = pd.read_excel("ведомость.xlsx")
df["Вес"] = pd.to_numeric(df["Вес"], errors="coerce")
summary = (df.dropna(subset=["Тип элемента", "Вес"])
             .groupby("Тип элемента", as_index=False)["Вес"]
             .sum()
             .sort_values("Вес", ascending=False))
print(summary)

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

Проверки важнее расчёта

Число получить легко. Важнее понять, можно ли ему доверять. Проверяйте:

  • обязательные поля;

  • числовые столбцы;

  • попадание заголовков и итогов в расчёт;

  • неожиданные дубликаты;

  • сходимость с контрольными суммами;

  • единицы измерения.

В pandas это делается коротко:

print(df[["Тип элемента", "Вес"]].isna().sum())
print(df.duplicated(subset=["Марка", "Тип элемента"]).sum())

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

Что анализировать

  • суммарный вес и количество позиций;

  • распределение веса по типам элементов;

  • сравнение сборок и комплектов;

  • повторяющиеся детали;

  • необычно тяжёлые/лёгкие позиции;

  • таблицы и графики для отчёта.

Для визуализации — Plotly, для интерактивного дашборда — Streamlit. Но график лишь помогает заметить необычное значение, а не объясняет его причину.

Повторяемый сценарий

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

Что разрабатываем

Готовим курс «Мастер ведомостей» о Python и pandas для ведомостей КМД: неидеальные Excel/CSV, проверка данных, показатели, анализ сборок, визуализация, простые дашборды. Программа уточняется; будут практика, Jupyter Notebook, код и шаблоны.

Оставить заявку на уведомление о старте можно на странице курса.

Вопросы к сообществу

  1. Какие операции с ведомостями вы чаще всего делаете вручную?

  2. Какие проверки хотели бы сделать повторяемыми?

  3. В каком виде удобнее получать результат: таблица, Excel-отчёт, графики, дашборд?

Расскажите в комментариях — это поможет выбрать сценарии для курса.

Теги:
+4
Комментарии0

Изолируем зависимости: как создать виртуальное окружение в Python

Когда пишешь код на Python, рано или поздно наступает момент, что один проект начнет ломать другой. Установили новую библиотеку, и вдруг скрипт, который вчера работал, падает с ошибкой. Знакомо? Причина обычно одна — конфликт зависимостей. Все пакеты свалены в один системный Python, версии пересекаются, и что-то обязательно отваливается.

Решение — виртуальное окружение. Это отдельная песочница для проекта: свои библиотеки, свой Python, никакого пересечения с соседями.

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

  • Виртуальное окружение vs виртуальная машина. Первое — это просто отдельная папка с пакетами, второе — целая ОС. Хотя некоторые новички часто путают, и потом удивляются, почему venv весит пару мегабайт.

  • venv, virtualenv, pipenv, poetry, conda. Это пять инструментов, которые решают похожие задачи, но по-разному. Для большинства проектов хватает встроенного venv — он уже есть в Python с версии 3.3, и ничего ставить не надо.

  • Активация. А это самая частая точка спотыкания. Команды различаются для Windows, Linux и macOS, а PowerShell вообще блокирует скрипты по умолчанию. source .venv/bin/activate против .venv\Scripts\activate — и это только начало.

  • requirements.txt. Важно помнить, что папку окружения нельзя копировать между машинами, так как она привязана к ОС и архитектуре. Вместо этого фиксируем список пакетов и разворачиваем его одной командой pip install -r requirements.txt.

  • Git и .gitignore. Виртуальное окружение в репозиторий не кладут — только код и список зависимостей.

Чтобы пройти весь путь по шагам — от создания первой папки до деплоя на сервере через systemd и Gunicorn — читайте подробный гайд на сайте Рег.облака.

Теги:
+8
Комментарии0

Python в VS Code не работает? Разбираем настройку по шагам

Если вы пишете код на Python, рано или поздно встает вопрос: в чем его писать? Вариантов масса: от блокнота до тяжелых IDE вроде PyCharm. Visual Studio Code — отличный компромисс — он легкий, но при этом умеет почти всё, что нужно для комфортной работы. Но сложность в том, что из коробки он бесполезен, пока не настроишь интерпретатор, расширения и окружение. И вот тут начинается самое интересное.

Вот с чего стоит начать и что стоит разобрать, если вы только садитесь за настройку:

  • Интерпретатор. VS Code хранит и редактирует файлы, но код выполняет отдельная программа. Пока вы явно не укажете, какой Python использовать, редактор будет гадать и часто ошибаться.

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

  • Расширения. Pylance отвечает за автодополнение, Python Debugger — за отладку по шагам, Ruff — за линтинг и форматирование. Но если поставить всё сразу, инструменты начнут конфликтовать между собой.

  • Отладка вместо print(). Точки остановки и панель переменных позволяют увидеть, что реально происходит в коде, вместо того чтобы гадать, где закралась ошибка.

Каждый из этих пунктов — отдельная история с нюансами под Windows, macOS и Linux. Где-то команда называется python, где-то python3. Где-то нужно вручную добавить PATH, где-то переустановить Python из официального пакета.

Если хотите пройти весь путь по шагам: от установки редактора до запуска первого скрипта с отладкой, читайте полное руководство на сайте Рег.облака.

Теги:
+4
Комментарии0

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

Теги:
+4
Комментарии0

Модель уровня opus 5 бесплатно. swe-2 в devin, но есть нюансыНа выходных многие ломанулись тестировать SWE-2: до 10 октября он бесплатен в Devin Desktop и CLI. Модель интересная: дообученная от Kimi K3, аккуратно правит код, хорошо держит фронт и умеет много агентской рутины. Плюс сразу подхватывает AGENTS.md, skills, MCP и привычные CLI-интеграции. Целей нет, зато есть /loop

Нюанс №1
У части пользователей незаметно включается Adaptive, а по умолчанию рядом маячит Fusion. В итоге ты думаешь, что работаешь на бесплатном SWE-2, а квота уезжает на роутер или lead-модель.В Fusion SWE-2 может быть только допом, а Fable/Astra/Sol платной основой. Дневная квота много у кого горит
Нюанс №2
Бесплатно не значит безлимитно по скорости. По ощущениям, после 5–6 параллельных сессий TPS режется примерно со 100 до 70, в пик может падать до 30. Плюс периодически прилетают 429, и API притормаживает
Чтобы не платить за соседей:

devin --model swe-2-high
/model swe-2-high
/session-stats

В конфиге закрепить (например) %APPDATA%\devin\config.json,

{
  "agent": {
    "model": "swe-2-high"
  }
}

Ну а /fusion, /model adaptive и /handoff не трогать. В статистике должна быть одна модель SWE-2, без Lead/Sidekick, и quota не должна уменьшаться.

P.S. Низкий порог входа по почте и слабая привязка к устройству сделали промо очень удобным для мультиаккаунтинга. Те 1 аккаунт за 20$ на почту + vps + cliproxyapi =>десятки индусов абузят через сабагентов. А еще конечно это по сути бесплатная мощная модель для любых ваших ИИ продуктов

P.P.S. 100% включат недельные квоты для free tier, но попробуй успеть пока не разобрали

Теги:
+3
Комментарии2

Решил проверить, что обо мне знает Google. И знает он достаточно. Я есть и в SEO, и в GEO выдаче.

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

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

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

Есть смысл в маркетинге для разрабов? Что думаете?

Теги:
-2
Комментарии0

PhishIntel, инструмент WEB‑разведки для сбора публичных данных, обновлен.

Он стал более юзерфрендли, добавлено интерактивное меню, и рендеринг человекочитаемого отчета. Кроме того, запускается одной командой, и не требует никаких дополнительных зависимостей. Инструмент написан на чистом Python c щепоткой Go.

В основной отчет по проверке web-ресурса входит:

  • email-адреса;

  • телефоны по российским и американским форматам;

  • телефоны из HTML-полей tel, phone, telephone, mobile и аналогов;

  • адреса из специализированных полей и строк с явными адресными признаками;

  • источники только тех страниц, где найдены контакты;

  • внешние домены;

  • внешние API endpoint-ы;

  • внешние JavaScript-файлы;

  • агрегированные счётчики обхода;

  • DNS, IP и reverse DNS;

  • RDAP и WHOIS;

  • TLS-сертификат;

  • цепочка перенаправлений;

  • найденные поддомены;

  • локальная история DNS/TLS;

  • ограниченное сканирование TCP-портов исходного домена и определение технологий;

  • технологии, используемые на сайте

Репозиторий проекта: https://github.com/Bednyakov/PhishIntel

Теги:
0
Комментарии0

Открытый проект KeyForge3D позволяет преобразовать фотографию ключа в файл для 3D-печати. Приложение выделяет контур ключа, добавляет ему толщину и сохраняет результат в STL для дальнейшей печати. Система работает локально без нейросетей и подписок — внутри обычный OpenCV.

Теги:
0
Комментарии1

Представлен открытый ИИ‑инструмент для создания диаграмм Diagram Design. Решение не требует ни этапа сборки, ни JavaScript, ни внешних изображений. В проекте есть 39 типов схем для Claude Code, Codex, Factory Droid, Pi и других платформ, поддерживающих Agent Skills. Автономный код HTML + SVG.

«Никаких теней. Никакой неряшливости, свойственной Mermaid. Семантические паттерны описывают поведение отдельно от компоновки, поэтому такие элементы, как очередь, трассировка политик или граница доверия, могут использовать ближайший существующий тип без необходимости создавать новые. Статичный HTML используется по умолчанию; для последовательных пояснений доступна опциональная анимация. Инструмент также позволяет перерисовывать схемы из форматов draw.io, Mermaid или Excalidraw, задавая нужный формат, размер и уровень детализации. Никакой Figma. Никаких стандартных блоков со скруглёнными углами. Никаких 30-минутных сеансов подбора цветов», — пояснил автор решения.

Теги:
+1
Комментарии0

Я написал, что система умеет откатывать действия агента. Потом открыл код

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

Код откатывал один шаг по идентификатору. Никакого прохода назад, ни остановки на необратимом. До публикации оставалось несколько часов.

Функцию я написал — вместо того чтобы смягчить формулировку. И на первом же запуске поймал две вещи.

Порядок прохода я задал сортировкой по времени — и получил неправильный порядок. Отметки хранятся с точностью до секунды, несколько шагов делят одну и ту же, а стабильная сортировка при равных ключах сохраняет исходный порядок. При reverse=True часть шагов шла вперёд. Порядок графа задаёт последовательность выполнения, а не строка времени; время решает только, попал ли шаг в окно.

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

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

Двумя неделями раньше — ошибка того же рода

Журнал, который проверяет только автор, ничего не доказывает. Поэтому верификатор написан на другом языке: пишет Python, проверяет TypeScript.

На тесте, где JS-верификатор читает журнал, созданный Python, выяснилось, что json.dumps сериализует 0.0 как "0.0", а JSON.stringify то же число — как "0". Строки разные, хеши разные, одна и та же честная запись хешируется по-разному.

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

def _jcs_numbers(value: Any) -> Any:
    """Приводит числа к форме, одинаковой в Python и JavaScript."""
    if isinstance(value, bool):
        return value
    if isinstance(value, float) and value.is_integer():
        return int(value)

Проверка на bool не паранойя: в Python True — экземпляр int, без этой ветки булево уехало бы в числовую нормализацию.

Писал бы верификатор я сам, на том же Python, — ошибка дожила бы до первого спора с клиентом.

Функция, которой намеренно нет

Проект отдаёт наружу MCP-сервер, JSON-API и ноду n8n. Все три умеют выполнять шаги, спрашивать разрешение и читать журнал. Ни один не умеет подтверждать.

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

Что вынес

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

И второе, менее приятное: между «я написал это в описании» и «это работает» расстояние больше, чем кажется. Я поймал у себя обещанную и несуществующую функцию за несколько часов до анонса — просто потому, что решил открыть файл и прочитать, что там написано.

Альфа, 115 тестов, ноль зависимостей, AGPL-3.0: github.com/oleg-vdv/kepil. Верификатор отдельно и под MIT: agent-trace.

Теги:
-1
Комментарии0

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

Теги:
0
Комментарии0

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

Представлен открытый проект No AI Slop, который чистит ИИ-тексты от 20+ типичных ИИ-штампов. Под зачистку попадают «это не X, это Y», «будущее уже здесь», но и излишний пафос и ссылки на безымянных экспертов. Скилл даёт модели правила редактирования: сохранять авторский юмор, лексику и ритм, а после правок объяснять, что поменялось. Можно отдельно попросить найти штампы в тексте.

Теги:
0
Комментарии1

Все видеозаписи конференции EuroPython 2026, проходившей в Кракове (Польша) с 13 по 19 июля 2026 года, теперь доступны онлайн для всех пользователей (включая фото). Также опубликован краткий обзор мероприятия от организаторов.

Теги:
+1
Комментарии0

Ребят, возможно пригодится тем кто пользуется trusttunnel vpn на компе. Надоело перебирать bat'ники подумал, сейчас с клодом на питоне можно что угодно сделать. Cобрал небольшую программку, она запускается из любой директории (с правами админа, иначе vpn не подключится). В папке необходимы файлы самого сервиса trasttunnel и конфиги (в инфо есть как их надо обозвать). Удобно что видно когда впн подключился, проверяет сразу ваше местоположение и ip. Есть переключение на англ язык. Возможность менять сервера. Виден лог подключения. Сделал для себя, но решил поделиться. Выложил по совету товарищей на github - https://github.com/mobitop/trusttunnel
Хотя по мне - просто хотел поделиться. Могу залить исходный код, только не знаю как :) Всем добра!

Теги:
-2
Комментарии2

В начале года я опубликовал статью Прививаем машине музыкальный вкус: фильтруем плейлист на основе предпочтений

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

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

  • использовать только аудиоданные

  • использовать только CPU

  • уверенно меньше 20% ложных не\срабатываний для обеих классификаций - exclude_disliked and include_liked

Над решением успели поработать opus 4.8 (основная архитектура решения), fable 5 (ревью архитектуры; да-да, надо было наоборот, но архитектура была собрана до выхода fable) glm-5.2 (прикладные планы реализации задач) и 5.3 (прикладные планы+доведение пайплайна до рабочего состояния)

По архитектуре железный друг: 

  • предложил тот же подход, что я использовал, но выкинул polars, вместо которого решил использовать duckdb. Когда он понял, что его не получится нормально развернуть на nfs, мы сошлись на хранении фич файлами parquet, а duckdb-базу билдить локально при запуске обучения - уж очень удобно ее использовать

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

  • для процессинга агент сам предложил взять ту же essentia, но вместо навеса моделей на нее - предложил взять panns

  • примитивы обучения взял те же: mean k-NN distance+GMM log-likelihood+IsotonicRegression. Предложил обучать по одной single-class модели на include_liked и exclude_disliked, но делать это за один проход. На метрику какой из моделей смотреть - решаем на уровне подписки

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

  • модель подкинула критерий, который позволяет выделить фичи наиболее различные в датасетах. Не просто PCA, а выбрать те фичи, за счет которых мы различаем liked/disliked. 4k фич сжались до 64х - это значительно повысило точность ML-моделей за счет размерности

  • но даже после этого exclude_disliked продолжала сильно страдать false positive'ами - эксклюдила что нужно и что не нужно. И тут агент предложил балансировать вывод этой модели выводом include_liked классификатора. Т.е. если exclude_liked считает, что трек надо выкинуть, то прежде чем вернуть это решение мы смотрим на include_liked скор этого трека. Если он высокий - трек остается. С таким подходом качество модели стало выше, мой исходный подход показывал когда-либо

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

Единственной сохранившейся проблемой остается довольно высокое потребление памяти при процессинге - каждый воркер, извлекающий фичи из аудио, потребляет 1.5-2ГБ. Но размен памяти на процессинг на CPU - вполне приемлем при локальном использовании

Теги:
0
Комментарии0

RAG (Retrieval-Augmented Generation) — подход, при котором генеративные модели ищут ответы не только в своей внутренней «памяти», но и в ваших данных через векторный поиск и используют их для ответа. Так вы получаете более точные результаты без дообучения модели.

На бесплатном вебинаре «Создание RAG-системы на базе Qdrant» покажем процесс создания RAG-системы с использованием векторной базы данных Qdrant.

📆 Когда: 10 сентября в 18:00 (Мск)
👨‍🎓 ️Спикер: Елисеев Илья, эксперт в области Python и машинном обучении, анализе данных и бизнес-процессов

Вы узнаете:
👾 Что такое RAG и как расширить «память» генеративных моделей без их дообучения.
👾 Типы векторных данных. Полнотекстовый и семантический поиск.
👾 Чанкинг данных: как разбивать текст на части для эффективного поиска.
👾 Основы работы с Qdrant: установка, настройка и использование.
👾 Создание RAG-системы: пошаговое руководство по интеграции генеративной модели с Qdrant.
👾 Практика: пример создания RAG на базе редких литературных текстов и LLM.

✍️Записаться

Теги:
+4
Комментарии0

Как перестать сливать ПДн в ChatGPT и Claude: On-Prem AI-Gateway на чистом Python

Сотрудники компании (разработчики, поддержка, юристы) активно используют ChatGPT, Claude и Cursor. В промпты летят ФИО клиентов, ИИН/ИНН, карты, API-ключи и бизнес-логика. С точки зрения RegTech (152-ФЗ, Закон РК № 94-V, GDPR) — это прямая утечка данных.

Обычный DLP просто заблокирует доступ, снижая продуктивность[cite: 1]. Мы сделали AI-Gateway — open-source шлюз с обратимой токенизацией (Reversible Tokenization), который маскирует ПДн до отправки в LLM, восстанавливает их в ответе и ведет защищенный лог.

Как это работает

1. Исходный промпт от пользователя/приложения:

«Клиент Ержан Нурсултанулы, ИИН 900715300005, оспаривает транзакцию по карте 4400 1234 5678 9101…»

2. Уходит во внешнюю LLM (ChatGPT/Claude/Gemini):

«Клиент [PERSON_1], ИИН [NATIONAL_ID_1], оспаривает транзакцию по карте [PAN_1]…»

3. Возвращается в приложение / браузер:

«…для Ержан Нурсултанулы (ИИН 900715300005) по карте 4400 1234 5678 9101 возврат…»

Модель помогает решить задачу, пользователь получает полный ответ, а вендор не получает ни одной персональной записи[cite: 1].

Ключевая архитектура

  1. Обратимая токенизация, а не удаление. Замена сущностей на [PERSON_1] сохраняет связность текста для LLM[cite: 1]. Соответствия хранятся только в OAM (Mapping Store) в зашифрованном виде (PRF-CTR + HMAC) и автоматически удаляются после ответа[cite: 1].

  2. Проверка по контрольным суммам. ИИН/БИН проверяются двухпроходным весовым алгоритмом, карты — по алгоритму Луна (Luhn), IBAN — ISO 13616[cite: 1]. Секреты (AWS, OpenAI, JWT, PEM) детектируются по формату и энтропии Шеннона[cite: 1].

  3. Zero-Dependency Core (Python 3.11+ stdlib). Поверхность атаки на Supply Chain инструмента, видящего все промпты — ровно ноль[cite: 1]. Устанавливается в Air-Gapped контур без pip install[cite: 1].

  4. Принцип Fail-Closed. Любая ошибка распарсинга или сбой детекции блокирует запрос[cite: 1].

  5. Tamper-Evident Audit Log. Append-only JSONL с цепочкой хешей SHA-256[cite: 1]. Любое редактирование записи нарушает целостность лога[cite: 1].

Три канала перехвата

  • Egress Proxy: Меняем base_url в OpenAI SDK (http://aigate.internal:8080/v1)[cite: 1]. Код приложений менять не требуется[cite: 1].

  • Browser Extension (Manifest V3): Перехватывает ввод в ChatGPT/Claude/Gemini прямо в браузере до отправки на сервер[cite: 1].

  • Endpoint Agent: Отслеживает буфер обмена (clipboard) для вставки в IDE (Cursor, Claude Desktop)[cite: 1].

Маршрутизация в локальные LLM

Можно настроить правило: промпты без ПДн идут в ChatGPT/Claude, а промпты с найденными чувствительными данными автоматически перенаправляются на локальный Ollama / vLLM (Llama 3.1)[cite: 1].

Быстрый запуск

git clone [https://github.com/oleg-vdv/AI-Gateway.git](https://github.com/oleg-vdv/AI-Gateway.git)
cd AI-Gateway
cp .env.example .env
docker compose up -d
Теги:
+15
Комментарии8

Регуляторы скоро спросят «где у вас RSA?». Я написал сканер, который отвечает за секунды

  1. Завязка. Три дедлайна: США — PQC для новых госзакупок нацбезопасности с 2027 (EO 14412 / CNSA 2.0, там прямо назван CBOM), Великобритания — полная криптографическая инвентаризация и план миграции к 2028 (NCSC), ЕС — переход с конца 2026. Первый вопрос аудитора одинаковый: «где именно у вас используется RSA?» Ответа нет почти ни у кого.

  2. Что такое CBOM и почему это не то же самое, что SBOM.

  3. «Harvest now, decrypt later» — почему это не про далёкое будущее: трафик записывают сегодня, расшифруют потом. Если у секрета срок жизни больше нескольких лет — проблема уже наступила.

  4. Как работает сканер. Одна команда, три артефакта: CycloneDX 1.6 CBOM, отчёт с планом миграции на ML-KEM/ML-DSA, SARIF для GitHub code scanning. Плюс scan-tls — одно рукопожатие и вердикт по живому эндпоинту.

  5. Байка про баг (Хабр это любит): первый же регрессионный тест поймал, как сканер находит «криптографию» в собственных регулярках. Лечилось маскировкой литералов RSA_generate_ke[y], и теперь есть вечный тест, что репозиторий подсвечивает только свои фикстуры.

  6. Честный бенчмарк против PQCA CBOMkit. Не «мы лучше», а «мы разные»: CBOMkit глубже на Java/Python (знает размеры ключей, симметрику), мы шире (10+ языков, конфиги, сертификаты) и быстрее (0,05–0,12 с против минуты). Прямая ссылка на docs/BENCHMARK.md — воспроизводимо кнопкой в CI.

  7. Ограничения честно: v0 на паттернах, динамические вызовы пропустит, отсутствие находок ≠ отсутствие проблем. AST-движок в планах.

  8. Финал: вопрос к читателям — у кого уже спрашивали CBOM и в каком виде.

Теги:
+3
Комментарии0
1
23 ...