bugfix
This commit is contained in:
@@ -1552,11 +1552,11 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
|||||||
Falls der Vorschlag nicht validiert werden kann, erfolgt ein Fallback auf den CRM-Wert.
|
Falls der Vorschlag nicht validiert werden kann, erfolgt ein Fallback auf den CRM-Wert.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
crm_branche (str): Branche laut CRM.
|
crm_branche (str): Branche laut CRM
|
||||||
beschreibung (str): Unternehmensbeschreibung (CRM).
|
beschreibung (str): Unternehmensbeschreibung (CRM)
|
||||||
wiki_branche (str): Branche aus Wikipedia (falls vorhanden).
|
wiki_branche (str): Branche aus Wikipedia (falls vorhanden)
|
||||||
wiki_kategorien (str): Wikipedia-Kategorien.
|
wiki_kategorien (str): Wikipedia-Kategorien
|
||||||
website_summary (str): Zusammenfassung des Website-Inhalts.
|
website_summary (str): Zusammenfassung des Website-Inhalts
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
dict: Enthält "branch", "consistency" (ok oder X) und "justification".
|
dict: Enthält "branch", "consistency" (ok oder X) und "justification".
|
||||||
@@ -1564,14 +1564,14 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
|||||||
# Lade Mapping und Liste der erlaubten Ziel-Branchen
|
# Lade Mapping und Liste der erlaubten Ziel-Branchen
|
||||||
mapping, allowed_branches = load_target_branches()
|
mapping, allowed_branches = load_target_branches()
|
||||||
|
|
||||||
# Baue den Text für das Ziel-Branchenschema, der im System-Prompt an ChatGPT übergeben wird.
|
# Baue den Text für das Ziel-Branchenschema, der im System-Prompt an ChatGPT übergeben wird
|
||||||
schema_lines = ["Ziel-Branchenschema: Folgende Branchenbereiche sind gültig:"]
|
schema_lines = ["Ziel-Branchenschema: Folgende Branchenbereiche sind gültig:"]
|
||||||
for branch in allowed_branches:
|
for branch in allowed_branches:
|
||||||
schema_lines.append(f"- {branch}")
|
schema_lines.append(f"- {branch}")
|
||||||
target_schema_info = "\n".join(schema_lines)
|
target_schema_info = "\n".join(schema_lines)
|
||||||
|
|
||||||
# Erstelle den System-Prompt inklusive der Zielvorgaben.
|
# Erstelle den System-Prompt inklusive der Zielvorgaben. Hier wird das Zielbranchenschema aus der CSV-Datei
|
||||||
# Hier wird das Zielbranchenschema aus der CSV-Datei (via load_target_schema) eingebunden.
|
# (via load_target_schema) eingebunden.
|
||||||
target_mapping, target_schema_string, allowed_targets = load_target_schema()
|
target_mapping, target_schema_string, allowed_targets = load_target_schema()
|
||||||
|
|
||||||
prompt = (
|
prompt = (
|
||||||
@@ -1616,31 +1616,30 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
|||||||
consistency = ""
|
consistency = ""
|
||||||
explanation = ""
|
explanation = ""
|
||||||
for line in lines:
|
for line in lines:
|
||||||
lower_line = line.lower()
|
if line.lower().startswith("branche:"):
|
||||||
if lower_line.startswith("branche:"):
|
|
||||||
suggestion = line.split(":", 1)[1].strip()
|
suggestion = line.split(":", 1)[1].strip()
|
||||||
elif lower_line.startswith("übereinstimmung:"):
|
elif line.lower().startswith("übereinstimmung:"):
|
||||||
consistency = line.split(":", 1)[1].strip()
|
consistency = line.split(":", 1)[1].strip()
|
||||||
elif lower_line.startswith("begründung:"):
|
elif line.lower().startswith("begründung:"):
|
||||||
explanation = line.split(":", 1)[1].strip()
|
explanation = line.split(":", 1)[1].strip()
|
||||||
|
|
||||||
# Bereinige den Vorschlag: Entferne unnötige Satzzeichen und konvertiere in Kleinbuchstaben.
|
# Bereinige den Vorschlag: entferne unnötige Satzzeichen und konvertiere in Kleinbuchstaben
|
||||||
clean_suggestion = re.sub(r'[^\w\s/&-]', '', suggestion).strip().lower()
|
clean_suggestion = re.sub(r'[^\w\s/&-]', '', suggestion).strip().lower()
|
||||||
|
|
||||||
# Falls der bereinigte Vorschlag kein Hierarchie-Trennzeichen ">" enthält, übernehme den Präfix aus der CRM-Branche.
|
# Falls der bereinigte Vorschlag kein Hierarchie-Trennzeichen ">" enthält, übernehme den Präfix aus der CRM-Branche
|
||||||
if ">" not in clean_suggestion and ">" in crm_branche:
|
if ">" not in clean_suggestion and ">" in crm_branche:
|
||||||
prefix = crm_branche.split(">")[0].strip().lower()
|
prefix = crm_branche.split(">")[0].strip().lower()
|
||||||
clean_suggestion = prefix + " > " + clean_suggestion
|
clean_suggestion = prefix + " > " + clean_suggestion
|
||||||
|
|
||||||
# Prüfe, ob der bereinigte Vorschlag mit einem erlaubten Eintrag (Fuzzy Matching) übereinstimmt.
|
# Prüfe, ob der bereinigte Vorschlag mit einem erlaubten Eintrag (Fuzzy Matching) übereinstimmt
|
||||||
valid = False
|
valid = False
|
||||||
for allowed in allowed_branches:
|
for allowed in allowed_branches:
|
||||||
sim = fuzzy_similarity(clean_suggestion, allowed)
|
sim = fuzzy_similarity(clean_suggestion, allowed)
|
||||||
if sim > 0.95: # Sehr hoher Ähnlichkeitswert (anpassbar)
|
if sim > 0.95: # sehr hoher Ähnlichkeitswert (kann angepasst werden)
|
||||||
valid = True
|
valid = True
|
||||||
clean_suggestion = allowed # Setze exakte Übereinstimmung
|
# Setze den Vorschlag exakt auf den Zielwert
|
||||||
|
clean_suggestion = allowed
|
||||||
break
|
break
|
||||||
|
|
||||||
if not valid:
|
if not valid:
|
||||||
debug_print(f"Mapping ungültig für Vorschlag: '{clean_suggestion}'. Fallback: CRM-Branche ('{crm_branche}') verwendet.")
|
debug_print(f"Mapping ungültig für Vorschlag: '{clean_suggestion}'. Fallback: CRM-Branche ('{crm_branche}') verwendet.")
|
||||||
return {"branch": crm_branche, "consistency": consistency, "justification": "Fallback: CRM-Wert verwendet aufgrund ungültiger ChatGPT-Zuweisung."}
|
return {"branch": crm_branche, "consistency": consistency, "justification": "Fallback: CRM-Wert verwendet aufgrund ungültiger ChatGPT-Zuweisung."}
|
||||||
@@ -1648,6 +1647,7 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
|||||||
return {"branch": clean_suggestion, "consistency": consistency, "justification": explanation}
|
return {"branch": clean_suggestion, "consistency": consistency, "justification": explanation}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def evaluate_servicetechnicians_estimate(company_name, company_data):
|
def evaluate_servicetechnicians_estimate(company_name, company_data):
|
||||||
try:
|
try:
|
||||||
with open("serpApiKey.txt", "r") as f:
|
with open("serpApiKey.txt", "r") as f:
|
||||||
|
|||||||
Reference in New Issue
Block a user