Systém
Governance runtime
Pravidlový engine nad vektorovou databází, který stojí mezi AI nástroji a firmou. Dostane kus
textu a jeho kontext, najde pravidla, která platí, spustí jejich kontroly a vrátí strukturovaný
verdikt — ok, warn, block nebo insufficient_data — s pravidly, která se shodla, kontrolami,
které selhaly, a konkrétními kroky, jak text opravit. Vlastní model pro rozhodování nemá: volající
pošle text, dostane verdikt a podle něj jedná.
Problém
Pravidla nad volným textem jsou těžší než průchod regulárním výrazem. Která pravidla platí, závisí na kontextu — pravidlo o číslech karet je v interním logu bezpředmětné a v e-mailu ven zásadní. Jak přísně, závisí na místě. Tón a rozpor nejsou otázka klíčových slov. A každé rozhodnutí musí jít dohledat a vrátit.
Jak probíhá konzultace
- Spouštěče — vyhodnocovač s uzavřenou sadou operátorů (žádné
eval) rozhodne, které playbooky platí. - Vektorové vyhledání — pgvector s embeddingy sentence-transformers vytáhne relevantní uložené kusy a dřívější případy.
- Kontroly — každý platný playbook spustí své kontroly: regulární výraz, test odvozování v přirozeném jazyce (NLI) nebo malý výraz v izolovaném prostředí.
- Verdikt — platné playbooky, varování, kroky a odkazy, k tomu použitá úroveň kontroly.
Na čem stojí
- Pravidla jako data. Playbooky jsou soubory YAML se spouštěči, kontrolami (každá se závažností) a úrovní kontroly; validují se a verzují, takže se pravidla mění bez nového nasazení.
- Tři úrovně kontroly — doporučit, varovat, zablokovat. Pravidlo určí nejnižší úroveň, kterou potřebuje; volající může přísnost zvýšit, nikdy potichu snížit.
- Kotva proti odbíhání. Relace nese kotevní embedding svého tématu; každé volání hlásí míru a stav odchýlení a vyzve k návratu, když rozhovor odběhne.
- Závora pro akce ven. Závažnost se odvozuje pravidlem z typovaného snímku dat — nikdy z toho, jak volající sám popíše, co dělá — zpráva se sestaví ze šablony a rozhodnutí se zapíše jako auditní záznam.
- Při pochybnosti zavřeno. Playbook bez spouštěčů se nikdy nespustí; neznámý operátor se vyhodnotí jako nepravda; úroveň kontroly jde jen zvýšit.
- Oddělení nájemců po schématech. Každý nájemce má vlastní schéma v Postgresu; trojí závora (nájemce → role → dokument) drží data jednoho nájemce mimo výsledky druhého.
Technologie
Python 3.11 · FastAPI · SQLAlchemy 2 (async) · Alembic · Postgres + pgvector · sentence-transformers (BGE-M3, CPU) · Pydantic v2. Jednotkové testy běží v CI bez databáze.
Kód je soukromý a zpřístupňuji ho na pozvání — požádat o přístup.