Python Community – Telegram
Python Community
12.2K subscribers
1.38K photos
99 videos
15 files
907 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
🧠 Awesome Agentic Patterns - шпаргалка по агентам, которая реально полезна

Наткнулся на репозиторий awesome-agentic-patterns - и это один из самых практичных “awesome-листов” по теме AI-агентов.

📌 Что внутри:
не теоретические рассуждения, а паттерны - мини-архитектуры и рабочие приёмы, которые используют команды, когда делают production-агентов.

Автор прямо пишет идею проекта:
> тут не про “игрушки и демки”, а про штуки, которые закрывают грязную реальность продакшена.
Почти любой агент в проде упирается в одни и те же проблемы:

- контекст не помещается → нужно умно управлять памятью
- модель косячит → нужны retry/валидация/guardrails
- цепочки действий ломаются → нужна оркестрация
- непонятно, что пошло не так → нужны логи + eval
- безопасность / PII → нужен sandbox и фильтрация

И вот под это как раз собраны паттерны.

https://github.com/nibzard/awesome-agentic-patterns

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
Сел я значит вечером подправить пет-проект и вот как-то закрутилось

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🕐 FastScheduler: “Celery для запуска скриптов по расписанию, но без боли”

Иногда нужно просто:
- запустить функцию каждые 5 минут
- или каждый день в 09:00
- или по cron
…и всё.

Но Celery для этого — реально оверкилл: брокер, воркеры, Redis/RabbitMQ, отдельная инфраструктура.

FastScheduler решает ровно эту задачу:
*in-process* планировщик задач (никаких Redis / брокеров)
decorator-first API — красиво и быстро
async поддержка из коробки
персистентность (состояние сохраняется, переживает рестарты)
опционально — FastAPI dashboard для просмотра задач

Пример того, как выглядит API:


@scheduler.every(5).minutes
def sync_users():
...

@scheduler.daily.at("09:00")
async def morning_report():


Философия простая:
если тебе не нужна распределённость - не бери Celery, попробуй FastScheduler.

Установка:



pip install fastscheduler[all]


📌 GitHub: https://github.com/MichielMe/fastscheduler

@Python_Community_ru
🔥2
🎨 Генерация изображений с GLM-Image

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

🚀 Основные моменты:
- Гибридная архитектура для высококачественной генерации изображений.
- Поддержка текст-в-изображение и множество задач изображение-в-изображение.
- Модуль обратной связи для улучшения семантического понимания и детализации.
- Высокая точность рендеринга текста в изображениях.
- Доступность через Hugging Face и ModelScope.

📌 GitHub: https://github.com/zai-org/GLM-Image

@Python_Community_ru
🖥 Ты бы поставил в прод пакет, который вышел 2 часа назад?

Обновлять зависимости важно - так ты получаешь новые фичи и фиксы багов.

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

В uv для этого есть опция exclude-newer
Она позволяет задать “период охлаждения” - и пропускать пакеты, которые были выпущены слишком недавно.

Как использовать:
добавь в pyproject.toml:

exclude-newer = "7 days"

И при желании поменяй срок под себя (например, 3 дня, 14 дней и т.д.).

Идея простая:
обновляйся регулярно, но не на самых горячих релизах.

https://www.youtube.com/shorts/98q0IkNrBbU

@Python_Community_ru
👍3
🤖 Автоматизация исследований с NotebookLM

Notebooklm-py — это неофициальная библиотека для работы с Google NotebookLM, позволяющая автоматизировать исследовательские процессы, генерировать контент и интегрировать AI-агентов. Подходит для прототипов и личных проектов, используя Python или командную строку.

🚀Основные моменты:
- Интеграция с AI-агентами и Claude Code
- Автоматизация исследований с импортом источников
- Генерация подкастов, видео и учебных материалов
- Поддержка работы через Python API и CLI
- Использование с неофициальными Google API

📌 GitHub: https://github.com/teng-lin/notebooklm-py

@Python_Community_ru
🐍 Самая крутая фича Python 3.14 - `sys.remote_exec()` (объясняю по-человечески)

Идея простая:
у тебя уже запущено Python-приложение (например FastAPI в Docker/K8s)
оно уже дошло до нужного состояния (в памяти есть переменные, сессии, кеши)
но тебе нужно посмотреть “что внутри” или поставить дебаггер

Раньше ты делал так:
- добавлял debugpy в код
- перезапускал приложение
- заново воспроизводил баг

Python 3.14 даёт новый чит-код:

