Стек intel-collector: что взял, почему, где документация / home / architecture / stack-decisions
architecturestackreferenceintel-collector

Стек intel-collector — что взял и почему

Для каждого пункта:


1. Python 3.12

Что это: Сам язык программирования. Версия 3.12 (с октября 2023). Актуальные тоже 3.13 / 3.14.

Зачем взял: Глубокая LLM/AI экосистема — все библиотеки (LangGraph, LiteLLM, SDK Anthropic/Google/OpenAI, pgvector wrappers) есть в Python нативно. 3.12 vs 3.11 — лучше typing (Generic TypedDict), быстрее, лучше error messages.

Альтернативы:

Docs: https://docs.python.org/3.12/


2. uv (package manager)

Что это: Инструмент для управления Python-пакетами и виртуальными окружениями. Альтернатива классической связке pip + venv или poetry.

Зачем взял: В 10-100 раз быстрее poetry. Один тул вместо нескольких (env, install, lock, publish). Развивается Astral — теми же кто делает ruff.

Альтернативы:

Docs: https://docs.astral.sh/uv/


3. ruff (linter + formatter)

Что это: Инструмент который проверяет код на ошибки/стиль (lint) и форматирует его. Написан на Rust.

Зачем взял: В ~100 раз быстрее старого стека (black + isort + flake8 + pylint). Один тул вместо четырёх. В 2026 — индустриальный стандарт.

Альтернативы: Реально нет конкурента в 2026, ruff выиграл рынок.

Docs: https://docs.astral.sh/ruff/


4. mypy (type checker)

Что это: Проверяет типы в Python-коде до запуска. Если ты написал def f(x: int) и зовёшь f("string") — mypy это поймает.

Зачем взял: Индустриальный стандарт для CLI type checking. Хорошая документация.

Альтернативы:

Docs: https://mypy.readthedocs.io/


5. pytest (testing)

Что это: Фреймворк для написания unit / integration тестов.

Зачем взял: В 2026 нет реальных конкурентов. Богатая экосистема плагинов.

Альтернативы: unittest из stdlib (старый стандарт, более многословный, никто не любит).

Docs: https://docs.pytest.org/


6. pre-commit (git hooks)

Что это: Запускает lint / format / tests автоматически при git commit — до того как код уйдёт в git history.

Зачем взял: Solo dev: ловить проблемы сразу, а не на CI через 10 минут. Дисциплина с первого дня.

Альтернативы:

Docs: https://pre-commit.com/


7. LangGraph (orchestration)

Что это: Фреймворк для построения stateful workflows из LLM-узлов. Каждый узел = функция, между ними — рёбра. Состояние сохраняется между шагами, можно паузить и продолжать (checkpointing).

Зачем взял:

Альтернативы:

Честный disclaimer: Для intel-collector конкретно — LangGraph слегка overkill. Взял потому что обкатываем паттерн для будущего 15k, где state и HITL критичны.

Docs: https://langchain-ai.github.io/langgraph/


8. LiteLLM (LLM abstraction)

Что это: Прокси/обёртка над всеми LLM-провайдерами (Anthropic, OpenAI, Google, Cohere, local Ollama/vLLM и десятки других). Единый API для всех.

Зачем взял:

Альтернативы:

Docs: https://docs.litellm.ai/


9. Pydantic v2

Что это: Библиотека для валидации данных через классы с автоматической проверкой типов и сериализацией в JSON. Когда LLM возвращает структуру — Pydantic проверяет что она правильная.

Зачем взял:

Альтернативы:

Docs: https://docs.pydantic.dev/2/


10. pydantic-settings

Что это: Расширение Pydantic для типизированного чтения переменных окружения. Вместо os.environ["GEMINI_API_KEY"] пишешь settings.gemini_api_key с автоматической проверкой что переменная есть и нужного типа.

Зачем взял: Естественное продолжение Pydantic, читает .env файлы, валидация на старте процесса (если переменной нет — процесс не запустится, а не упадёт через 5 минут).

Альтернативы:

Docs: https://docs.pydantic.dev/latest/concepts/pydantic_settings/


11. SQLAlchemy 2.0

Что это: ORM (Object-Relational Mapper) для Python. Позволяет писать "класс Item" вместо "CREATE TABLE items" и работать с базой через Python-объекты.

Зачем взял:

Альтернативы:

Docs: https://docs.sqlalchemy.org/en/20/


12. Alembic

Что это: Инструмент для миграций схемы БД — позволяет версионировать структуру таблиц. Когда добавил колонку — пишешь миграцию, она применяется на всех окружениях (dev / prod) в правильном порядке.

Зачем взял: Стандарт для SQLAlchemy. Альтернатив реально нет.

Docs: https://alembic.sqlalchemy.org/


13. psycopg (v3) с [binary]

