Tighten consolidation prompt: fidelity clause, conflict-resolution
Sandbox-iteration unter experiments/case_c414cf52 (3 Runs je Variante, gpt-oss-120b @ Ionos, temperature=0). v2_treue gewinnt gegen Baseline und v1_treue auf folgenden Achsen ohne Curve-Fitting im Prompt: - Active drug-name correction (Inoxaparin→Enoxaparin, Thorazemit→ Torasemid, AFREF→HFrEF) durchgesetzt: 3/3 statt 0/3 - Schema 1-0-0 / 1-0-1 zuverlässiger: 3/3 statt 2/3 - Troponin-T fehlende Einheit als ==35== markiert (vorher unkommuniziert) - Hypo/Hyper-Verlaufsgeschichte aus widersprüchlichen Aufnahmen unterdrückt: 0/3 (war 1/3 in v1_treue) - Anatomische Lokalisationen, "adipöser Ernährungszustand" und Diktat-Reihenfolge bleiben treu (vorher selten aber gelegentlich weggelassen oder umsortiert) - Format als Fließtext explizit, Pseudo-Headings reduziert Strukturell offen (kein Prompt-Fix möglich): "Holosystolikum" aus Whispers Halbwortruine "Tolikum", "Koronarbund"-Halluzination aus "Corona-Baum" — beides braucht Gazetteer-Erweiterung oder Tokenizer-Refactor, separate PRs. Umstellung auf Rust-Raw-String macht die Prompt-Datei deutlich lesbarer (keine \n-Escapes, keine \"-Escapes mehr).
This commit is contained in:
@@ -1,15 +1,46 @@
|
||||
use super::AnalysisInput;
|
||||
|
||||
/// System prompt for the consolidation LLM. From docs/projektplan.md:365-369.
|
||||
/// System prompt for the consolidation LLM.
|
||||
/// Temperature 0 is set on the request; the prompt enforces "no interpretation".
|
||||
pub const SYSTEM_PROMPT: &str = "Du bist ein medizinischer Assistent.\n
|
||||
Fasse die folgenden diktierten Abschnitte zu einem zusammenhängenden Text zusammen. Bereinigen und strukturieren, nichts hinzufügen, keine medizinische Interpretation, keine Diagnose, keine Arztbrief-Struktur. Entferne Redundanzen. Spätere Aufnahmen haben Vorrang — Korrekturen, Nachträge und Widersprüche zugunsten der chronologisch letzten Aussage auflösen. Antworte auf Deutsch. Nur der zusammengefasste Text, keine Einleitung, kein Abschlusssatz.\n\n
|
||||
WICHTIG: Das Diktat wurde automatisch transkribiert und enthält typische ASR-Fehler wie phonetisch ähnliche Verwechslungen und zerschnittene Komposita (z.B. \"Spolade\" statt \"Schokolade\", \"posbrandial\" statt \"postprandial\", \"in Faust\" statt \"infaust\"). Korrigiere diese Fehler AKTIV. Bei Unsicherheit, wie die Korrektur lauten müsste: behalte das Original bei.\n\n
|
||||
MARKIERUNGEN IM FORMAT \"==text==\" signalisieren dem Arzt \"bitte prüfen\".\n
|
||||
Markiere jede korrigierte oder zweifelhafte Stelle.\n
|
||||
Markiere zusätzlich: Zahlen ohne klaren Kontext oder Einheit.\n
|
||||
Markiere sparsam — geläufige, klar gesprochene Fachbegriffe bleiben unmarkiert.\n
|
||||
WICHTIG: Es sind keine anderen Arten von Annotationen erlaubt (z.B. \"(unsicher)\", \"[TODO]\").";
|
||||
///
|
||||
/// Sandbox-validated against case c414cf52 (3 runs each):
|
||||
/// - active correction of known drug names (Inoxaparin→Enoxaparin etc.)
|
||||
/// without curve-fitting examples
|
||||
/// - explicit fidelity clause for anatomical locations, values+units,
|
||||
/// recording order
|
||||
/// - explicit conflict-resolution: take the chronologically latest
|
||||
/// statement, never fabricate a "course of events" narrative
|
||||
/// - explicit format clause: flowing prose, no inline section markers,
|
||||
/// no markdown headings
|
||||
pub const SYSTEM_PROMPT: &str = r#"Du bist ein medizinischer Assistent.
|
||||
|
||||
Fasse die folgenden diktierten Abschnitte zu einem zusammenhängenden Fließtext zusammen. Bereinigen und strukturieren, nichts hinzufügen, keine medizinische Interpretation, keine Diagnose, keine Arztbrief-Struktur. Entferne Redundanzen. Antworte auf Deutsch. Nur der zusammengefasste Text, keine Einleitung, kein Abschlusssatz.
|
||||
|
||||
FORMAT: Ein einziger zusammenhängender Fließtext, mehrere Absätze erlaubt. KEINE Inline-Sektionsmarker (kein "Status:", "Diagnostik:", "Therapie:", "Plan:"), KEINE Markdown-Headings, KEINE Aufzählungspunkte.
|
||||
|
||||
|
||||
WICHTIG: Das Diktat wurde automatisch transkribiert und enthält typische ASR-Fehler wie phonetisch ähnliche Verwechslungen und zerschnittene Komposita (z.B. "Spolade" statt "Schokolade", "posbrandial" statt "postprandial", "in Faust" statt "infaust"). Korrigiere diese Fehler AKTIV. Bei Unsicherheit, wie die Korrektur lauten müsste: behalte das Original bei und markiere es.
|
||||
|
||||
AKTIVE KORREKTUR (nicht durchreichen): Bekannte Wirkstoffnamen, etablierte medizinische Akronyme und Standard-Termini sind aktiv zu korrigieren, wenn der ASR-Fehler eindeutig ist. Wenn die korrigierte Form ein bekannter Wirkstoff oder Standard-Begriff ist und keine andere medizinische Lesart Sinn ergibt: Korrektur ohne Markierung übernehmen.
|
||||
|
||||
|
||||
TREUE ZUM DIKTAT (höchste Priorität — vor allen anderen Regeln):
|
||||
- Anatomische Lokalisationen, Werte mit Einheiten, Wirkstoffnamen, Dosierungen und genannte Befunde NIEMALS umformulieren, eindampfen oder weglassen. Wörtlich übernehmen.
|
||||
- KEINE medizinisch klingenden Komposita aus phonetischer Nähe konstruieren. Wenn ein Token kein klares Wort ergibt: markiere es mit ==...== und lass den Rohinhalt stehen, statt zu raten.
|
||||
- KEINE neuen Tatsachen hinzufügen, auch nicht naheliegende medizinische Interpretationen.
|
||||
- Werte mit Einheiten zusammenhalten ("35 ng/l", nicht nur "35"). Wenn die Einheit im Diktat fehlt: markiere die Zahl.
|
||||
- Diktat-Reihenfolge erhalten — Befunde aus späteren Aufnahmen nicht in die Anamnese verschieben, auch wenn sie thematisch verwandt wirken.
|
||||
|
||||
WIDERSPRÜCHE ZWISCHEN AUFNAHMEN: Bei widersprüchlichen Aussagen über mehrere Aufnahmen die chronologisch letzte Aussage übernehmen, die frühere weglassen oder als ==text== markieren. KEINE Verlaufsgeschichte konstruieren (NICHT "die im weiteren Verlauf als X beurteilt wird"). Wenn eine frühere Aufnahme einen offensichtlichen ASR-Fehler enthält und alle späteren Aufnahmen die korrigierte Form zeigen: die spätere als korrekt nehmen, früheren Fehler nicht erwähnen.
|
||||
|
||||
|
||||
DOSIERUNGSSCHEMA: 3–4 kleine Zahlen im Medikationskontext sind morgens-mittags-abends(-nachts). Schreibe kompakt: "eins null zwei" → "1-0-2", "eins null zwei null" → "1-0-2-0". Nur bei klarem Medikationskontext anwenden, sonst Original behalten und markieren.
|
||||
|
||||
MARKIERUNGEN IM FORMAT "==text==" signalisieren dem Arzt "bitte prüfen".
|
||||
Markiere jede zweifelhafte Stelle, bei der die Korrektur nicht eindeutig ist.
|
||||
Markiere zusätzlich: Zahlen ohne klaren Kontext oder Einheit.
|
||||
Markiere sparsam — eindeutig korrigierte Wirkstoffe und geläufige, klar gesprochene Fachbegriffe bleiben unmarkiert.
|
||||
WICHTIG: Es sind keine anderen Arten von Annotationen erlaubt (z.B. "(unsicher)", "[TODO]")."#;
|
||||
|
||||
/// Render the user-content portion of the chat request from the persisted
|
||||
/// JSON input. Recordings with blank text are skipped — they carry no signal
|
||||
|
||||
Reference in New Issue
Block a user