Все самое полезное для питониста в одном канале.
Учиться у нас: clc.to/6e5Csg
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @tproger_sales_bot
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Post #7518
3.26K
БИ @pyproglib
Showing posts older than #7519 · Back to latest
AgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Написать пет-проект на Python легко, а вот сделать так, чтобы он не сливал бюджет на токены, не падал при нестандартных запросах и работал в проде — задача со звёздочкой.Jupyter: структурный вывод и типизация PydanticAI;LangGraph и другая парадигма AutoGen;RAG для продакшена и парсинг сложных документов;Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля!
Библиотека ICU (International Components for Unicode) — это мировой стандарт (её используют Chrome, macOS и VS Code), но в Python с ней всегда было сложно: либо древний неудобный API, либо мучения с установкой системных зависимостей.
icu4py вам не нужно писать if count == 1 для каждого языка — библиотека сама знает стандарты Unicode для любой локали.SentenceBreaker понимает контекст и не разрывает предложение на «т. д.» или внутри цитаты.pip install icu4py

pip, poetry, pyenv, pipx и virtualenv. Один бинарник, который умеет всё — от установки версии Python до управления воркспейсами.poetry install -> Стало: uv syncpoetry add requests -> Стало: uv add requestspoetry run python main.py -> Стало: uv run main.py

type[T]. Но как только дело доходило до сложных штук вроде int | str или list[int], тайп-чекеры начинали ругаться.type[int] работал, потому что int — это класс. Но list[int] или int | str — это не классы, а специальные объекты типов.type[T] выдавала ошибку в Mypy или Pyright. Разработчикам приходилось лепить Any, убивая всю пользу от статической проверки.
from typing import TypeForm
def trycast[T](target_type: TypeForm[T], value: object) -> T | None:
...
# Теперь это валидный код для тайп-чекера:
trycast(list[int], ["1", "2"]) # Вернет тип list[int] | None
trycast(int | str, 42) # Вернет тип int | str | None
typing_extensions её можно будет использовать гораздо раньше.openai.chat.completions. Настоящий продакшн требует управления состояниями через LangGraph и жёсткого контроля за token usage.Python-кода в стабильную бизнес-систему.LangGraph: реализация human-in-the-loop и механизмов отката состояний;RAG: обработка разнородных документов и оптимизация семантического поиска;LLM для оптимизации затрат;152-ФЗ.Agent для получения скидки 10 000 рублей**; 
LangChain за вечер может каждый. Но когда выкатываешь это в продакшн, начинаются проблемы: система зацикливается, память течёт, а API-ключи сжигают бюджет.LangGraph: маршрутизаторы, time-travel, прерывания и human-in-the-loop;Agent доступна скидка 10 000 рублей.
import malicious_lib. Но свежие данные по датасету QUT-DV25 (14 тысяч образцов) говорят об обратном: 56% пакетов исполняют полезную нагрузку прямо во время установки.pip install достаточно, чтобы лишиться переменных окружения или получить reverse shell через скрипты setup.py или post-install.install в отдельной песочнице — ресурсозатратно. Статические сканеры (вроде Snyk или Safety) часто пасуют перед обфускацией, а агенты рантайма (Falco) обычно следят за приложением уже после деплоя, пропуская фазу сборки.pip.setup.py или любой его дочерний процесс пытается достучаться до сервера, которого нет в белом списке (читай: любого сервера, кроме PyPI), инструмент мгновенно «убивает» всю группу процессов.
from algorithms.graph import dijkstra
graph = {
"s": {"a": 2, "b": 1},
"a": {"c": 8},
"b": {"d": 2},
"c": {"t": 4},
"d": {"c": 11, "t": 5},
"t": {},
}
print(dijkstra(graph, "s", "t")) # (8, ['s', 'b', 'd', 't'])

Human-in-the-loop, time-travel для отладки и сложные графы состояний вместо лапши из if-else.