sys.remote_exec() позволяет выполнить кусок Python-кода ВНУТРИ уже работающего Python-процесса.
То есть буквально “вколоть” скрипт в живой процесс.

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


Пример: что можно сделать через sys.remote_exec()

Допустим у нас есть работающий процесс Python.

1) Мы хотим “добавить” туда код:
- вывести PID
- посмотреть глобальные переменные
- записать лог
- даже поменять значение переменной


# Этот код выполняется СНАРУЖИ и запускает инжект внутрь процесса
import sys

target_pid = 12345 # PID запущенного Python процесса

payload = r"""
import os
import time

print(" Injected into running process!")
print("PID:", os.getpid())
print("Time:", time.time())

# Пример: читаем что есть в глобальном пространстве
g = globals()
print("Globals keys sample:", list(g.keys())[:10])

# Пример: создаём переменную прямо в процессе
INJECTED_FLAG = True
"""

# Новое API Python 3.14
sys.remote_exec(target_pid, payload)



Пример 2: инжектим debugpy (дебаг без рестарта)

Самая хайповая штука - можно подключить debugpy в уже живое приложение.
То есть приложение уже крутится, у него есть состояние, и ты просто включаешь “прослушку” дебаггера на порту.


import sys

target_pid = 12345 # PID работающего uvicorn / fastapi процесса

payload = r"""
import debugpy

HOST = "0.0.0.0"
PORT = 5679

debugpy.listen((HOST, PORT))
print(f"🐞 debugpy is listening on {HOST}:{PORT}")

# если хочешь остановить выполнение и ждать пока подключишь IDE:
# debugpy.wait_for_client()
# print(" debugger attached!")
"""

sys.remote_exec(target_pid, payload)


Дальше:
- ты делаешь port-forward (если Docker/K8s)
- подключаешь VS Code / PyCharm / nvim к localhost:5679
- ставишь breakpoints и дебажишь как обычно


Что важно

1) Это не “удалённое выполнение” как ssh.
Это прям “внутри процесса” - доступ к памяти, переменным, импортам.

2) Это опасно для продакшена.
Требует прав уровня SYS_PTRACE (можно читать/менять процессы) - поэтому только для локалки/стендов.

3) Это может стать стандартом для отладки контейнеров:
- баг воспроизводится только в k8s
- рестарт = баг пропал
- а тут просто подключился и посмотрел

