{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/scripts\/pipeline\/config\/entity_extraction_baseline.yaml",
"content": "# Entity Extraction Baseline\n# Generiert: 2025-12-26\n# Testdokument: demo.pdf (4 Chunks)\n\nversion: \"1.0\"\ntest_document: \"demo.pdf\"\nchunks_processed: 4\n\n# =============================================================================\n# ERGEBNISSE\n# =============================================================================\nresults:\n total_entities: 38\n by_type:\n CONCEPT: 35\n ROLE: 2\n MODEL: 1\n\n # Korrekte ROLE-Kategorisierung (war vorher PERSON)\n role_entities:\n - Klient\n - Coachee\n\n # Alle extrahierten Entities\n entities:\n - {name: \"Allparteilichkeit\", type: \"CONCEPT\"}\n - {name: \"Anforderungsprofil\", type: \"CONCEPT\"}\n - {name: \"Ausbildung\", type: \"CONCEPT\"}\n - {name: \"Beobachtungen\", type: \"CONCEPT\"}\n - {name: \"Beratungskontext\", type: \"CONCEPT\"}\n - {name: \"Bewertungen\", type: \"CONCEPT\"}\n - {name: \"Coach-Persönlichkeit\", type: \"CONCEPT\"}\n - {name: \"Coach-System\", type: \"CONCEPT\"}\n - {name: \"Coaching\", type: \"CONCEPT\"}\n - {name: \"Coachee\", type: \"ROLE\"}\n - {name: \"Demut\", type: \"CONCEPT\"}\n - {name: \"Empathie\", type: \"CONCEPT\"}\n - {name: \"Grundhaltungen\", type: \"CONCEPT\"}\n - {name: \"individuell passgenaue Lösung\", type: \"CONCEPT\"}\n - {name: \"innere Lösungsvorschläge\", type: \"CONCEPT\"}\n - {name: \"Irritationen\", type: \"CONCEPT\"}\n - {name: \"Jobbeschreibung\", type: \"CONCEPT\"}\n - {name: \"Klient\", type: \"ROLE\"}\n - {name: \"Kompetenz-DNA\", type: \"CONCEPT\"}\n - {name: \"Kompetenzen\", type: \"CONCEPT\"}\n - {name: \"Konstruktionen\", type: \"CONCEPT\"}\n - {name: \"Koproduktion\", type: \"CONCEPT\"}\n - {name: \"Lösung\", type: \"CONCEPT\"}\n - {name: \"Lösungen\", type: \"CONCEPT\"}\n - {name: \"Neugierde\", type: \"CONCEPT\"}\n - {name: \"Neutralität\", type: \"CONCEPT\"}\n - {name: \"Offenheit\", type: \"CONCEPT\"}\n - {name: \"Prozess\", type: \"MODEL\"}\n - {name: \"Selbstwahrnehmung\", type: \"CONCEPT\"}\n - {name: \"System\", type: \"CONCEPT\"}\n - {name: \"Transparenz\", type: \"CONCEPT\"}\n - {name: \"Verhalten\", type: \"CONCEPT\"}\n - {name: \"Verhaltensrepertoir\", type: \"CONCEPT\"}\n - {name: \"Vertrauensvorschuss\", type: \"CONCEPT\"}\n - {name: \"Vorstellungen und Bewertungen\", type: \"CONCEPT\"}\n - {name: \"Wertschätzung\", type: \"CONCEPT\"}\n - {name: \"Wirklichkeitskonstruktion\", type: \"CONCEPT\"}\n - {name: \"Wissen um Nichtwissen\", type: \"CONCEPT\"}\n\n# =============================================================================\n# PROMPTS\n# =============================================================================\nprompts:\n entity_extraction:\n name: \"entity_extraction\"\n use_case: \"entity_extraction\"\n content: |\n Du bist ein Experte für Coaching und Systemische Beratung. Extrahiere ALLE wichtigen Fachbegriffe aus dem Text.\n\n Extrahiere diese Kategorien:\n - CONCEPT: Fachbegriffe, Methoden, Prozesse (z.B. Auftragsklärung, Teamcoaching, Intervention, Konfliktklärung)\n - PERSON: Namen von Personen\n - ORGANIZATION: Institutionen, Firmen\n - LOCATION: Orte\n\n Sei GRÜNDLICH - extrahiere jeden relevanten Fachbegriff aus dem Coaching\/Beratungskontext.\n Jeder Begriff braucht eine kurze Erklärung (5-15 Wörter).\n\n JSON-Format:\n {\"entities\": [{\"name\": \"Begriff\", \"type\": \"CONCEPT\", \"description\": \"Kurze Erklärung\"}]}\n\n Text:\n {{TEXT}}\n\n# =============================================================================\n# NORMALIZER REGELN (deterministische Korrektur)\n# =============================================================================\nnormalizer:\n description: \"Deterministische Regeln überschreiben LLM-Kategorisierungsfehler\"\n config_file: \"\/var\/www\/scripts\/pipeline\/config\/entity_type_rules.yaml\"\n\n # Wichtigste Korrekturen\n role_corrections:\n - Coach\n - Coachee\n - Klient\n - Klientin\n - Therapeut\n - Berater\n - Trainer\n - Supervisor\n - Moderator\n - Facilitator\n - Mentor\n - Mediator\n\n method_corrections:\n - Wunderfrage\n - Skalierungsfrage\n - Reframing\n - Zirkuläres Fragen\n - Genogrammarbeit\n - Aufstellung\n - Reflecting Team\n - Externalisieren\n\n pattern_rules:\n THEORY: [\".*therapie$\", \".*ansatz$\", \".*theorie$\"]\n METHOD: [\".*frage$\", \".*technik$\", \".*intervention$\"]\n MODEL: [\".*modell$\", \".*kreislauf$\", \".*prozess$\"]\n ROLE: [\".*coach$\", \".*berater$\", \".*therapeut$\"]\n\n# =============================================================================\n# PIPELINE-ARCHITEKTUR\n# =============================================================================\npipeline:\n model: \"ollama:gemma3:27b-it-qat\"\n\n steps:\n 1_extraction:\n description: \"Entity-Namen aus Text extrahieren\"\n validation: \"Nur Entities die EXAKT im Text vorkommen\"\n\n 2_categorization:\n description: \"LLM kategorisiert Entities\"\n output: \"name, type, description\"\n\n 3_normalization:\n description: \"Deterministische Typ-Korrektur\"\n priority: \"explicit > pattern > llm_type > default\"\n module: \"analyzers\/entity_normalizer.py\"\n\n 4_storage:\n description: \"Speichern mit canonical_name und Deduplizierung\"\n table: \"ki_content.entities\"\n\n# =============================================================================\n# VERBESSERUNGEN gegenüber Baseline\n# =============================================================================\nimprovements:\n - issue: \"ROLE vs PERSON Verwechslung\"\n solution: \"EntityNormalizer mit expliziten Mappings\"\n result: \"Klient, Coachee korrekt als ROLE\"\n\n - issue: \"LLM ignoriert Prompt-Anweisungen\"\n solution: \"Deterministische Post-Processing Regeln\"\n result: \"100% korrekte ROLE-Kategorisierung\"\n\n - issue: \"Halluzinierte Entities\"\n solution: \"Strict validation: Entity muss EXAKT im Text vorkommen\"\n result: \"Keine falschen Entities mehr\"\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/scripts\/pipeline\/config\/entity_extraction_baseline.yaml",
"content": "# Entity Extraction Baseline\n# Generiert: 2025-12-26\n# Testdokument: demo.pdf (4 Chunks)\n\nversion: \"1.0\"\ntest_document: \"demo.pdf\"\nchunks_processed: 4\n\n# =============================================================================\n# ERGEBNISSE\n# =============================================================================\nresults:\n total_entities: 38\n by_type:\n CONCEPT: 35\n ROLE: 2\n MODEL: 1\n\n # Korrekte ROLE-Kategorisierung (war vorher PERSON)\n role_entities:\n - Klient\n - Coachee\n\n # Alle extrahierten Entities\n entities:\n - {name: \"Allparteilichkeit\", type: \"CONCEPT\"}\n - {name: \"Anforderungsprofil\", type: \"CONCEPT\"}\n - {name: \"Ausbildung\", type: \"CONCEPT\"}\n - {name: \"Beobachtungen\", type: \"CONCEPT\"}\n - {name: \"Beratungskontext\", type: \"CONCEPT\"}\n - {name: \"Bewertungen\", type: \"CONCEPT\"}\n - {name: \"Coach-Persönlichkeit\", type: \"CONCEPT\"}\n - {name: \"Coach-System\", type: \"CONCEPT\"}\n - {name: \"Coaching\", type: \"CONCEPT\"}\n - {name: \"Coachee\", type: \"ROLE\"}\n - {name: \"Demut\", type: \"CONCEPT\"}\n - {name: \"Empathie\", type: \"CONCEPT\"}\n - {name: \"Grundhaltungen\", type: \"CONCEPT\"}\n - {name: \"individuell passgenaue Lösung\", type: \"CONCEPT\"}\n - {name: \"innere Lösungsvorschläge\", type: \"CONCEPT\"}\n - {name: \"Irritationen\", type: \"CONCEPT\"}\n - {name: \"Jobbeschreibung\", type: \"CONCEPT\"}\n - {name: \"Klient\", type: \"ROLE\"}\n - {name: \"Kompetenz-DNA\", type: \"CONCEPT\"}\n - {name: \"Kompetenzen\", type: \"CONCEPT\"}\n - {name: \"Konstruktionen\", type: \"CONCEPT\"}\n - {name: \"Koproduktion\", type: \"CONCEPT\"}\n - {name: \"Lösung\", type: \"CONCEPT\"}\n - {name: \"Lösungen\", type: \"CONCEPT\"}\n - {name: \"Neugierde\", type: \"CONCEPT\"}\n - {name: \"Neutralität\", type: \"CONCEPT\"}\n - {name: \"Offenheit\", type: \"CONCEPT\"}\n - {name: \"Prozess\", type: \"MODEL\"}\n - {name: \"Selbstwahrnehmung\", type: \"CONCEPT\"}\n - {name: \"System\", type: \"CONCEPT\"}\n - {name: \"Transparenz\", type: \"CONCEPT\"}\n - {name: \"Verhalten\", type: \"CONCEPT\"}\n - {name: \"Verhaltensrepertoir\", type: \"CONCEPT\"}\n - {name: \"Vertrauensvorschuss\", type: \"CONCEPT\"}\n - {name: \"Vorstellungen und Bewertungen\", type: \"CONCEPT\"}\n - {name: \"Wertschätzung\", type: \"CONCEPT\"}\n - {name: \"Wirklichkeitskonstruktion\", type: \"CONCEPT\"}\n - {name: \"Wissen um Nichtwissen\", type: \"CONCEPT\"}\n\n# =============================================================================\n# PROMPTS\n# =============================================================================\nprompts:\n entity_extraction:\n name: \"entity_extraction\"\n use_case: \"entity_extraction\"\n content: |\n Du bist ein Experte für Coaching und Systemische Beratung. Extrahiere ALLE wichtigen Fachbegriffe aus dem Text.\n\n Extrahiere diese Kategorien:\n - CONCEPT: Fachbegriffe, Methoden, Prozesse (z.B. Auftragsklärung, Teamcoaching, Intervention, Konfliktklärung)\n - PERSON: Namen von Personen\n - ORGANIZATION: Institutionen, Firmen\n - LOCATION: Orte\n\n Sei GRÜNDLICH - extrahiere jeden relevanten Fachbegriff aus dem Coaching\/Beratungskontext.\n Jeder Begriff braucht eine kurze Erklärung (5-15 Wörter).\n\n JSON-Format:\n {\"entities\": [{\"name\": \"Begriff\", \"type\": \"CONCEPT\", \"description\": \"Kurze Erklärung\"}]}\n\n Text:\n {{TEXT}}\n\n# =============================================================================\n# NORMALIZER REGELN (deterministische Korrektur)\n# =============================================================================\nnormalizer:\n description: \"Deterministische Regeln überschreiben LLM-Kategorisierungsfehler\"\n config_file: \"\/var\/www\/scripts\/pipeline\/config\/entity_type_rules.yaml\"\n\n # Wichtigste Korrekturen\n role_corrections:\n - Coach\n - Coachee\n - Klient\n - Klientin\n - Therapeut\n - Berater\n - Trainer\n - Supervisor\n - Moderator\n - Facilitator\n - Mentor\n - Mediator\n\n method_corrections:\n - Wunderfrage\n - Skalierungsfrage\n - Reframing\n - Zirkuläres Fragen\n - Genogrammarbeit\n - Aufstellung\n - Reflecting Team\n - Externalisieren\n\n pattern_rules:\n THEORY: [\".*therapie$\", \".*ansatz$\", \".*theorie$\"]\n METHOD: [\".*frage$\", \".*technik$\", \".*intervention$\"]\n MODEL: [\".*modell$\", \".*kreislauf$\", \".*prozess$\"]\n ROLE: [\".*coach$\", \".*berater$\", \".*therapeut$\"]\n\n# =============================================================================\n# PIPELINE-ARCHITEKTUR\n# =============================================================================\npipeline:\n model: \"ollama:gemma3:27b-it-qat\"\n\n steps:\n 1_extraction:\n description: \"Entity-Namen aus Text extrahieren\"\n validation: \"Nur Entities die EXAKT im Text vorkommen\"\n\n 2_categorization:\n description: \"LLM kategorisiert Entities\"\n output: \"name, type, description\"\n\n 3_normalization:\n description: \"Deterministische Typ-Korrektur\"\n priority: \"explicit > pattern > llm_type > default\"\n module: \"analyzers\/entity_normalizer.py\"\n\n 4_storage:\n description: \"Speichern mit canonical_name und Deduplizierung\"\n table: \"ki_content.entities\"\n\n# =============================================================================\n# VERBESSERUNGEN gegenüber Baseline\n# =============================================================================\nimprovements:\n - issue: \"ROLE vs PERSON Verwechslung\"\n solution: \"EntityNormalizer mit expliziten Mappings\"\n result: \"Klient, Coachee korrekt als ROLE\"\n\n - issue: \"LLM ignoriert Prompt-Anweisungen\"\n solution: \"Deterministische Post-Processing Regeln\"\n result: \"100% korrekte ROLE-Kategorisierung\"\n\n - issue: \"Halluzinierte Entities\"\n solution: \"Strict validation: Entity muss EXAKT im Text vorkommen\"\n result: \"Keine falschen Entities mehr\"\n",
"structuredPatch": [],
"originalFile": null
}
}