|
|
||
|---|---|---|
| app | ||
| deployment | ||
| packages/claude | ||
| runtime_assets | ||
| scripts | ||
| test | ||
| tools | ||
| .dockerignore | ||
| .gitignore | ||
| conftest.py | ||
| pytest.ini | ||
| README.md | ||
ZP Agent
Backend, ktorý odpovedá na otázky o záverečných prácach z repozitára zpwiki
(ZP Wiki, KEMT FEI TUKE). Vzniká v rámci práce Agent pre manažment záverečných prác.
Spracúva profily študentov, zadania a záznamy zo stretnutí a odpovedá na otázky o prácach, projektoch, vedúcich, témach, výsledkoch, rokoch a vzťahoch medzi študentmi. Každá odpoveď je overená a má odkazy na zdroj.
Ako funguje
- Synchronizácia – načíta Markdown a YAML metadáta z lokálnej kópie Git repozitára (ručne, webhookom z Gitea alebo automaticky každých 24 hodín).
- Indexovanie – rozdelí texty na úseky a z rovnakého snapshotu vytvorí textový, vektorový a grafový index. Nová verzia sa aktivuje až keď sú hotové všetky; pri chybe zostáva predchádzajúca.
- Porozumenie otázke – otázka sa preloží na typovaný plán (osoby, roly, práce, roky, obdobia, podmienky). Jednoznačné otázky plánujú pravidlá; nové formulácie priradí LLM k pevnému katalógu typov otázok. Model nikdy nepíše databázový dotaz.
- Vyhľadanie podkladov – podľa plánu sa hľadajú textové úseky alebo grafové fakty.
- Zostavenie odpovede – zoznamy, počty a metadáta skladá priamo kód; opisy a porovnania formuluje LLM výhradne z dodaných dôkazov.
- Kontrola pred odoslaním – backend overí osoby, práce, čísla a citácie a samostatné LLM volanie overí, že tvrdenia sú podložené. Neoverenú odpoveď nevydá; namiesto toho oznámi, že odpoveď nie je dostupná.
Pravidlá domény: autor profilovej stránky študenta je jeho vedúci (konvencia KEMT), rok práce nie je dátum stretnutia a zadanie ani plán sa nevydávajú za výsledok.
Vyhľadávanie
RAG – kombinuje fulltext BM25 a sémantické vyhľadávanie (embeddingy), výsledky spája metódou RRF. Osobu, typ práce a rok filtruje záväzne. Slovenské tvary slov zjednocuje lematizácia (Stanza) a poradie kandidátov spresňuje cross-encoder reranker. Hodí sa na otázky o obsahu, zadaní, metódach, priebehu a výsledkoch práce.
GraphRAG – pevné Cypher šablóny nad grafom v Neo4j (osoby, práce, témy, činnosti, dôkazy). Odpovedá na vzťahy: kto robil danú tému, podobní študenti, súvisiace témy, vedúci a ich študenti, roky a počty. Prepojenia dokladá výňatkami z oboch prác.
Obsahový graf – LLM z profilov extrahuje činnosti, pojmy a výsledky. Každý poznatok
má doslovný výňatok, aktéra, konkrétnu prácu, fázu a dátum. Neisté poznatky sa ako
fakty nepoužijú. Rovnaké pojmy v rôznych tvaroch sa automaticky zjednotia.
Extrakciu spúšťa python -m tools.knowledge.build (vyžaduje nakonfigurované LLM API).
Použité technológie
- Python, FastAPI, Pydantic – API, validácia vstupov a typované plány a odpovede.
- SQLite + FTS5 – dokumenty, metadáta, fulltextový index, vektory a cache.
- Sentence Transformers, multilingual-e5-small – viacjazyčné embeddingy.
- Cross-encoder mmarco-mMiniLMv2 – preusporiadanie (reranking) nájdených podkladov.
- Stanza – lematizácia slovenčiny.
- Neo4j a Cypher – metadátový a obsahový graf.
- OpenAI-kompatibilné LLM API – plánovanie nejasných otázok, formulácia a overenie odpovedí.
- DSPy (offline) – optimalizácia inštrukcií a príkladov katalógu typov otázok.
- Tiktoken – meranie a delenie textových úsekov.
- MCP (FastMCP) a Claude Skills – nástroje
/raga/graphragv Claude. - OAuth s PKCE, Cloudflare Tunnel – zabezpečený verejný prístup k MCP serveru.
- Docker Compose – nasadenie API, Neo4j, MCP servera a tunela.
- Git a Gitea webhooky – získavanie zmien zo ZP Wiki.
- Pytest – testy funkcionality a regresie.
Priečinky
app/– HTTP API (endpointy/answer,/graphrag,/health, synchronizácia) a zabezpečenie.tools/rag/– textové a vektorové vyhľadávanie.tools/graphrag/– metadátový graf a grafové dotazy.tools/knowledge/– obsahový graf: extrakcia poznatkov a ich vyhľadávanie.tools/answers/– plán otázky, zostavenie a kontrola odpovede.tools/retrieval/– spoločné vyhľadávacie pravidlá, mená, lematizácia, reranker.tools/sync/– synchronizácia s Git repozitárom a obnova indexov.tools/git_runner/– Gitea runner, ktorý dopĺňa forkjp170na/zpwikizKEMT/zpwiki.tools/runtime/– príprava modelov a indexov pri štarte.tools/claude/,packages/claude/– zostavenie a hotové Claude Skills (dist/rag,dist/graphrag).deployment/– Dockerfile, Docker Compose a závislosti.scripts/– spúšťacie skripty.test/,tools/*/tests/– testy funkcionality jednotlivých služieb (plánovanie, vyhľadávanie, kontrola odpovedí, API, synchronizácia, balíky Claude).data/– lokálne dáta za behu (indexy, cache); nie sú v Gite.