helpers.py aktualisiert

This commit is contained in:
2025-07-28 13:10:04 +00:00
parent 14a5f87969
commit fefb1083dd

View File

@@ -1018,12 +1018,18 @@ def evaluate_branches_batch(companies_data):
"\n--- DEINE AUFGABE ---",
f"Analysiere jedes der {len(companies_data)} Unternehmen Schritt für Schritt.",
"Vergleiche jedes Unternehmensprofil mit den Definitionen im ZIEL-BRANCHENSCHEMA.",
"Gib als Ergebnis eine JSON-Liste zurück, die exakt ein JSON-Objekt für jedes Unternehmen in der gleichen Reihenfolge enthält.",
"Jedes JSON-Objekt muss folgende Schlüssel haben: 'row_num', 'Branche', 'Konfidenz', 'Begruendung'.",
# NEUE, EXPLIZITE ANWEISUNG
"Gib als Ergebnis ein EINZIGES JSON-Objekt zurück. Dieses Objekt muss einen einzigen Schlüssel namens 'results' haben. Der Wert dieses Schlüssels muss eine JSON-Liste sein, die exakt ein JSON-Objekt für jedes der oben genannten Unternehmen in der gleichen Reihenfolge enthält.",
"Jedes Objekt in der Liste muss folgende Schlüssel haben: 'row_num', 'Branche', 'Konfidenz', 'Begruendung'.",
"Die 'row_num' muss exakt der 'Original-Zeilennummer' aus dem Input entsprechen.",
"Beispiel-Format für die Antwort: \n"
"Wenn ein Unternehmen nicht zugeordnet werden kann, setze die Branche auf 'Sonstiger Service'.",
"\nBeispiel-Format für die ANTWORT:",
'''
[
{
"results": [
{
"row_num": 123,
"Branche": "Maschinenbau",
@@ -1036,7 +1042,8 @@ def evaluate_branches_batch(companies_data):
"Konfidenz": "Mittel",
"Begruendung": "Bietet Dienstleistungen rund um Immobilien an, passt zur Definition."
}
]
]
}
'''
]
prompt = "\n".join(prompt_parts)
@@ -1049,22 +1056,11 @@ def evaluate_branches_batch(companies_data):
response_json = json.loads(response_str)
# 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
# NEUER, KUGELSICHERER PARSER
results_list = response_json.get("results")
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]}...")
if results_list is None or not isinstance(results_list, list):
logger.error(f"Konnte keine Ergebnisliste unter dem Schlüssel 'results' in der KI-Antwort finden. Antwort: {str(response_json)[:300]}...")
return None
return results_list