Das Triage-und-Voice-Architekturmuster zur Vermeidung von LLM-Halluzinationen
Ein LLM in einem Chatbot analysiert eine Konversation und erfindet anstelle der tatsächlichen Hotline-Nummer eine Kinderhilfsnummer. Die Anweisung "erfinde keine Kontakte" wird ignoriert. Der Grund ist ein Konflikt von Aufgaben in einem einzigen Durchlauf: Präzise Analyse und empathische Antwort konkurrieren um Tokens, was zu Halluzinationen bei kritischen Daten führt.
Das Problem mit der Single-Pass-Architektur
Im Standard-LLM-Produktschema geht die Benutzereingabe direkt an das Modell, das die endgültige Antwort erzeugt. Die Analyse erfordert eine strukturierte JSON-Ausgabe mit präzisen Fakten: Teilnehmer, Risiken, Ziele. Die Formulierung der Antwort ist eine kreative Aufgabe, die Stimme und Tonfall umfasst.
Die Kombination dieser Aufgaben in einer einzigen Prompt führt zu Kompromissen:
- Das Modell opfert Genauigkeit für Stil.
- Halluzinationen werden als überzeugender Text getarnt.
- Es ist unmöglich, programmatisch zwischen Fakt und Fiktion zu unterscheiden.
Eine Erhöhung der Modellleistung (Reasoning-Modelle, mehr Tokens) reduziert die Fehlerhäufigkeit, beseitigt das Problem aber nicht. In komplexen Fällen mit Subtext verwechseln selbst Top-Modelle Motive und erfinden Details. Das Risiko betrifft vertrauenswürdige Daten: Preise, Adressen, Dosierungen, Servicekontakte.
Das Triage-und-Voice-Muster
Teile die Verarbeitung in zwei LLM-Durchläufe mit einem Backend-Gatekeeper dazwischen auf.
Durchlauf 1: Triage. Strukturelle Analyse ohne Stil. Das Modell extrahiert das Signal in JSON:
{
"stimmung": "ängstlich",
"ist_krise": false,
"krisentyp": null,
"teilnehmer": [...],
"motive": [...]
}
Krisenbeispiel:
{
"stimmung": "rote_flagge",
"ist_krise": true,
"krisentyp": "gewalt"
}
Backend-Gate. Deterministischer Code prüft Flags:
if (triage.IsCrisis) {
var contacts = await db.GetVerifiedCrisisContacts(triage.CrisisType);
prompt = crisisPromptTemplate.WithContacts(contacts);
}
Verifizierte Daten aus der Datenbank werden eingefügt. Routing nach Regeln: Krise → spezielle Prompt.
Durchlauf 2: Voice. Das Modell erhält angereicherte Eingaben und generiert eine Antwort im gewünschten Ton. Es analysiert oder erfindet keine Fakten.
Tests mit DeepSeek V3.2 (Dutzende Krisenfälle): null Kontakt-Halluzinationen.
Vorteile der Trennung
- Trennung der Verantwortlichkeiten. Triage konzentriert sich auf Struktur (Tokens für Fakten). Voice konzentriert sich auf Stil (Tokens für Empathie). Die Qualität in beiden Dimensionen verbessert sich (verifiziert an 40 Eval-Fällen).
- Caching. Die Analyse wird einmal durchgeführt. Bei Änderung der Stimme (Perspektiven in einem Telegram-Bot) wird nur Voice erneut ausgeführt. Metriken: erste Antwort 30–45 s (vs. 50–90 s), nachfolgende Antworten 15–20 s.
- Sicherheit. Die Kontrolle liegt im Code, nicht in der Prompt. Das Modell setzt ein Flag ("wann"), das Backend entscheidet ("was"). Testbar, vorhersehbar.
Anwendungsszenarien
Das Muster ist relevant für LLM-Produkte mit:
- Eingabeanalyse + Ausgabegenerierung.
- Vertrauenswürdigen Daten (Finanzen, Rechtsreferenzen, Medizin).
- Grenzfällen (Krisen, Ausnahmen).
- Mehreren Perspektiven ohne Neuanalyse.
- Einem benötigten Kontrollpunkt zwischen Analyse und Ausgabe.
Prinzip: Modell analysiert → Code entscheidet → Modell formuliert.
Refactoring-Signal: Die Prompt enthält "ERFINDE KEINE [Daten]".
Wichtige Punkte
- Architekturwechsel: von einem Aufruf zu zwei mit einem Gate, um Aufgabenkonflikte zu eliminieren.
- Leistungsmetriken: Analyse wird gecached, Voice beschleunigt sich um das 2–3-fache.
- Sicherheit: Deterministisches Backend fügt Fakten ein, Modell berührt nicht die Datenbank.
- Skalierbarkeit: Anwendbar auf Chatbots, Analytik, Produkte mit Grenzfällen.
- Verifiziert: 40 Eval + Dutzende Krisenläufe ohne Halluzinationen.
Risiken der naiven Architektur
Ein Aufruf = atomare Operation ohne Validierung. Fehlt:
- Validierung der Modellentscheidung vor Erreichen des Nutzers.
- Analyse-Cache.
- Routing für Grenzfälle.
- Einfügung verifizierter Daten.
Probabilistischer Generierung an kritischen Stellen zu vertrauen ist eine Schwachstelle. Triage-und-Voice fügt Kontrolle hinzu: +1 Aufruf, +1 Gate = verifizierbare Pipeline.
— Editorial Team
Noch keine Kommentare.