dp-zp-agent/README.md
jp170na 449946f220 Úprava README
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-14 03:34:40 +01:00

4.9 KiB
Raw Blame History

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

  1. 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).
  2. 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.
  3. 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.
  4. Vyhľadanie podkladov – podľa plánu sa hľadajú textové úseky alebo grafové fakty.
  5. Zostavenie odpovede – zoznamy, počty a metadáta skladá priamo kód; opisy a porovnania formuluje LLM výhradne z dodaných dôkazov.
  6. 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 /rag a /graphrag v 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 fork jp170na/zpwiki z KEMT/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.