helpers.py aktualisiert
This commit is contained in:
36
helpers.py
36
helpers.py
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user