helpers.py aktualisiert
This commit is contained in:
22
helpers.py
22
helpers.py
@@ -1047,12 +1047,24 @@ def evaluate_branches_batch(companies_data):
|
|||||||
if not response_str:
|
if not response_str:
|
||||||
raise APIError("Keine Antwort von OpenAI erhalten.")
|
raise APIError("Keine Antwort von OpenAI erhalten.")
|
||||||
|
|
||||||
# Das Ergebnis sollte direkt eine Liste von Dictionaries sein
|
response_json = json.loads(response_str)
|
||||||
results_list = json.loads(response_str)
|
|
||||||
|
|
||||||
# Validierung, ob die Antwort eine Liste ist
|
# NEUE, INTELLIGENTE PARSING-LOGIK
|
||||||
if not isinstance(results_list, list):
|
results_list = None
|
||||||
logger.error(f"KI-Antwort ist keine Liste, sondern {type(results_list)}. Breche Batch ab.")
|
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 None
|
||||||
|
|
||||||
return results_list
|
return results_list
|
||||||
|
|||||||
Reference in New Issue
Block a user