From 4e420913f1a51c6181a5df08893f1de72737ddd6 Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 28 Jul 2025 12:59:50 +0000 Subject: [PATCH] helpers.py aktualisiert --- helpers.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/helpers.py b/helpers.py index 94870b94..3519aca0 100644 --- a/helpers.py +++ b/helpers.py @@ -1047,12 +1047,24 @@ def evaluate_branches_batch(companies_data): if not response_str: raise APIError("Keine Antwort von OpenAI erhalten.") - # Das Ergebnis sollte direkt eine Liste von Dictionaries sein - results_list = json.loads(response_str) + response_json = json.loads(response_str) - # Validierung, ob die Antwort eine Liste ist - if not isinstance(results_list, list): - logger.error(f"KI-Antwort ist keine Liste, sondern {type(results_list)}. Breche Batch ab.") + # NEUE, INTELLIGENTE PARSING-LOGIK + results_list = None + if isinstance(response_json, list): + # Der Idealfall: Die KI hat eine Liste zurückgegeben + results_list = response_json + elif isinstance(response_json, dict): + # Der häufige Fall: Die KI hat ein Objekt zurückgegeben, das eine Liste enthält + # Wir durchsuchen das Dictionary nach dem ersten Wert, der eine Liste ist. + for key, value in response_json.items(): + if isinstance(value, list): + logger.debug(f"Antwort war ein Dictionary, aber eine Ergebnisliste unter dem Schlüssel '{key}' gefunden.") + results_list = value + break + + if results_list is None: + logger.error(f"Konnte keine Ergebnisliste in der KI-Antwort finden. Antworttyp: {type(response_json)}. Inhalt: {str(response_json)[:300]}...") return None return results_list