📌 Статья на эту тему (https://savannah.dev/posts/the-coolest-feature-in-314/)

@Python_Community_ru
🔥1
🎙️ NVIDIA выпустила PersonaPlex-7B - open-source голосовая диалоговая модель, которая умеет то, что обычно недоступно классическим пайплайнам: **слушать и говорить одновременно**.

Модель:
- 🔓 бесплатная и полностью открытая (MIT)
- 🤗 веса доступны на Hugging Face
- 🧠 full-duplex conversational model (двусторонний “живой” диалог)

Обычно Voice AI устроен так:
ASR → LLM → TTS
Сначала распознаём речь, потом думаем, потом озвучиваем.
Работает эффективно, но диалог получается “роботным”:
говоришь по очереди, без перебиваний, без живой реакции.

PersonaPlex-7B меняет подход.
Она работает на непрерывных аудио-токенах и использует dual-stream transformer, который генерирует текст и аудио параллельно, а не переключает управление между модулями.

Это даёт:
- мгновенные “угу / да / понял” реакции (back-channel)
- естественные перебивания и уточнения
- нормальный ритм разговора, как у человека

Ещё один плюс: управление “персоной” работает zero-shot, без дополнительного дообучения.

Если ты делаешь голосового ассистента или саппорт-агента с низкой задержкой - это очень сильный шаг вперёд.

https://github.com/NVIDIA/personaplex

@Python_Community_ru
🔥3
🧠 Продвинутые советы по работе с Regex в Python

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


import re
RE_EMAIL = re.compile(r"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b", re.I)
emails = RE_EMAIL.findall(text)


Используй raw-строки и re.VERBOSE, чтобы regex был читаемым, а не выглядел как случайный набор символов.



RE_DATE = re.compile(r"""
\b
(?P\d{4})-(?P0[1-9]|1[0-2])-(?P0[1-9]|[12]\d|3[01])
\b
""", re.VERBOSE)


Если группа не нужна в выводе - делай её non-capturing (?:...). Это уменьшает расходы памяти и путаницу с индексами групп.



re.findall(r"(?:https?://)?(?:www\.)?example\.com/\S+", text)


Используй правильные якоря. \A и \Z безопаснее для валидации, чем ^ и $, которые зависят от флага MULTILINE.



re.match(r"\A\d+\Z", "123\n")


Контролируй код и ставь ограничения.

Бесконтрольный .* — частая причина зависаний и ReDoS.



re.search(r"]{0,2000}>", html)


Lookahead и lookbehind позволяют искать текст без захвата. Это мощный инструмент для точных выборок.


m = re.search(r"(?

@Python_Community_ru
🎨 Генерация изображений с GLM-Image

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

🚀 Основные моменты:
- Поддержка генерации изображений из текста и редактирования изображений.
- Высокая точность рендеринга текста и семантического понимания.
- Модуль обратной связи для улучшения эстетики и детализации.
- Подходит для задач с высокой информационной плотностью.

📌 GitHub: https://github.com/zai-org/GLM-Image

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
NVIDIA показала новый разговорный ИИ - PersonaPlex

Суть фичи в том, что модель старается звучать максимально “живым” собеседником, а не просто отвечать по очереди.

Что умеет PersonaPlex:
· Переключать стиль общения (persona) - например строгий учитель, дружелюбный консультант, бармен и т.д.
· Говорить и слушать одновременно - меньше задержек и пауз в диалоге
· Поддакивать на фоне (“угу”, “ок”, “понятно”), пока человек говорит - чтобы разговор был ближе к реальному
· Проект открыт - исходники доступны, можно брать и пробовать самому

GitHub (http://github.com/NVIDIA/personaplex)
Hugging Face (http://huggingface.co/nvidia/personaplex-7b-v1)

@Python_Community_ru
Теперь даже HRы на питоне пишут!

@Python_Community_ru
🔥5👍2🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Python ищет дубликаты файлов

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

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


import os, hashlib

m = {}
for n in os.listdir("."):
if os.path.isfile(n):
with open(n, "rb") as f:
h = hashlib.md5(f.read()).hexdigest()
m.setdefault(h, []).append(n)

for v in m.values():
if len(v) > 1:
print("DUP:", v)

@Python_Community_ru
🚀 RenderCV: Open-Source AI для создания CV/резюме на лету

RenderCV - это GitHub-проект, который автоматизирует генерацию профессионального резюме с помощью AI. Он берет базовые данные (например, профиль, опыт, навыки) и формирует красиво отформатированный CV с умным распределением разделов, прицелом на ATS-системы (системы автоматического трекинга резюме) и внимание к деталям.

🔍 Основные фишки
- 💡 AI-генерация контента - на основе вводимых данных автоматически создаются описания опыта, навыков и достижений
- 📄 Готовые шаблоны — вывод резюме в структурированном виде, готовом для печати или публикации
- ⚙️ Настраиваемость — легко адаптировать под свой стиль, менять поля и формат
- 🤖 Поддержка AI-логики для переработки сухих фактов в интересные, читабельные формулировки

Простой рабочий цикл:
1) Вводишь базовые данные (имя, опыт, навыки)
2) AI дописывает грамотные описания
3) Получаешь готовое резюме без лишних усилий

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

🛠 Пример использования (в духе проектов этого класса):


# Клонируем репозиторий
git clone https://github.com/rendercv/rendercv.git

# Переходим в папку
cd rendercv

# Устанавливаем зависимости и запускаем
# (инструкции могут отличаться в зависимости от реализации)
npm install
npm start



https://github.com/rendercv/rendercv

@Python_Community_ru
🖥 PYTHON МАТЕМАТИКА КАК У ПРОФИ

Ппрофессиональный подход к математике в Python строится не вокруг «посчитать формулу», а вокруг правильного стека инструментов и воспроизводимости. Всегда разделяй символьную математику, численные методы и работу с данными.

Для аналитики и вывода формул используй SymPy, для быстрых численных расчётов - NumPy, для научных алгоритмов - SciPy, для больших таблиц экспериментов - Pandas.

Никогда не смешивай «магические числа» в коде - все параметры выноси в переменные. Работай в Jupyter или VS Code с ноутбуками, фиксируй версии библиотек и обязательно проверяй устойчивость решений через разные методы (например, интеграл численно и аналитически). Так код становится не просто расчётом, а научным инструментом.


import numpy as np
import sympy as sp
from scipy import integrate

# 1. Символьная математика
x = sp.symbols('x')
expr = sp.sin(x) / x
analytic_integral = sp.integrate(expr, (x, 1, 10))

# 2. Численная математика
f = lambda x: np.sin(x) / x
numeric_integral, error = integrate.quad(f, 1, 10)

# 3. Векторизация вместо циклов
arr = np.linspace(1, 10, 1_000_000)
fast_result = np.sin(arr) / arr

print("Analytic:", analytic_integral)
print("Numeric:", numeric_integral, "Error:", error)

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 С этим проектом, вы можете клонировать голоса, которые звучат по-настоящему живо.

Без робо-голоса. Без “синтетики”.
Полноценная, естественная человеческая речь.

Речь о модели на 1.7B параметров, заточенной под чистую и выразительную генерацию голоса.

Это уже не просто TTS.
Это высокоточное клонирование голоса с передачей интонаций, ритма и естественного звучания.

Разница между “голосом ИИ” и “голосом человека” стремительно исчезает.

Если ты работаешь с аудио, AI-ассистентами, агентами или медиа-инструментами - это серьёзно расширяет возможности.

Модель: https://huggingface.co/Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice

@Python_Community_ru
🌟 Для тех, кто еще не использует ИИ в разработке.

Выдели 1 час и прокачай самый важный навык 2026 года - работу с LLM.

Большинство устали сейчас не от кода.

А от того, что мы пытаемся использовать ИИ “на ходу”, без понимания его возможности.

Это такой же навык, как и другие. Его нужно тренировать.

Вот простой старт:

Подготовка

1. Подключи Anthropic Pro ($20) с прицелом позже перейти на 5× Max
2. Установи Claude Code
3. Используй модель Opus 4.5 (она стоит по умолчанию)

Рабочий цикл

1. Включи режим планирования
2. Попроси модель спланировать одну маленькую фичу
3. Когда план тебя устраивает - включай авто-принятие правок
4. Если видишь, что модель “уезжает не туда” - сразу ставь на паузу
5. Очищай контекст и переходи к следующей фиче

И так по кругу.

Задача не в том, чтобы получить идеальный код.
Задача - нащупать границы модели:

- что она делает быстро и качественно
- где начинает придумывать
- какие задачи ей давать выгодно
- где проще и безопаснее сделать самому

Через 10-20 часов такой осознанной практики ИИ перестаёт быть “магией” и становится нормальным рабочим инструментом, который реально снимает нагрузку.

@Python_Community_ru
Media is too big
VIEW IN TELEGRAM
🚀 Вышла интересная open-source модель - MiniCPM-o 4.5

MiniCPM-o 4.5 позиционируется как full-duplex omni-modal LLM.
Проще говоря, модель может:

- одновременно видеть (видео/изображение)
- слушать (аудио)
- говорить

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

Не только отвечает, но и проявляет инициативу

Заявлена поддержка проактивного поведения - модель может не просто реагировать на вопросы, а, например, сама инициировать напоминания или действия в рамках диалога.

По метрикам

С 9B параметрами модель показывает 77.6 на OpenCompass и, по авторам, обходит GPT-4o и Gemini 2.0 Pro в ряде vision-language задач. Для такого размера это сильный результат.

Практический момент

Главный плюс - это open-source, и всё можно крутить локально на ПК, а не только через облачные API.

https://huggingface.co/openbmb/MiniCPM-o-4_5

@Python_Community_ru
🖥 Вы неправильно считываете JSON в Python.

Большинство делает так - и теряет скорость, память и контроль над данными.

Ошибка №1 - читать огромный JSON целиком
json.load() загружает ВСЁ в память. На больших файлах ты сам создаёшь себе OOM.

Ошибка №2 - не валидировать структуру
Ты думаешь, что поле есть. Прод думает иначе.

Ошибка №3 - парсить стандартным json там, где нужна скорость
Стандартный модуль медленный для high-load задач.

Как правильно:

- Большие файлы → читать потоково (ijson / построчно)
- Критичная скорость → использовать orjson
- Важные данные → сразу проверять ключи и типы
- API → оборачивать в try/except, а не надеяться

Продакшн-код работает не потому что “JSON простой”,
а потому что ты контролируешь объём, структуру и ошибки.

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🕘 Таймер продуктивности на Python с использованием threading

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


import threading
import time
def timer(duration, break_duration):
print(f"Начинаем работу на {duration} минут.")
time.sleep(duration * 60) # Длительность работы в секундах
print("Время на перерыв!")
time.sleep(break_duration * 60) # Длительность перерыва в секундах
print("Перерыв закончен, продолжайте работу!")
# Задайте длительность работы и перерыва
work_duration = 25 # в минутах
break_duration = 5 # в минутах
# Запускаем таймер
threading.Thread(target=timer, args=(work_duration, break_duration)).start()

@Python_Community_ru
👎2👍1