Fakten ohne Quellen-URL werden automatisch herabgestuft

_validate_facts() prueft nach dem Parsen: confirmed/established ohne
URL in der Evidenz wird zu unconfirmed/unverified herabgestuft.
183 bestehende confirmed-Fakten ohne URL wurden ebenfalls korrigiert.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-03-08 22:41:31 +01:00
Ursprung 22eaa2f80a
Commit e761c86a28

Datei anzeigen

@@ -381,12 +381,27 @@ class FactCheckerAgent:
logger.error(f"Inkrementeller Faktencheck-Fehler: {e}") logger.error(f"Inkrementeller Faktencheck-Fehler: {e}")
return [], None return [], None
def _validate_facts(self, facts: list[dict]) -> list[dict]:
"""Validiert Fakten: confirmed/established ohne URL wird herabgestuft."""
url_pattern = re.compile(r'https?://')
for fact in facts:
status = fact.get("status", "")
evidence = fact.get("evidence") or ""
if status in ("confirmed", "established") and not url_pattern.search(evidence):
old_status = status
fact["status"] = "unconfirmed" if status == "confirmed" else "unverified"
logger.warning(
f"Fakt herabgestuft ({old_status} -> {fact['status']}): "
f"keine URL in Evidenz: '{fact.get('claim', '')[:60]}...'"
)
return facts
def _parse_response(self, response: str) -> list[dict]: def _parse_response(self, response: str) -> list[dict]:
"""Parst die Claude-Antwort als JSON-Array.""" """Parst die Claude-Antwort als JSON-Array."""
try: try:
data = json.loads(response) data = json.loads(response)
if isinstance(data, list): if isinstance(data, list):
return data return self._validate_facts(data)
except json.JSONDecodeError: except json.JSONDecodeError:
pass pass
@@ -395,7 +410,7 @@ class FactCheckerAgent:
try: try:
data = json.loads(match.group()) data = json.loads(match.group())
if isinstance(data, list): if isinstance(data, list):
return data return self._validate_facts(data)
except json.JSONDecodeError: except json.JSONDecodeError:
pass pass