From aaa6db7873811025f00a3c1cc5d1be0fbe567114 Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 4 Aug 2025 17:19:21 +0000 Subject: [PATCH] entferne def evaluate_branche_chatgpt --- helpers.py | 94 ------------------------------------------------------ 1 file changed, 94 deletions(-) diff --git a/helpers.py b/helpers.py index f2083324..d2e9af1e 100644 --- a/helpers.py +++ b/helpers.py @@ -902,100 +902,6 @@ def summarize_wikipedia_article(full_text, company_name): return "FEHLER (API-Fehler bei Zusammenfassung)" - - -# ============================================================================== -# 9. OPENAI API WRAPPER (BRANCH EVALUATION) -# ============================================================================== - -@retry_on_failure -def evaluate_branche_chatgpt(company_name, website_summary, wiki_absatz): - """ - Führt eine kontextbasierte Brancheneinstufung (v2.0) durch. - Das Unternehmensprofil wird mit dem vollständigen, definierten Branchenschema - abgeglichen, um die bestmögliche Zuordnung zu finden. - """ - logger = logging.getLogger(__name__) - - # 1. Baue das Unternehmensprofil zusammen - unternehmens_profil = [f"- Name: {company_name}"] - if website_summary and 'k.a.' not in website_summary.lower(): - unternehmens_profil.append(f"- Website-Zusammenfassung: {website_summary}") - if wiki_absatz and 'k.a.' not in wiki_absatz.lower(): - unternehmens_profil.append(f"- Wikipedia-Auszug: {wiki_absatz}") - - if len(unternehmens_profil) == 1: - logger.warning(f"Zu wenige Informationen für Brancheneinstufung von '{company_name}'. Breche ab.") - return { - "branch": "FEHLER (Mangelnde Daten)", - "confidence": "N/A", - "justification": "Keine Website- oder Wikipedia-Daten zur Analyse vorhanden." - } - - # 2. Baue das Ziel-Branchenschema als Textblock auf - schema_text_parts = [] - for i, (branch, details) in enumerate(Config.BRANCH_GROUP_MAPPING.items()): - schema_text_parts.append(f"{i+1}. Branche: {branch}") - if details.get("definition"): - schema_text_parts.append(f" Definition: {details['definition']}") - if details.get("beispiele"): - schema_text_parts.append(f" Beispiele: {details['beispiele']}") - - ziel_branchenschema_text = "\n".join(schema_text_parts) - - # 3. Baue den Master-Prompt zusammen - prompt_parts = [ - "Du bist ein erfahrener Branchenanalyst bei einer führenden Unternehmensberatung. Deine Aufgabe ist es, ein Unternehmen präzise einer von 54 vordefinierten Branchenkategorien zuzuordnen. Nutze dafür ausschließlich die bereitgestellten Definitionen.", - "\n--- UNTERNEHMENS-PROFIL ---", - "\n".join(unternehmens_profil), - "\n--- ZIEL-BRANCHENSCHEMA (Deine einzig gültige Wissensbasis) ---", - ziel_branchenschema_text, - "\n--- DEINE AUFGABE (DENKPROZESS) ---", - "1. **Analysiere das Unternehmens-Profil:** Was ist die exakte, primäre Geschäftstätigkeit des Unternehmens?", - "2. **Vergleiche diese Tätigkeit mit ALLEN Definitionen** im Ziel-Branchenschema. Achte genau auf die Abgrenzungen.", - "3. **Identifiziere die Definition, die am besten passt.** Nutze die Beispielunternehmen zur Validierung deiner Wahl.", - "4. **Triff eine Entscheidung** und gib das Ergebnis im folgenden JSON-Format aus:", - ''' -{ - "Branche": "", - "Konfidenz": "", - "Begruendung": "" -} - ''' - ] - - prompt = "\n".join(prompt_parts) - - # 4. API-Aufruf - try: - response_str = call_openai_chat(prompt, temperature=0.0, model="gpt-4o", response_format_json=True) - if not response_str: - raise APIError("Keine Antwort von OpenAI erhalten.") - - response_json = json.loads(response_str) - - # Validierung des Ergebnisses - final_branch = response_json.get("Branche") - if final_branch not in Config.BRANCH_GROUP_MAPPING: - logger.warning(f"KI hat eine ungültige Branche zurückgegeben: '{final_branch}'. Markiere als Fehler.") - response_json["Branche"] = "FEHLER (Ungültige Antwort)" - response_json["Begruendung"] = f"Originalantwort: {final_branch}. " + response_json.get("Begruendung", "") - - return { - "branch": response_json.get("Branche", "FEHLER (Parsing)"), - "confidence": response_json.get("Konfidenz", "N/A"), - "justification": response_json.get("Begruendung", "Keine Begründung erhalten.") - } - - except Exception as e: - logger.error(f"Endgültiger FEHLER beim OpenAI-Aufruf für Brancheneinstufung von {company_name}: {e}") - return { - "branch": "FEHLER (API)", - "confidence": "N/A", - "justification": f"Fehler bei der API-Kommunikation: {str(e)[:100]}" - } - - def evaluate_branches_batch(companies_data): """ Führt eine kontextbasierte Brancheneinstufung für einen Batch von Unternehmen durch.