Architektonický vzor Triage-and-Voice pro eliminaci halucinací LLM
LLM v chatbotu analyzuje konverzaci a místo skutečného čísla na horkou linku vymyslí dětskou linku důvěry. Instrukce "nevymýšlej kontakty" je ignorována. Příčina – konflikt úkolů v jednom průchodu: přesná analýza a empatická odpověď soutěží o tokeny, což vede k halucinacím v kritických datech.
Problém mono-průchodové architektury
Ve standardním schématu LLM produktu jde vstup uživatele přímo do modelu, který vydá finální odpověď. Analýza vyžaduje strukturovaný JSON výstup s přesnými fakty: účastníci, rizika, cíle. Formulace odpovědi – kreativní úkol s hlasem a tónem.
Spojení v jeden prompt vede ke kompromisům:
- Model obětuje přesnost kvůli stylu.
- Halucinace jsou maskovány jako přesvědčivý text.
- Nelze programově odlišit fakt od výmyslu.
Zvýšení výkonu modelu (reasoning modely, více tokenů) snižuje četnost chyb, ale neodstraňuje problém. U složitých případů s podtextem i špičkové modely pletou motivy a domýšlejí detaily. Riziko se týká důvěryhodných dat: ceny, adresy, dávkování, kontakty služeb.
Vzor Triage-and-Voice
Rozdělte zpracování na dva LLM průchody s backendovým vrátným mezi nimi.
Průchod 1: Triage (třídění). Strukturální analýza bez stylu. Model extrahuje signál do JSON:
{
"nálada": "úzkost",
"je_krize": false,
"typ_krize": null,
"účastníci": [...],
"motivy": [...]
}
Krizový příklad:
{
"nálada": "červená_vlajka",
"je_krize": true,
"typ_krize": "násilí"
}
Backendový vrátný. Deterministický kód kontroluje příznaky:
if (triage.JeKrize) {
var kontakty = await db.Získej_Ověřené_Krizové_Kontakty(triage.TypKrize);
prompt = krizovýPromptŠablona.SKontakty(kontakty);
}
Dosazují se ověřená data z databáze. Směrování podle pravidel: krize → speciální prompt.
Průchod 2: Voice (hlas). Model dostane obohacený vstup a generuje odpověď v požadovaném tónu. Neanalyzuje, nevymýšlí fakta.
Testování na DeepSeek V3.2 (desítky krizových případů): nula halucinací kontaktů.
Výhody rozdělení
- Rozdělení odpovědnosti. Triage se soustředí na strukturu (tokeny na fakta). Voice – na stylu (tokeny na empatii). Kvalita v obou dimenzích roste (ověřeno na 40 eval případech).
- Ukládání do mezipaměti. Analýza jednou. Při změně hlasu (perspektivy v Telegram bota) se restartuje pouze Voice. Metriky: první odpověď 30–45 s (vs 50–90 s), následné 15–20 s.
- Bezpečnost. Kontrola v kódu, ne v promptu. Model nastaví příznak ("kdy"), backend rozhodne ("co"). Testovatelné, předvídatelné.
Scénáře použití
Vzor je aktuální pro LLM produkty s:
- Analýzou vstupu + generací výstupu.
- Důvěryhodnými daty (finance, právní odkazy, medicína).
- Edge případy (krize, výjimky).
- Více perspektivami bez reanalýzy.
- Potřebným kontrolním bodem mezi analýzou a výstupem.
Princip: model analyzuje → kód rozhodne → model formuluje.
Signál k refaktorování: prompt obsahuje "NEvymýšlej [data]".
Co je důležité
- Architektonický posun: od jednoho volání ke dvěma s vrátným, odstraňuje konflikt úkolů.
- Metriky výkonu: analýza se ukládá do mezipaměti, Voice se zrychluje 2–3krát.
- Bezpečnost: deterministický backend dosazuje fakta, model se nedotýká databáze.
- Škálovatelnost: použitelné pro chatbota, analytiku, produkty s edge případy.
- Ověřeno: 40 eval + desítky krizových běhů bez halucinací.
Rizika naivní architektury
Jedno volání = atomární operace bez validace. Chybí:
- Kontrola rozhodnutí modelu před uživatelem.
- Mezipaměť analýzy.
- Směrování edge případů.
- Dosazení ověřených dat.
Důvěra v pravděpodobnostní generaci na kritických místech – zranitelnost. Triage-and-Voice přidává kontrolu: +1 volání, +1 vrátný = ověřitelný pipeline.
— Editorial Team
Zatím žádné komentáře.