В Python пытаются принести настоящие goroutines.
runloom — экспериментальный runtime для free-threaded Python 3.13t+, где можно писать обычный блокирующий код, но запускать его как лёгкие fibers:
runloom.fiber(fn)
Без async def, без await, без переписывания всего приложения под asyncio.
Под капотом там не магия, а довольно жёсткая инженерия: hand-written asm context switch, C work-stealing scheduler, netpoll, Go-style channels и monkey.patch(), который делает blocking stdlib cooperative.
То есть urlopen(), socket, time, threading могут выглядеть как обычный синхронный код, но runtime будет парковать fiber, а не весь OS thread.
По бенчмаркам автора, Runloom уже близко к Go по scheduler throughput: около 2.29M spawn/s на C-entry, parity на conn/s и почти parity на keep-alive echo с Python handler.
Но важный нюанс: мультикорный выигрыш требует free-threaded CPython с выключенным GIL. На обычной GIL-сборке модель останется скорее удобной альтернативой asyncio, а не способом выжать все ядра.
Ещё честный минус - память. Пустой parked fiber весит больше Go-горутины примерно в 3.3 раза, потому что за ним тянется CPython eval frame.
pip install runloom
https://github.com/robertsdotpm/runloom
@Python_Community_ru
runloom — экспериментальный runtime для free-threaded Python 3.13t+, где можно писать обычный блокирующий код, но запускать его как лёгкие fibers:
runloom.fiber(fn)
Без async def, без await, без переписывания всего приложения под asyncio.
Под капотом там не магия, а довольно жёсткая инженерия: hand-written asm context switch, C work-stealing scheduler, netpoll, Go-style channels и monkey.patch(), который делает blocking stdlib cooperative.
То есть urlopen(), socket, time, threading могут выглядеть как обычный синхронный код, но runtime будет парковать fiber, а не весь OS thread.
По бенчмаркам автора, Runloom уже близко к Go по scheduler throughput: около 2.29M spawn/s на C-entry, parity на conn/s и почти parity на keep-alive echo с Python handler.
Но важный нюанс: мультикорный выигрыш требует free-threaded CPython с выключенным GIL. На обычной GIL-сборке модель останется скорее удобной альтернативой asyncio, а не способом выжать все ядра.
Ещё честный минус - память. Пустой parked fiber весит больше Go-горутины примерно в 3.3 раза, потому что за ним тянется CPython eval frame.
pip install runloom
https://github.com/robertsdotpm/runloom
@Python_Community_ru
GitHub
GitHub - robertsdotpm/runloom: Real Goroutines for Python 3.13t+ free-threaded.
Real Goroutines for Python 3.13t+ free-threaded. Contribute to robertsdotpm/runloom development by creating an account on GitHub.
⚡️ SearchPhone - open-source утилита на Python, которая автоматизирует сбор данных по телефонным номерам и формирует готовые отчёты.
Возможности
- проверка корректности телефонного номера
- определение страны и оператора связи
- поиск упоминаний через Google, Bing и DuckDuckGo
- поиск номера в открытом коде на GitHub
- поиск публикаций и обсуждений на Reddit
- создание отчётов в форматах JSON и PDF
- параллельная обработка запросов
- управление через простой CLI
Инструмент пригодится для OSINT-исследований, threat intelligence и проверки открытых источников.
Используйте его только законно и с соблюдением права на конфиденциальность.
🔗 GitHub: https://github.com/HackUnderway/SearchPhone
#OSINT #CyberSecurity #Python #OpenSource #GitHub #ThreatIntelligence #InfoSec
@Python_Community_ru
Возможности
- проверка корректности телефонного номера
- определение страны и оператора связи
- поиск упоминаний через Google, Bing и DuckDuckGo
- поиск номера в открытом коде на GitHub
- поиск публикаций и обсуждений на Reddit
- создание отчётов в форматах JSON и PDF
- параллельная обработка запросов
- управление через простой CLI
Инструмент пригодится для OSINT-исследований, threat intelligence и проверки открытых источников.
Используйте его только законно и с соблюдением права на конфиденциальность.
🔗 GitHub: https://github.com/HackUnderway/SearchPhone
#OSINT #CyberSecurity #Python #OpenSource #GitHub #ThreatIntelligence #InfoSec
@Python_Community_ru
8 бесплатных инструментов, которые реально пригодятся разработчику
Подборка без мусора: код, поиск, браузеры, email, ошибки, API и деплой.
1. Aider
AI pair programming прямо в терминале.
https://github.com/Aider-AI/aider
2. Sourcegraph
Поиск по репозиториям и большим кодовым базам.
https://sourcegraph.com
3. Browserbase
Облачные браузеры для автоматизации, тестов и AI-агентов.
https://browserbase.com
4. Resend
Email API для транзакционных писем и React-шаблонов.
https://resend.com
5. Sentry
Ошибки, crash reporting и performance monitoring.
https://sentry.io
6. Public APIs
Большой список бесплатных публичных API для проектов и прототипов.
https://github.com/public-apis/public-apis
7. GStack
Сетап Garry Tan для Claude Code: 23 opinionated tools.
https://github.com/garrytan/gstack
8. GitHub Pages
Бесплатный хостинг статических сайтов прямо из GitHub-репозитория.
https://pages.github.com
Часть инструментов open source, часть — free tier. Вместе получается сильный dev-стек без лишних подписок.
@Python_Community_ru
Подборка без мусора: код, поиск, браузеры, email, ошибки, API и деплой.
1. Aider
AI pair programming прямо в терминале.
https://github.com/Aider-AI/aider
2. Sourcegraph
Поиск по репозиториям и большим кодовым базам.
https://sourcegraph.com
3. Browserbase
Облачные браузеры для автоматизации, тестов и AI-агентов.
https://browserbase.com
4. Resend
Email API для транзакционных писем и React-шаблонов.
https://resend.com
5. Sentry
Ошибки, crash reporting и performance monitoring.
https://sentry.io
6. Public APIs
Большой список бесплатных публичных API для проектов и прототипов.
https://github.com/public-apis/public-apis
7. GStack
Сетап Garry Tan для Claude Code: 23 opinionated tools.
https://github.com/garrytan/gstack
8. GitHub Pages
Бесплатный хостинг статических сайтов прямо из GitHub-репозитория.
https://pages.github.com
Часть инструментов open source, часть — free tier. Вместе получается сильный dev-стек без лишних подписок.
@Python_Community_ru
👍1
🖥 Python `multiprocessing` и ловушка, о которую бьются даже опытные разрабы
В старых версиях Python на Linux multiprocessing часто стартовал процессы через fork().
И вот где начинается боль.
После fork() в дочернем процессе остаётся только один поток. Но состояние мира копируется как было:
* lock мог быть захвачен
* file descriptors всё ещё указывают на те же файлы
* сокеты и буферы могут оказаться в странном состоянии
* другой поток, который должен был отпустить lock, уже не существует
Это поведение POSIX.
Поэтому fork + threads - классический рецепт для редких, мерзких deadlock’ов.
Хорошая практика: для multiprocessing чаще выбирать spawn или forkserver, особенно если в приложении есть потоки, логгеры, сетевые клиенты или фоновые воркеры.
Важная поправка: начиная с Python 3.14, на POSIX дефолтный start method поменяли с fork на forkserver, как раз чтобы избежать части этих проблем.
Мелочь в настройке старта процесса. Огромная разница в стабильности.
@Python_Community_ru
В старых версиях Python на Linux multiprocessing часто стартовал процессы через fork().
И вот где начинается боль.
После fork() в дочернем процессе остаётся только один поток. Но состояние мира копируется как было:
* lock мог быть захвачен
* file descriptors всё ещё указывают на те же файлы
* сокеты и буферы могут оказаться в странном состоянии
* другой поток, который должен был отпустить lock, уже не существует
Это поведение POSIX.
Поэтому fork + threads - классический рецепт для редких, мерзких deadlock’ов.
Хорошая практика: для multiprocessing чаще выбирать spawn или forkserver, особенно если в приложении есть потоки, логгеры, сетевые клиенты или фоновые воркеры.
Важная поправка: начиная с Python 3.14, на POSIX дефолтный start method поменяли с fork на forkserver, как раз чтобы избежать части этих проблем.
Мелочь в настройке старта процесса. Огромная разница в стабильности.
@Python_Community_ru
Вышел MOSS-VL-Realtime - 11B vision-language model для потокового видео.
Не просто “загрузил ролик и получил ответ”, а режим, где модель непрерывно обрабатывает timestamped frames и может отвечать в любой момент по тому, что уже увидела.
Контекст - 256K, лицензия - Apache 2.0.
Что заявлено по бенчмаркам:
* 70.2 avg на OVOBench
* 47.2 avg на ProactiveVideoQA
* 66.0 на OmniMMI Proactive Alerting
MOSS-VL-Realtime умеет молчать, если визуальных данных пока недостаточно, а потом обновлять ответ, когда сцена меняется. Для видеоагентов это важнее, чем просто “ответить красиво”: модель должна не фантазировать раньше времени.
Есть online inference в стиле session/queue, offline API для изображений и видео, а также Instruct и Base checkpoints.
Похоже на шаг к VLM, которые работают не с готовым файлом, а с живым потоком: наблюдают, ждут, уточняют и реагируют по мере появления новых кадров.
ModelScope: https://modelscope.ai/models/openmoss/MOSS-VL-Realtime
@Python_Community_ru
Не просто “загрузил ролик и получил ответ”, а режим, где модель непрерывно обрабатывает timestamped frames и может отвечать в любой момент по тому, что уже увидела.
Контекст - 256K, лицензия - Apache 2.0.
Что заявлено по бенчмаркам:
* 70.2 avg на OVOBench
* 47.2 avg на ProactiveVideoQA
* 66.0 на OmniMMI Proactive Alerting
MOSS-VL-Realtime умеет молчать, если визуальных данных пока недостаточно, а потом обновлять ответ, когда сцена меняется. Для видеоагентов это важнее, чем просто “ответить красиво”: модель должна не фантазировать раньше времени.
Есть online inference в стиле session/queue, offline API для изображений и видео, а также Instruct и Base checkpoints.
Похоже на шаг к VLM, которые работают не с готовым файлом, а с живым потоком: наблюдают, ждут, уточняют и реагируют по мере появления новых кадров.
ModelScope: https://modelscope.ai/models/openmoss/MOSS-VL-Realtime
@Python_Community_ru
⚡️ VGGT: превращает набор фотографий в геометрию 3D-сцены
Обычно реконструкция сцены требует отдельной связки для оценки камер, глубины и отслеживания точек. VGGT получает изображения и предсказывает всё это одной feed-forward моделью.
На вход можно подать один кадр, несколько снимков или сотни ракурсов. На выходе модель строит:
- внутренние и внешние параметры камер
- карты глубины
- плотные карты 3D-точек
- траектории выбранных точек между кадрами
Результаты можно экспортировать в формат COLMAP, дополнительно обработать через bundle adjustment и использовать в пайплайнах NeRF или Gaussian Splatting через gsplat.
Запуск занимает несколько строк:
model = VGGT.from_pretrained("facebook/VGGT-1B").to(device)
images = load_and_preprocess_images(image_names).to(device)
with torch.no_grad():
predictions = model(images)
https://github.com/facebookresearch/vggt
@Python_Community_ru
Обычно реконструкция сцены требует отдельной связки для оценки камер, глубины и отслеживания точек. VGGT получает изображения и предсказывает всё это одной feed-forward моделью.
На вход можно подать один кадр, несколько снимков или сотни ракурсов. На выходе модель строит:
- внутренние и внешние параметры камер
- карты глубины
- плотные карты 3D-точек
- траектории выбранных точек между кадрами
Результаты можно экспортировать в формат COLMAP, дополнительно обработать через bundle adjustment и использовать в пайплайнах NeRF или Gaussian Splatting через gsplat.
Запуск занимает несколько строк:
model = VGGT.from_pretrained("facebook/VGGT-1B").to(device)
images = load_and_preprocess_images(image_names).to(device)
with torch.no_grad():
predictions = model(images)
https://github.com/facebookresearch/vggt
@Python_Community_ru
Hugging Face собрала open-source стек для локальных голосовых агентов
Репозиторий speech-to-speech содержит модульный пайплайн с низкой задержкой:
VAD → STT → LLM → TTS
Каждый компонент можно заменить. Для распознавания речи поддерживаются Parakeet TDT, Whisper, Faster Whisper и Paraformer. Для генерации голоса доступны Qwen3-TTS, Kokoro, Pocket TTS, ChatTTS и MMS.
LLM можно запускать через облачный OpenAI-совместимый API либо локально через Transformers, MLX, vLLM или llama.cpp. Весь стек способен работать на собственном железе без передачи аудио внешнему сервису.
Сервер поддерживает протокол OpenAI Realtime и WebSocket-эндпоинт /v1/realtime. Это позволяет подключать существующие клиенты с потоковой передачей аудио, транскрипцией, прерыванием ответа и tool calling.
Запуск:
pip install speech-to-speech
speech-to-speech
По умолчанию используются Parakeet TDT для распознавания и Qwen3-TTS для синтеза речи. Есть отдельные режимы для локального микрофона, WebSocket, TCP и Docker. Проект уже используется как разговорный бэкенд для тысяч роботов Reachy Mini.
Лицензия: Apache 2.0.
https://github.com/huggingface/speech-to-speech
@Python_Community_ru
Репозиторий speech-to-speech содержит модульный пайплайн с низкой задержкой:
VAD → STT → LLM → TTS
Каждый компонент можно заменить. Для распознавания речи поддерживаются Parakeet TDT, Whisper, Faster Whisper и Paraformer. Для генерации голоса доступны Qwen3-TTS, Kokoro, Pocket TTS, ChatTTS и MMS.
LLM можно запускать через облачный OpenAI-совместимый API либо локально через Transformers, MLX, vLLM или llama.cpp. Весь стек способен работать на собственном железе без передачи аудио внешнему сервису.
Сервер поддерживает протокол OpenAI Realtime и WebSocket-эндпоинт /v1/realtime. Это позволяет подключать существующие клиенты с потоковой передачей аудио, транскрипцией, прерыванием ответа и tool calling.
Запуск:
pip install speech-to-speech
speech-to-speech
По умолчанию используются Parakeet TDT для распознавания и Qwen3-TTS для синтеза речи. Есть отдельные режимы для локального микрофона, WebSocket, TCP и Docker. Проект уже используется как разговорный бэкенд для тысяч роботов Reachy Mini.
Лицензия: Apache 2.0.
https://github.com/huggingface/speech-to-speech
@Python_Community_ru
PyPI закрыл опасную лазейку в старых релизах
Теперь PyPI запрещает загружать новые файлы в релиз спустя 14 дней после его публикации. Старую версию пакета больше нельзя внезапно дополнить новым wheel или архивом.
Ограничение защищает от атаки, при которой злоумышленник крадёт токен публикации и добавляет вредоносный файл в давно стабильный релиз. Часть пользователей могла бы скачать заражённую сборку, хотя номер версии остался прежним.
Изменение затронет мало проектов: среди 15 000 популярных пакетов лишь 56 добавляли wheel для Python 3.14 позже установленного срока.
Разработчикам теперь придётся выпускать новую версию пакета, даже когда нужно лишь добавить сборку для свежей версии Python. В будущем PyPI планирует формально разделить релизы на открытые и закрытые через Upload 2.0 API.
https://blog.pypi.org/posts/2026-07-22-releases-now-reject-new-files-after-14-days/
@Python_Community_ru
Теперь PyPI запрещает загружать новые файлы в релиз спустя 14 дней после его публикации. Старую версию пакета больше нельзя внезапно дополнить новым wheel или архивом.
Ограничение защищает от атаки, при которой злоумышленник крадёт токен публикации и добавляет вредоносный файл в давно стабильный релиз. Часть пользователей могла бы скачать заражённую сборку, хотя номер версии остался прежним.
Изменение затронет мало проектов: среди 15 000 популярных пакетов лишь 56 добавляли wheel для Python 3.14 позже установленного срока.
Разработчикам теперь придётся выпускать новую версию пакета, даже когда нужно лишь добавить сборку для свежей версии Python. В будущем PyPI планирует формально разделить релизы на открытые и закрытые через Upload 2.0 API.
https://blog.pypi.org/posts/2026-07-22-releases-now-reject-new-files-after-14-days/
@Python_Community_ru
👍1
🖥 Git bisect - для поиска багов
Когда баг появился где-то между сотнями коммитов, не нужно проверять историю вручную.
Запускаем:
git bisect start
git bisect bad
git bisect good
Git будет делить историю пополам и просить отметить каждый найденный коммит:
git bisect good
git bisect bad
Через несколько шагов он покажет коммит, в котором появился баг.
Можно автоматизировать:
git bisect run pytest
Тогда Git сам прогонит тесты и найдёт виновника.
@Python_Community_ru
Когда баг появился где-то между сотнями коммитов, не нужно проверять историю вручную.
Запускаем:
git bisect start
git bisect bad
git bisect good
Git будет делить историю пополам и просить отметить каждый найденный коммит:
git bisect good
git bisect bad
Через несколько шагов он покажет коммит, в котором появился баг.
Можно автоматизировать:
git bisect run pytest
Тогда Git сам прогонит тесты и найдёт виновника.
@Python_Community_ru
CLI-Anything: как дать AI-агентам руки для обычных приложений
Идея простая: CLI-Anything генерирует командные интерфейсы для реального софта, чтобы агент мог не «тыкать мышкой», а вызывать понятные команды.
Так можно управлять CAD-инструментами, 3D-редакторами, редакторами субтитров, браузером, Blender, FreeCAD, GIMP, Inkscape, Obsidian, Kdenlive, OBS и другими приложениями. В репозитории уже есть десятки agent-harness’ов под разные программы.
Как это выглядит:
* агент получает задачу
* вызывает CLI
* приложение делает работу
* результат можно проверить и повторить
Есть и CLI-Hub: установка через pip install cli-anything-hub, дальше можно ставить готовые CLI через cli-hub install .
GitHub: https://github.com/HKUDS/CLI-Anything
@Python_Community_ru
Идея простая: CLI-Anything генерирует командные интерфейсы для реального софта, чтобы агент мог не «тыкать мышкой», а вызывать понятные команды.
Так можно управлять CAD-инструментами, 3D-редакторами, редакторами субтитров, браузером, Blender, FreeCAD, GIMP, Inkscape, Obsidian, Kdenlive, OBS и другими приложениями. В репозитории уже есть десятки agent-harness’ов под разные программы.
Как это выглядит:
* агент получает задачу
* вызывает CLI
* приложение делает работу
* результат можно проверить и повторить
Есть и CLI-Hub: установка через pip install cli-anything-hub, дальше можно ставить готовые CLI через cli-hub install .
GitHub: https://github.com/HKUDS/CLI-Anything
@Python_Community_ru
🔥1
🔥 За одну неделю вышло сразу 6 интересных open-weight моделей
Пока все ждут веса Kimi K3 и Ling 3.0, в LLM Architecture Gallery Себастьяна Расчки появилось несколько свежих архитектур.
1. Nanbeige 4.2 3B
Всего 3B non-embedding параметров, но используется Looped Transformer: один и тот же стек слоёв проходит дважды. Больше эффективной глубины без удвоения весов.
https://huggingface.co/Nanbeige/Nanbeige4.2-3B
2. Laguna S 2.1
118B MoE, только 8B активных параметров, 48 слоёв и контекст 1M токенов. Сделана Poolside с упором на coding agents и длинные задачи.
https://huggingface.co/poolside/Laguna-S-2.1
3. Motif-3-Beta
Огромный 314B-A13B MoE: 384 routed experts, 8 активируются на токен, контекст 256K.
https://huggingface.co/Motif-Technologies/Motif-3-Beta
4. Solar Open 2
250B-A15B MoE от Upstage с 1M контекстом. Архитектура чередует три linear-attention слоя с одним обычным softmax-attention слоем. Модель рассчитана на длинные agentic workflows.
https://www.upstage.ai/blog/en/solar-open-2
5. Antares 1B
Компактная security-модель Cisco для анализа репозиториев и поиска потенциально уязвимого кода. Основана на Granite и дообучена под agentic terminal workflows.
https://huggingface.co/fdtn-ai/antares-1b
6. BTL-3
Rank-32 LoRA для Qwen3.6-27B, заточенная под coding agents и tool calling. Авторы заявляют 95,1% HumanEval и 88,5% BFCL v4 AST.
https://huggingface.co/badtheorylabs/BTL-3
Полная галерея архитектур:
https://sebastianraschka.com/llm-architecture-gallery/
@Python_Community_ru
Пока все ждут веса Kimi K3 и Ling 3.0, в LLM Architecture Gallery Себастьяна Расчки появилось несколько свежих архитектур.
1. Nanbeige 4.2 3B
Всего 3B non-embedding параметров, но используется Looped Transformer: один и тот же стек слоёв проходит дважды. Больше эффективной глубины без удвоения весов.
https://huggingface.co/Nanbeige/Nanbeige4.2-3B
2. Laguna S 2.1
118B MoE, только 8B активных параметров, 48 слоёв и контекст 1M токенов. Сделана Poolside с упором на coding agents и длинные задачи.
https://huggingface.co/poolside/Laguna-S-2.1
3. Motif-3-Beta
Огромный 314B-A13B MoE: 384 routed experts, 8 активируются на токен, контекст 256K.
https://huggingface.co/Motif-Technologies/Motif-3-Beta
4. Solar Open 2
250B-A15B MoE от Upstage с 1M контекстом. Архитектура чередует три linear-attention слоя с одним обычным softmax-attention слоем. Модель рассчитана на длинные agentic workflows.
https://www.upstage.ai/blog/en/solar-open-2
5. Antares 1B
Компактная security-модель Cisco для анализа репозиториев и поиска потенциально уязвимого кода. Основана на Granite и дообучена под agentic terminal workflows.
https://huggingface.co/fdtn-ai/antares-1b
6. BTL-3
Rank-32 LoRA для Qwen3.6-27B, заточенная под coding agents и tool calling. Авторы заявляют 95,1% HumanEval и 88,5% BFCL v4 AST.
https://huggingface.co/badtheorylabs/BTL-3
Полная галерея архитектур:
https://sebastianraschka.com/llm-architecture-gallery/
@Python_Community_ru
huggingface.co
Nanbeige/Nanbeige4.2-3B · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
ProtoLink - лёгкий Python-фреймворк для мультиагентных систем с A2A в основе
ProtoLink строит архитектуру вокруг самих агентов, а не цепочек вызовов LLM. Каждый агент имеет собственные capabilities, tools, lifecycle и может напрямую передавать задачи другим агентам через Agent-to-Agent (A2A).
Что есть внутри:
* OpenAI, Anthropic, Gemini, DeepSeek, Ollama, llama.cpp и другие модели;
* native Python tools и MCP;
* HTTP, SSE, WebSocket и gRPC;
* SQLite state и хранение запусков;
* telemetry через Langfuse и LangSmith;
* auth, policies, approvals, budgets и replay;
* Pipeline, Parallel, Router и Graph для детерминированных workflow.
Фреймворк local-first: можно поднять агента вообще без API-ключа и облачной модели, а затем подключить Ollama или другой backend без переписывания tools и логики взаимодействия. Базовый пакет зависит только от Pydantic.
GitHub:
https://github.com/nMaroulis/protolink
Лицензия: MIT.
@Python_Community_ru
ProtoLink строит архитектуру вокруг самих агентов, а не цепочек вызовов LLM. Каждый агент имеет собственные capabilities, tools, lifecycle и может напрямую передавать задачи другим агентам через Agent-to-Agent (A2A).
Что есть внутри:
* OpenAI, Anthropic, Gemini, DeepSeek, Ollama, llama.cpp и другие модели;
* native Python tools и MCP;
* HTTP, SSE, WebSocket и gRPC;
* SQLite state и хранение запусков;
* telemetry через Langfuse и LangSmith;
* auth, policies, approvals, budgets и replay;
* Pipeline, Parallel, Router и Graph для детерминированных workflow.
Фреймворк local-first: можно поднять агента вообще без API-ключа и облачной модели, а затем подключить Ollama или другой backend без переписывания tools и логики взаимодействия. Базовый пакет зависит только от Pydantic.
GitHub:
https://github.com/nMaroulis/protolink
Лицензия: MIT.
@Python_Community_ru
🔥 `Agents-cli` от Google - полный конвейер разработки AI-агентов из терминала
Инструмент добавляет coding-агентам вроде Claude Code, Codex и Antigravity CLI готовые навыки для работы с Google ADK и облачной инфраструктурой. Сам agents-cli моделью или отдельным coding-агентом не является.
Что умеет:
• создавать каркас агентного проекта
• запускать агента локально
• генерировать датасеты для eval
• оценивать и сравнивать трассы
• находить типичные причины ошибок
• автоматически оптимизировать промпты
• добавлять RAG, CI/CD и observability
• деплоить в Cloud Run, GKE или Agent Runtime
• публиковать агента в Gemini Enterprise
Для локальной разработки Google Cloud необязателен — достаточно Gemini API через AI Studio. Для облачного деплоя уже потребуется собственный проект Google Cloud.
Установка:
uvx google-agents-cli setup
Можно установить только skills:
npx skills add google/agents-cli
Лицензия Apache 2.0.
🔗 https://github.com/google/agents-cli
@Python_Community_ru
Инструмент добавляет coding-агентам вроде Claude Code, Codex и Antigravity CLI готовые навыки для работы с Google ADK и облачной инфраструктурой. Сам agents-cli моделью или отдельным coding-агентом не является.
Что умеет:
• создавать каркас агентного проекта
• запускать агента локально
• генерировать датасеты для eval
• оценивать и сравнивать трассы
• находить типичные причины ошибок
• автоматически оптимизировать промпты
• добавлять RAG, CI/CD и observability
• деплоить в Cloud Run, GKE или Agent Runtime
• публиковать агента в Gemini Enterprise
Для локальной разработки Google Cloud необязателен — достаточно Gemini API через AI Studio. Для облачного деплоя уже потребуется собственный проект Google Cloud.
Установка:
uvx google-agents-cli setup
Можно установить только skills:
npx skills add google/agents-cli
Лицензия Apache 2.0.
🔗 https://github.com/google/agents-cli
@Python_Community_ru
🎙 Kyutai открыла готовый стек для потоковых голосовых агентов
Delayed Streams Modeling — репозиторий с моделями и примерами для streaming STT и TTS. Аудио обрабатывается частями: агент начинает распознавать речь и генерировать ответ, не дожидаясь окончания записи.
Что внутри:
• потоковая транскрибация с временными метками для каждого слова
• модель 1B EN/FR с задержкой около 0,5 секунды и semantic VAD
• английская модель 2.6B с задержкой около 2,5 секунды
• PyTorch-ноутбуки для экспериментов
• Rust-сервер с WebSocket для продакшена
• MLX-реализация для Mac и iPhone
• streaming TTS, который принимает текст и сразу выдаёт звук частями.
На H100 разработчики заявляют обработку до 400 одновременных STT-потоков, а Rust-сервер на L40S обслуживает 64 подключения быстрее реального времени.
Лицензии разделены по компонентам: Python и web — MIT, Rust backend — Apache 2.0, веса STT — CC BY 4.0.
🔗 https://github.com/kyutai-labs/delayed-streams-modeling
@Python_Community_ru
Delayed Streams Modeling — репозиторий с моделями и примерами для streaming STT и TTS. Аудио обрабатывается частями: агент начинает распознавать речь и генерировать ответ, не дожидаясь окончания записи.
Что внутри:
• потоковая транскрибация с временными метками для каждого слова
• модель 1B EN/FR с задержкой около 0,5 секунды и semantic VAD
• английская модель 2.6B с задержкой около 2,5 секунды
• PyTorch-ноутбуки для экспериментов
• Rust-сервер с WebSocket для продакшена
• MLX-реализация для Mac и iPhone
• streaming TTS, который принимает текст и сразу выдаёт звук частями.
На H100 разработчики заявляют обработку до 400 одновременных STT-потоков, а Rust-сервер на L40S обслуживает 64 подключения быстрее реального времени.
Лицензии разделены по компонентам: Python и web — MIT, Rust backend — Apache 2.0, веса STT — CC BY 4.0.
🔗 https://github.com/kyutai-labs/delayed-streams-modeling
@Python_Community_ru
🐍 collections.Counter: больше, чем подсчёт частот
Большинство используют Counter только ради most_common(), хотя у него есть куда более интересные возможности.
from collections import Counter
a = Counter("abracadabra")
b = Counter("barbecue")
Можно складывать и вычитать частоты:
a + b
a - b
Пересечение и объединение счётчиков:
a & b # минимальные значения
a | b # максимальные значения
Удалить элементы с нулевой и отрицательной частотой:
clean = +a
Получить общее число элементов:
a.total()
Развернуть счётчик обратно в последовательность:
list(a.elements())
Особенно удобно для анализа логов, событий, токенов, категорий и любых данных, где важна частота появления.
#Python #Collections #Backend
@Python_Community_ru
Большинство используют Counter только ради most_common(), хотя у него есть куда более интересные возможности.
from collections import Counter
a = Counter("abracadabra")
b = Counter("barbecue")
Можно складывать и вычитать частоты:
a + b
a - b
Пересечение и объединение счётчиков:
a & b # минимальные значения
a | b # максимальные значения
Удалить элементы с нулевой и отрицательной частотой:
clean = +a
Получить общее число элементов:
a.total()
Развернуть счётчик обратно в последовательность:
list(a.elements())
Особенно удобно для анализа логов, событий, токенов, категорий и любых данных, где важна частота появления.
#Python #Collections #Backend
@Python_Community_ru
🔥1
🚀 NVIDIA открыла единый фреймворк для обучения и запуска world models
Cosmos Framework объединяет полный цикл работы с моделями Cosmos 3: обучение, дообучение, инференс и онлайн-сервинг.
Что внутри:
• распределённое обучение через FSDP, TP, CP и PP
• импорт и экспорт Hugging Face safetensors
• поддержка JSONL, WebDataset и LeRobot
• инференс через Diffusers, Transformers и vLLM
• batch-генерация и сервер на Ray + Gradio
• готовые Agent Skills для Claude Code, Codex CLI и Cursor
Cosmos 3 работает с текстом, изображениями, видео, аудио и последовательностями действий. Фреймворк рассчитан на разработку моделей для робототехники, автономных систем и симуляции физического мира.
Примеры обучения протестированы на 8× H100 80 ГБ, а облегчённую Cosmos3-Nano можно запускать на одной GPU.
🔗 https://github.com/NVIDIA/cosmos-framework
@Python_Community_ru
Cosmos Framework объединяет полный цикл работы с моделями Cosmos 3: обучение, дообучение, инференс и онлайн-сервинг.
Что внутри:
• распределённое обучение через FSDP, TP, CP и PP
• импорт и экспорт Hugging Face safetensors
• поддержка JSONL, WebDataset и LeRobot
• инференс через Diffusers, Transformers и vLLM
• batch-генерация и сервер на Ray + Gradio
• готовые Agent Skills для Claude Code, Codex CLI и Cursor
Cosmos 3 работает с текстом, изображениями, видео, аудио и последовательностями действий. Фреймворк рассчитан на разработку моделей для робототехники, автономных систем и симуляции физического мира.
Примеры обучения протестированы на 8× H100 80 ГБ, а облегчённую Cosmos3-Nano можно запускать на одной GPU.
🔗 https://github.com/NVIDIA/cosmos-framework
@Python_Community_ru
🐍 Python-совет: как объединить списки разной длины и не потерять данные
Обычный zip() останавливается на самом коротком списке:
numbers = [1, 2, 3, 4, 5]
letters = ["a", "b", "c"]
print(list(zip(numbers, letters)))
# [(1, 'a'), (2, 'b'), (3, 'c')]
Элементы 4 и 5 просто исчезнут. Чтобы сохранить их, используйте zip_longest():
from itertools import zip_longest
result = zip_longest(
numbers,
letters,
fillvalue="нет значения",
)
print(list(result))
Результат:
[
(1, "a"),
(2, "b"),
(3, "c"),
(4, "нет значения"),
(5, "нет значения"),
]
А когда списки обязаны иметь одинаковую длину, в Python 3.10+ лучше включить проверку:
zip(numbers, letters, strict=True)
Вместо тихой потери данных Python сразу выбросит ValueError.
Полезно при обработке таблиц, CSV, результатов API и параллельных наборов данных.
#Python #Programming #PythonTips
@Python_Community_ru
Обычный zip() останавливается на самом коротком списке:
numbers = [1, 2, 3, 4, 5]
letters = ["a", "b", "c"]
print(list(zip(numbers, letters)))
# [(1, 'a'), (2, 'b'), (3, 'c')]
Элементы 4 и 5 просто исчезнут. Чтобы сохранить их, используйте zip_longest():
from itertools import zip_longest
result = zip_longest(
numbers,
letters,
fillvalue="нет значения",
)
print(list(result))
Результат:
[
(1, "a"),
(2, "b"),
(3, "c"),
(4, "нет значения"),
(5, "нет значения"),
]
А когда списки обязаны иметь одинаковую длину, в Python 3.10+ лучше включить проверку:
zip(numbers, letters, strict=True)
Вместо тихой потери данных Python сразу выбросит ValueError.
Полезно при обработке таблиц, CSV, результатов API и параллельных наборов данных.
#Python #Programming #PythonTips
@Python_Community_ru
🎬 Seedance 2.0 превратили в полноценную операционную систему для ИИ-режиссёра
Seedance 2.0 Skill OS - открытый набор навыков и пайплайнов, который помогает создавать видео не через набор слов вроде «cinematic, epic, beautiful», а через режиссёрскую постановку сцены.
Система определяет драматическую задачу эпизода и согласует под неё:
— движение камеры и характер объектива;
— свет, композицию и действия персонажей;
— звук, диалоги и темп;
— роли изображений, видео и аудиореференсов;
— переходы между несколькими связанными клипами.
Есть отдельные модули для text-to-video, image-to-video, продолжения роликов, первого и последнего кадров, устранения проблем и сохранения персонажей между сценами.
Для длинных историй инструмент анализирует реальный финал готового клипа и только после этого пишет промпт для следующего, поэтому сюжет не разваливается из-за расхождения генерации с первоначальным планом.
Также внутри есть готовые процессы для раскадровки, монтажа, цветокоррекции, локализации, звука и финального контроля качества. Поддерживается работа на русском языке. Проект распространяется под MIT License.
GitHub:
https://github.com/Emily2040/seedance-2.0
@Python_Community_ru
Seedance 2.0 Skill OS - открытый набор навыков и пайплайнов, который помогает создавать видео не через набор слов вроде «cinematic, epic, beautiful», а через режиссёрскую постановку сцены.
Система определяет драматическую задачу эпизода и согласует под неё:
— движение камеры и характер объектива;
— свет, композицию и действия персонажей;
— звук, диалоги и темп;
— роли изображений, видео и аудиореференсов;
— переходы между несколькими связанными клипами.
Есть отдельные модули для text-to-video, image-to-video, продолжения роликов, первого и последнего кадров, устранения проблем и сохранения персонажей между сценами.
Для длинных историй инструмент анализирует реальный финал готового клипа и только после этого пишет промпт для следующего, поэтому сюжет не разваливается из-за расхождения генерации с первоначальным планом.
Также внутри есть готовые процессы для раскадровки, монтажа, цветокоррекции, локализации, звука и финального контроля качества. Поддерживается работа на русском языке. Проект распространяется под MIT License.
GitHub:
https://github.com/Emily2040/seedance-2.0
@Python_Community_ru
🔥1