Что это: Драйвер для подключения Python к PostgreSQL. [binary] означает прекомпилированную версию (быстрее ставится, не нужен компилятор).

Зачем взял: Самая современная версия (v3 с 2022). Лучше типизирован, async-aware, рекомендуется для SQLAlchemy 2.0.

Альтернативы:

Docs: https://www.psycopg.org/psycopg3/docs/


14. pgvector

Что это: Расширение для PostgreSQL которое добавляет тип vector (массив чисел) и операции косинусного сходства. Позволяет хранить эмбеддинги (векторные представления текстов) в обычной таблице рядом с данными.

Зачем взял:

Альтернативы:

Docs: https://github.com/pgvector/pgvector SQLAlchemy интеграция: https://github.com/pgvector/pgvector-python


15. feedparser (RSS)

Что это: Парсер RSS / Atom фидов в Python.

Зачем взял: Самый зрелый и проверенный временем (с 2003). Знает все edge-cases старых корявых RSS.

Альтернативы: Конкурентов реально нет. Все остальные — нишевые.

Docs: https://feedparser.readthedocs.io/


16. arxiv (Python lib)

Что это: Обёртка над публичным API Arxiv (научного препринт-сервера).

Зачем взял: Готовая работа с pagination, rate limits, parsing метаданных. Альтернатива — самому писать HTTP-клиент через httpx + feedparser.

Docs: https://github.com/lukasschwab/arxiv.py


17. httpx (HTTP client)

Что это: Современная замена requests. Поддерживает и синхронный, и асинхронный режим.

Зачем взял: Sync + async в одной библиотеке, поддержка HTTP/2, активно развивается.

Альтернативы:

Docs: https://www.python-httpx.org/


18. python-telegram-bot v21

Что это: Обёртка над Telegram Bot API. Позволяет писать ботов в Python.

Зачем взял: Самая стабильная и долго живущая (с 2015), хорошие docs.

Альтернативы:

Honest: Для нашего use-case (одно сообщение в день) — overkill. Если бы переписывал — взял бы 5 строк на httpx. Оставил ptb на случай если потом захочется inline-кнопки.

Docs: https://python-telegram-bot.org/


19. APScheduler

Что это: Внутрипроцессный планировщик задач. Держишь Python-процесс живым, он запускает функции по расписанию.

Зачем взял: In-process, async-native, гибче cron-а.

Альтернативы (актуально для нас):

Docs: https://apscheduler.readthedocs.io/


20. structlog (логирование)

Что это: Структурированное логирование. Вместо print("user x did y") пишешь log.info("user_action", user_id=x, action=y) — выводится JSON, который легко парсить.

Зачем взял: Стандарт для production-grade Python в 2026.

Docs: https://www.structlog.org/


21. tenacity (retry)

Что это: Декораторы для автоматических повторных попыток функций при сбое (например, LLM API упал — повторить через 2 секунды).

Зачем взял: Будет нужно когда добавим robustness к LLM-вызовам (сейчас не используется в коде, но в pyproject стоит).

Docs: https://tenacity.readthedocs.io/


Архитектурные паттерны на которые опирался

Эти не библиотеки — это паттерны проектирования. Источники — общая инженерная судебная и твой Gemini-артефакт.

Two-deployment via .env

Один код, два режима (SaaS облако / On-Prem). Переключение через переменные окружения, не через ветки кода. Подробно: two-deployment-pattern.

Detеrministic on LLM

LLM — только для интерпретации/семантики. Бизнес-логика и подсчёты — обычный код. Подробно: ../concepts/deterministic-on-exceptions, ../algorithms/deterministic-on-llm.

LLM as judge

Использовать LLM не для генерации, а для оценки/ранжирования с structured output. Подробно: ../algorithms/llm-as-judge.

Fan-out / merge

Параллельные запросы с агрегацией. Подробно: ../algorithms/fan-out-merge.


Что почитать если хочешь понять глубже

LangGraph (главное что стоит освоить):

Pydantic v2:

SQLAlchemy 2.0:

Гайд по LLM agents в общем (good mental model):


Если хочешь чтобы я обновил по свежим веб-источникам

Я могу WebFetch / WebSearch и подтянуть что-то конкретное (например, "что нового в LangGraph за последние 3 месяца", "stack overflow обсуждение poetry vs uv 2026"). Скажи что именно — сделаю.

Metadata
title
Стек intel-collector: что взял, почему, где документация
tags
['architecture', 'stack', 'reference', 'intel-collector']
created
2026-06-30
note
Honest caveat: knowledge cutoff моих training data — январь 2026. URL'ы — официальные docs которые на тот момент были каноном. Если что-то важное — открой ссылку и проверь, не сменился ли best practice. Я НЕ делал свежих веб-поисков при принятии этих решений.