# Overené odpovede v OpenWebUI `verified_agent.py` je samostatná funkcia typu **Pipe**, ktorá sprístupní dva modely: **ZP Agent / RAG – overené** a **ZP Agent / GraphRAG – overené**. Vybraný model zavolá backend `/answer` a zobrazí jeho schválený text priamo. Ďalší jazykový model tento text neprepisuje. ## Inštalácia administrátorom 1. V OpenWebUI otvorte **Admin Panel → Functions → Create New Function**. 2. Vložte obsah `verified_agent.py`, uložte funkciu napríklad ako `zp_verified` a zapnite ju. Kód funkcie vykonáva server OpenWebUI; neinštaluje ju bežný používateľ. 3. Vo **Valves** nastavte `BACKEND_URL` na adresu API dostupnú zo servera OpenWebUI a `BACKEND_API_KEY` na jeho `SEARCH_API_KEY`. Ak sú obe služby v rovnakej Compose sieti, URL je `http://zp-agent-api:8000`. `localhost` v školskom OpenWebUI neoznačuje tento vývojový počítač. 4. Backend potrebuje `OPENWEBUI_API_KEY` pre prístup ku generujúcemu modelu. Voliteľné `ANSWER_LLM_URL` má predvolenú hodnotu `https://ui.tukekemt.xyz/api/chat/completions`; `ANSWER_MODEL` je predvolene `model120-fast`. Vyberte základný model, ktorý nevolá tento Pipe, aby nevznikla slučka. Kľúče nezapisujte do zdrojového súboru ani Gitu. 5. V chate vyberte jeden z dvoch nových modelov. Overte bežnú odpoveď, nedostupnosť backendu, chýbajúce podklady a neúplný výsledok. Dokumentácia OpenWebUI: [Functions](https://docs.openwebui.com/features/extensibility/plugin/functions/), [Pipes](https://docs.openwebui.com/features/extensibility/plugin/functions/pipe/). ## Kontroly a hranice - API `/answer` vyžaduje rovnakú autorizáciu ako vyhľadávanie. - RAG kontroluje osobu, konkrétny názov, typ a rok z toho istého záznamu v skutočne doručenom kontexte. Rok kategórie nenahrádza rok práce. Používa iba vyhľadaný text; nečíta očakávania benchmarku ani Neo4j. - Všeobecné odpovede môžu obsahovať doslovné citované výňatky. Ich zhoda so zdrojom nezaručuje, že výňatok vyčerpáva význam celej otázky. - GraphRAG používa kontroly typovaných faktov, väzieb, citácií a agregácií. - Model má najviac jeden opravný pokus podľa podkladov. Potom sa odpoveď odmietne. Finálny text zostavuje aplikácia z overených údajov. - Pipe vyžaduje `accepted_for_delivery=true` a povolený stav. Odmietnutý modelový text ani diagnostické pokusy sa používateľovi nevracajú. - Neúplnosť a verzia indexov sa prenášajú z vyhľadávania. Upozornenie na neúplnosť je súčasťou zobrazeného textu. - Pôvodný `/rag` stále poskytuje podklady. Bežný OpenAPI Tool Server nasledovaný ľubovoľným LLM nezabezpečuje túto kontrolovanú cestu. - Funkcia pracuje s poslednou otázkou; zatiaľ neprepisuje odkazy typu „a jeho ďalšia práca“ podľa histórie konverzácie. Lokálny test integračného adaptéra a API: ```bash .venv/bin/python -m pytest -q test/test_verified_rag.py ``` Test kontroluje aj HTTP payload, autorizáciu a priamy výstup oboch modelov. Nezastupuje inštaláciu na školskom serveri: tú musí vykonať administrátor a overiť sieťovú dostupnosť API zo servera OpenWebUI.