From da5f454b3d73acf8dd28c8648127ae052a71bc49 Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 25 Aug 2025 17:32:59 +0000 Subject: [PATCH] helpers.py aktualisiert --- helpers.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/helpers.py b/helpers.py index ba2b8fd9..086ad8e6 100644 --- a/helpers.py +++ b/helpers.py @@ -949,7 +949,19 @@ def evaluate_branche_chatgpt(company_name, website_summary, wiki_absatz): if not response_str: raise APIError("Keine Antwort von OpenAI erhalten.") - response_json = json.loads(response_str) + # --- NEUE, ROBUSTE JSON-EXTRAKTION --- + # Sucht nach dem ersten '{' und dem letzten '}', um das JSON-Objekt + # auch dann zu finden, wenn es von Text oder Markdown umschlossen ist. + json_start = response_str.find('{') + json_end = response_str.rfind('}') + + if json_start == -1 or json_end == -1: + logger.error(f"Konnte kein JSON-Objekt in der API-Antwort für '{company_name}' finden. Antwort: {response_str[:200]}...") + raise json.JSONDecodeError("Kein JSON-Objekt in der Antwort gefunden.", response_str, 0) + + json_str = response_str[json_start : json_end + 1] + response_json = json.loads(json_str) + # --- ENDE DER NEUEN LOGIK --- # Validierung des Ergebnisses final_branch = response_json.get("Branche") @@ -964,6 +976,13 @@ def evaluate_branche_chatgpt(company_name, website_summary, wiki_absatz): "justification": response_json.get("Begruendung", "Keine Begründung erhalten.") } + except json.JSONDecodeError as e: + logger.error(f"Endgültiger FEHLER beim Parsen der JSON-Antwort für Brancheneinstufung von {company_name}: {e}") + return { + "branch": "FEHLER (JSON Parsing)", + "confidence": "N/A", + "justification": f"Fehler beim Parsen der API-Antwort: {str(e)[:100]}" + } except Exception as e: logger.error(f"Endgültiger FEHLER beim OpenAI-Aufruf für Brancheneinstufung von {company_name}: {e}") return {