slavabars / decision-cascade
git clone https://github.com/slavabars/decision-cascade.git
v0.7.0 · 3d ago
Local decision engine with typed, calibrated outputs (Noul/Choice/Score): cheap→strong cascade, ECE/Brier calibration, SystemOne protocol interop. Apache-2.0.
—
stars, 24h
+70
stars, 7 days · #714
+70
stars, 30 days · #3,507
70
★ total · +70% this week
0
forks · 0 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguagePython
LicenseApache-2.0
Created2026-10-13 (7d ago)
Last push2d ago
Watchers1
OwnerUser
GitHub topics
Links
README excerpt
# decision-cascade Machine-native система принятия решений в духе **Jev (TypeSafe AI)**, но с открытым исходным кодом, локальным исполнением и полным циклом «обучение → калибровка → оценка → деплой». Вместо того чтобы заставлять LLM генерировать текст ответа, модель **решает**: state-состояние превращается в признаки, а головы решений возвращают **типизированные, вероятностные и калибруемые** ответы — Noul (да/нет), Choice (выбор из опций) и Score (оценка на шкале) — без единого токена генерации. ## Что это за подход ### Машинные решения, а не генерация текста Обычный LLM-бот «думает» свободным текстом и выдаёт ответ естественным языком. Такой ответ невозможно: - проверять на корректность (нет машиночитаемого контракта); - калибровать (вероятность в тексте не измерить); - агрегировать (парсинг выводов хрупок). Движок принимает решения как **функция состояния → вероятность**: [code] Результат — строгий датакласс с `confidence`, валидируемым распределением (сумма = 1.0 ± 1e-6) и версией схемы. Это «System 1»-мышление: быстрое, дискретное, вероятностное решение по состоянию — без глубокого рассуждения. ### Почему это надёжнее - **Типизированные выходы** — каждый вопрос имеет заявленный тип и схему (Noul/Choice/Score), клиент проверяет ответ по контракту (`SCHEMA_VERSION = "1"`). - **Вероятности, а не слова** — модель обязана выдать распределение; его можно мерять на калибровку (Expected Calibration Error, Brier score) и править. - **Параллельная оценка** — все вопросы обрабатываются одним прогоном: один forward энкодера + N голов. Низкая задержка и дешёвая инференция. - **Без авторегрессии** — нет цикла генерации токенов, поэтому latency детерминированна и мала (на CPU см. раздел «Оценка»). - **Обучаемые головы** — головы можно дообучать под свои домены: SFT на разметке и RLCD (reinforcement learning for calibrated decisions, GRPO-подобный) для прямой оптимизации калибровки. ## Позиционирование ### Хостед Jev против локального decision-cascade | Критерий | Jev (платный SaaS) | decision-cascade | |----------|--------------------|---------------------------| | Цена | Подписка/кредиты API | Бесплатно, открытый исходный код | | Где работают данные | Облако вендора | Локально: ваш сервер, ваши данные | | Модель | Закрытая, фиксированная | Выбирается вами: от gpt2 (CPU) до gemma-4-12B (GPU) | | Выходной контракт | API вендора | Ваш: типизированный SDK, версиируемая схема | | Приватность | Обращения уходят вовне | Ничего не покидает машину (после дистанционной загрузки весов) | | Vendor lock-in | Есть | Нет: деплой через простые shell/systemd | | Калибровка | Чёрный ящик | Встроенные метрики ECE/Brier + CLI | | Обучение под домен | Нет | SFT + RLCD прямо в репозитории | | Задержка | Сетевая (RTT + инференс вендора) | Локальная, настраиваемая (обрезка входа `DECISION_MAX_LENGTH`); см. «Оценка» | | Внедрение | Только через их API | HTTP + Python SDK в вашем стеке | Латентность измеряется прямо в репозитории (`eval/latency`) и сильно зависит от модели