diff --git a/src/agents/factchecker.py b/src/agents/factchecker.py index bda5fb5..804f094 100644 --- a/src/agents/factchecker.py +++ b/src/agents/factchecker.py @@ -381,12 +381,27 @@ class FactCheckerAgent: logger.error(f"Inkrementeller Faktencheck-Fehler: {e}") 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]: """Parst die Claude-Antwort als JSON-Array.""" try: data = json.loads(response) if isinstance(data, list): - return data + return self._validate_facts(data) except json.JSONDecodeError: pass @@ -395,7 +410,7 @@ class FactCheckerAgent: try: data = json.loads(match.group()) if isinstance(data, list): - return data + return self._validate_facts(data) except json.JSONDecodeError: pass