Konflikterkenner
Eine eigenständige Fähigkeit, die **Widersprüche über eine Reihe von
Dokumenten** hinweg findet. Jedes Dokument wird geladen (Pfad / Inline-Text / Inline-JSON),
seine Fakten werden extrahiert, und eine dokumentenübergreifende Regel-Engine gleicht Behauptungen
anhand kanonischer Schlüssel ab und markiert Abweichungen.
OBLIGATORISCHER WORKFLOW
Abhängigkeiten bootstrappen (bei erster Nutzung)
Vor der ersten Ausführung die Laufzeitabhängigkeiten dieser Fähigkeit prüfen:
- Kern: reine Standardbibliothek – keine Installation erforderlich.
- Optional:
PyYAML(nur wenn die Konfiguration / Eingabe eine.yamlist; JSON-Eingaben funktionieren mit der Standardbibliothek allein).
Fehlt PyYAML und die Eingabe ist YAML, den Benutzer informieren und fragen,
ob pip install pyyaml ausgeführt werden soll; erst nach Bestätigung installieren.
Niemals ohne ausdrückliche Zustimmung in die globale Umgebung installieren.
-
Die YAML-Konfiguration laden (Referenz:
config/examples/two_docs.yaml). -
Prüfen, dass jedes
documents[].value/documents[].patherreichbar ist. -
python -m src.cli run --config <pfad> [--format json,csv,md]ausführen. -
Die Konfliktzahl pro Stufe melden und den Benutzer auf
./conflicts/conflicts_<run_id>.*verweisen.
Verwendungszweck
-
Zwei oder mehr Dokumente, Datensätze oder extrahierte Faktentabellen müssen
auf Widersprüche untereinander geprüft werden.
-
Der Benutzer bittet darum, "Konflikte zu erkennen", "Widersprüche zu finden", "Behauptungen
abzugleichen" oder fragt "Stimmen diese Dokumente überein".
-
Eine einzelne Behauptung (eine Zahl, ein Status, eine benannte Tatsache) erscheint in mehreren
Quellen und muss quellenübergreifend verglichen werden.
-
Eine aus Dokumenten extrahierte Faktentabelle muss auf interne Konsistenz
geprüft werden, bevor sie verwendet wird.
Anwendungsbeispiele
# Eine Konfiguration vor der Ausführung validieren (schnell, kein Bericht).
python -m src.cli validate --config config/examples/two_docs.yaml
# Die von einer Konfiguration aufgelösten Dokumentquellen auflisten.
python -m src.cli list-docs --config config/examples/two_docs.yaml
# Eine Erkennung ausführen; Ausgabeformate wählen (Standard: json).
python -m src.cli run --config config/examples/two_docs.yaml --format json,csv,md
Berichte werden nach ./conflicts/conflicts_<run_id>.{json,csv,md} geschrieben;
das JSON ist der maschinenlesbare Vertrag.
Fehlerbehandlung
-
Ungültige Konfiguration (
validateendet mit Exit-Code ungleich 0) – das gemeldete Feldkorrigieren und erneut validieren; keine manuellen Änderungen an der Schemaverletzung vornehmen.
-
Eine Dokumentquelle ist nicht erreichbar – der Lauf wird abgebrochen und das betreffende
documents[]-Element benannt; den Pfad oder Inline-Wert prüfen und erneut versuchen. -
Keine Konflikte gefunden – ein gültiges, berichtbares Ergebnis (ein leerer Bericht),
kein Fehler; dies explizit mitteilen, anstatt erneut auszuführen.
-
Unerwarteter Exit-Code – die Meldung wörtlich ausgeben; nicht auf einen manuellen
Dokumentvergleich zurückfallen.
Erkennungsstufen
| Stufe | Art | Schwere | Beispiel |
|---|---|---|---|
entity | numeric_mismatch, boolean | hoch | speed = 10 vs speed = 20 |
clause | categorical | mittel | status = "active" vs status = "archived" |
argument | categorical (Text) | niedrig | Freitextzeilen, die sich widersprechen |
Einschränkungen
-
Extraktion ist schlüssel-wert-orientiert; Freitextabsätze nehmen nur auf
der
argument-Stufe teil (zeilenweiser Vergleich). -
Einheiten-Normalisierung erfolgt tabellengesteuert (
unit_map); benutzerdefinierteEinheitenregeln müssen über die Konfiguration bereitgestellt werden.