From b347d898ae5e9d930fd1457a59f74efc63ffe709 Mon Sep 17 00:00:00 2001 From: Floke Date: Fri, 4 Apr 2025 16:12:21 +0000 Subject: [PATCH] bugfix --- brancheneinstufung.py | 53 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index e911ad3e..3b4cdb39 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -202,15 +202,45 @@ def validate_article_with_chatgpt(crm_data, wiki_data): debug_print(f"Fehler beim Validierungs-API-Aufruf: {e}") return "k.A." +def load_target_branches(): + try: + with open("ziel_Branchenschema.csv", "r", encoding="utf-8") as csvfile: + reader = csv.reader(csvfile) + branches = [row[0] for row in reader if row and row[0].strip() != ""] + return branches + except Exception as e: + debug_print(f"Fehler beim Laden des Ziel-Branchenschemas: {e}") + return [ + "Gutachter / Versicherungen > Baugutachter", + "Gutachter / Versicherungen > Technische Gutachten", + "Gutachter / Versicherungen > Versicherungsgutachten", + "Gutachter / Versicherungen > Medizinische Gutachten", + "Hersteller / Produzenten > Anlagenbau", + "Hersteller / Produzenten > Automaten (Vending, Slot)", + "Hersteller / Produzenten > Gebäudetechnik Allgemein", + "Hersteller / Produzenten > Gebäudetechnik Heizung, Lüftung, Klima", + "Hersteller / Produzenten > Maschinenbau", + "Hersteller / Produzenten > Medizintechnik", + "Service provider (Dienstleister) > Aufzüge und Rolltreppen", + "Service provider (Dienstleister) > Feuer- und Sicherheitssysteme", + "Service provider (Dienstleister) > Servicedienstleister / Reparatur ohne Produktion", + "Service provider (Dienstleister) > Facility Management", + "Versorger > Telekommunikation" + ] + def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien): + target_branches = load_target_branches() + target_branches_str = "\n".join(target_branches) prompt_text = ( - "Du bist ein Experte im Field Service Management. Analysiere die folgenden Branchenangaben und ordne das Unternehmen einer der gültigen Branchen zu. " - "Nutze ausschließlich die vorhandenen Informationen.\n\n" + "Du bist ein Experte im Field Service Management. Hier ist das gültige Ziel-Branchenschema:\n" + f"{target_branches_str}\n\n" + "Ordne anhand der folgenden Informationen das Unternehmen genau einer der oben genannten Branchen zu. " + "Wenn keine der Informationen passt, antworte mit 'k.A.'. Verwende dabei exakt die Schreibweise aus dem Ziel-Branchenschema.\n\n" f"CRM-Branche: {crm_branche}\n" f"Beschreibung Branche extern: {beschreibung}\n" f"Wikipedia-Branche: {wiki_branche}\n" f"Wikipedia-Kategorien: {wiki_kategorien}\n\n" - "Gib aus:\n" + "Gib aus im exakten Format (ohne zusätzliche Erklärungen):\n" "Branche: \n" "Konsistenz: \n" "Begründung: " @@ -233,6 +263,23 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg branch = "k.A." consistency = "k.A." justification = "" + for line in result.split("\n"): + if line.lower().startswith("branche:"): + branch = line.split(":", 1)[1].strip() + elif line.lower().startswith("konsistenz:"): + consistency = line.split(":", 1)[1].strip() + elif line.lower().startswith("begründung:"): + justification = line.split(":", 1)[1].strip() + if branch not in target_branches: + debug_print(f"Vorgeschlagene Branche '{branch}' nicht im Ziel-Branchenschema enthalten.") + branch = "k.A." + return {"branch": branch, "consistency": consistency, "justification": justification} + except Exception as e: + debug_print(f"Fehler beim Aufruf der ChatGPT API für Branchenabgleich: {e}") + return {"branch": "k.A.", "consistency": "k.A.", "justification": "k.A."} + branch = "k.A." + consistency = "k.A." + justification = "" for line in result.split("\n"): if line.lower().startswith("branche:"): branch = line.split(":", 1)[1].strip()