diff --git a/src/agents/analyzer.py b/src/agents/analyzer.py index 04f86d7..9a1931b 100644 --- a/src/agents/analyzer.py +++ b/src/agents/analyzer.py @@ -298,14 +298,25 @@ class AnalyzerAgent: def _parse_response(self, response: str) -> dict | None: """Parst die Claude-Antwort als JSON-Objekt.""" + # Markdown-Code-Fences entfernen + cleaned = response.strip() + if cleaned.startswith("```"): + # Erste Zeile (```json oder ```) entfernen + first_nl = cleaned.find(chr(10)) + if first_nl != -1: + cleaned = cleaned[first_nl + 1:] + if cleaned.endswith("```"): + cleaned = cleaned[:-3].rstrip() + try: - data = json.loads(response) + data = json.loads(cleaned) if isinstance(data, dict): return data except json.JSONDecodeError: pass - match = re.search(r'\{.*\}', response, re.DOTALL) + # Fallback: aeusserstes JSON-Objekt per Regex finden + match = re.search(r"""\{.*\}""", response, re.DOTALL) if match: try: data = json.loads(match.group())