helpers.py aktualisiert
This commit is contained in:
60
helpers.py
60
helpers.py
@@ -1018,25 +1018,32 @@ def evaluate_branches_batch(companies_data):
|
|||||||
"\n--- DEINE AUFGABE ---",
|
"\n--- DEINE AUFGABE ---",
|
||||||
f"Analysiere jedes der {len(companies_data)} Unternehmen Schritt für Schritt.",
|
f"Analysiere jedes der {len(companies_data)} Unternehmen Schritt für Schritt.",
|
||||||
"Vergleiche jedes Unternehmensprofil mit den Definitionen im ZIEL-BRANCHENSCHEMA.",
|
"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.",
|
"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",
|
"row_num": 123,
|
||||||
"Konfidenz": "Hoch",
|
"Branche": "Maschinenbau",
|
||||||
"Begruendung": "Das Unternehmen stellt komplexe Maschinen her, was der Definition entspricht."
|
"Konfidenz": "Hoch",
|
||||||
},
|
"Begruendung": "Das Unternehmen stellt komplexe Maschinen her, was der Definition entspricht."
|
||||||
{
|
},
|
||||||
"row_num": 456,
|
{
|
||||||
"Branche": "Facility Management",
|
"row_num": 456,
|
||||||
"Konfidenz": "Mittel",
|
"Branche": "Facility Management",
|
||||||
"Begruendung": "Bietet Dienstleistungen rund um Immobilien an, passt zur Definition."
|
"Konfidenz": "Mittel",
|
||||||
}
|
"Begruendung": "Bietet Dienstleistungen rund um Immobilien an, passt zur Definition."
|
||||||
]
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
'''
|
'''
|
||||||
]
|
]
|
||||||
prompt = "\n".join(prompt_parts)
|
prompt = "\n".join(prompt_parts)
|
||||||
@@ -1049,22 +1056,11 @@ def evaluate_branches_batch(companies_data):
|
|||||||
|
|
||||||
response_json = json.loads(response_str)
|
response_json = json.loads(response_str)
|
||||||
|
|
||||||
# NEUE, INTELLIGENTE PARSING-LOGIK
|
# NEUER, KUGELSICHERER PARSER
|
||||||
results_list = None
|
results_list = response_json.get("results")
|
||||||
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:
|
if results_list is None or not isinstance(results_list, list):
|
||||||
logger.error(f"Konnte keine Ergebnisliste in der KI-Antwort finden. Antworttyp: {type(response_json)}. Inhalt: {str(response_json)[:300]}...")
|
logger.error(f"Konnte keine Ergebnisliste unter dem Schlüssel 'results' in der KI-Antwort finden. Antwort: {str(response_json)[:300]}...")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return results_list
|
return results_list
|
||||||
|
|||||||
Reference in New Issue
Block a user