bugfix
Ergänzung der Fallunterscheidung: Falls wiki_branche "k.A." ist, wird der Prompt so generiert, dass nur die Angaben aus CRM (Spalte G) und externe Branchenbeschreibung (Spalte H) verwendet werden. Andernfalls werden auch die Werte aus Wikipedia (Spalte N und Q) herangezogen. Erhaltung der Fokus-Branchen: Die Focus-Liste wird beibehalten, sodass die Entscheidungsfindung über den endgültigen Vorschlag weiterhin auch diese Branchen berücksichtigt. Postprocessing: Nach der Antwort werden Ergebnisse geprüft, und sofern der von ChatGPT vorgeschlagene Branchentext nicht exakt im Ziel-Branchenschema enthalten ist, wird „k.A.“ mit Konsistenz "X" zurückgegeben. Stimmt der Vorschlag exakt mit der in CRM (Spalte G) überein, wird die Begründung geleert und die Konsistenz auf "ok" gesetzt.
This commit is contained in:
@@ -1067,7 +1067,7 @@ def evaluate_fsm_suitability(company_name, company_data):
|
||||
debug_print(f"Fehler beim Aufruf der ChatGPT API für FSM-Eignungsprüfung: {e}")
|
||||
return {"suitability": "k.A.", "justification": "k.A."}
|
||||
|
||||
def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kategorien):
|
||||
def evaluate_branche_chatgpt(crm_branche, ext_branche, wiki_branche, wiki_kategorien):
|
||||
# Laden des Ziel-Branchenschemas
|
||||
def load_target_branches():
|
||||
try:
|
||||
@@ -1079,7 +1079,8 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
||||
debug_print(f"Fehler beim Laden des Ziel-Branchenschemas: {e}")
|
||||
return []
|
||||
target_branches = load_target_branches()
|
||||
target_branches_str = "\n".join(target_branches)
|
||||
|
||||
# Fokus-Branchen bleiben unverändert
|
||||
focus_branches = [
|
||||
"Gutachter / Versicherungen > Baugutachter",
|
||||
"Gutachter / Versicherungen > Technische Gutachten",
|
||||
@@ -1097,7 +1098,7 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
||||
"Service provider (Dienstleister) > Facility Management",
|
||||
"Versorger > Telekommunikation"
|
||||
]
|
||||
focus_branches_str = "\n".join(focus_branches)
|
||||
|
||||
try:
|
||||
with open("api_key.txt", "r") as f:
|
||||
api_key = f.read().strip()
|
||||
@@ -1105,22 +1106,28 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
||||
debug_print(f"Fehler beim Lesen des API-Tokens (Branche): {e}")
|
||||
return {"branch": "k.A.", "consistency": "k.A.", "justification": "k.A."}
|
||||
openai.api_key = api_key
|
||||
additional_instruction = ""
|
||||
if wiki_branche.strip() == "k.A.":
|
||||
additional_instruction = (
|
||||
"Da keine Wikipedia-Branche vorliegt, berücksichtige bitte die Wikipedia-Kategorien mit erhöhter Gewichtung, "
|
||||
"insbesondere bei Hinweisen auf Personentransport oder öffentliche Verkehrsdienstleistungen. "
|
||||
|
||||
# Wenn kein Wikipedia-Artikel vorliegt (wiki_branche = "k.A."),
|
||||
# verwende ausschließlich die CRM-Daten und die externe Branchenbeschreibung (ext_branche)
|
||||
if wiki_branche.strip().lower() == "k.a.":
|
||||
system_prompt = (
|
||||
"Du bist ein Experte im Field Service Management. Ordne das Unternehmen basierend auf den folgenden Angaben exakt einer Branche zu.\n\n"
|
||||
f"CRM-Branche (Spalte G): {crm_branche}\n"
|
||||
f"Externe Branchenbeschreibung (Spalte H): {ext_branche}\n\n"
|
||||
"Das Ziel-Branchenschema umfasst ALLE gültigen Branchen (inkl. Fokus-Branchen). "
|
||||
"Antworte im Format:\nBranche: <vorgeschlagene Branche>\nÜbereinstimmung: <ok oder X>\nBegründung: <kurze Begründung>."
|
||||
)
|
||||
system_prompt = (
|
||||
"Du bist ein Experte im Field Service Management. Deine Aufgabe ist es, ein Unternehmen basierend auf folgenden Angaben einer Branche zuzuordnen.\n\n"
|
||||
f"CRM-Branche (Spalte F): {crm_branche}\n"
|
||||
f"Branchenbeschreibung (Spalte G): {beschreibung}\n"
|
||||
f"Wikipedia-Branche (Spalte N): {wiki_branche}\n"
|
||||
f"Wikipedia-Kategorien (Spalte Q): {wiki_kategorien}\n\n"
|
||||
+ additional_instruction +
|
||||
"Das Ziel-Branchenschema umfasst ALLE gültigen Branchen. Ordne das Unternehmen exakt einer Branche zu. "
|
||||
"Antworte im Format:\nBranche: <vorgeschlagene Branche>\nÜbereinstimmung: <ok oder X>\nBegründung: <kurze Begründung>."
|
||||
)
|
||||
else:
|
||||
system_prompt = (
|
||||
"Du bist ein Experte im Field Service Management. Ordne das Unternehmen basierend auf den folgenden Angaben exakt einer Branche zu.\n\n"
|
||||
f"CRM-Branche (Spalte G): {crm_branche}\n"
|
||||
f"Externe Branchenbeschreibung (Spalte H): {ext_branche}\n"
|
||||
f"Wikipedia-Branche (Spalte N): {wiki_branche}\n"
|
||||
f"Wikipedia-Kategorien (Spalte Q): {wiki_kategorien}\n\n"
|
||||
"Das Ziel-Branchenschema umfasst ALLE gültigen Branchen (inkl. Fokus-Branchen). "
|
||||
"Antworte im Format:\nBranche: <vorgeschlagene Branche>\nÜbereinstimmung: <ok oder X>\nBegründung: <kurze Begründung>."
|
||||
)
|
||||
|
||||
try:
|
||||
response = openai.ChatCompletion.create(
|
||||
model="gpt-3.5-turbo",
|
||||
@@ -1139,12 +1146,13 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
||||
consistency = line.split(":", 1)[1].strip()
|
||||
elif line.lower().startswith("begründung:"):
|
||||
justification = line.split(":", 1)[1].strip()
|
||||
|
||||
# Prüfe, ob der vorgeschlagene Branchentext exakt im Ziel-Branchenschema enthalten ist
|
||||
if branch.lower() not in [tb.lower() for tb in target_branches]:
|
||||
justification = "Vorgeschlagene Branche entspricht nicht dem Ziel-Branchenschema."
|
||||
branch = "k.A."
|
||||
consistency = "X"
|
||||
# Falls der Vorschlag exakt mit der CRM-Branche übereinstimmt, brauchen wir keine Begründung.
|
||||
# Falls der Vorschlag exakt mit der in CRM (Spalte G) vorliegenden Branche übereinstimmt, ist keine Begründung nötig.
|
||||
if crm_branche.strip() and branch.lower() == crm_branche.strip().lower():
|
||||
justification = ""
|
||||
consistency = "ok"
|
||||
@@ -1153,6 +1161,7 @@ def evaluate_branche_chatgpt(crm_branche, beschreibung, wiki_branche, wiki_kateg
|
||||
debug_print(f"Fehler beim Aufruf der ChatGPT API für Branchenabgleich: {e}")
|
||||
return {"branch": "k.A.", "consistency": "k.A.", "justification": "k.A."}
|
||||
|
||||
|
||||
def evaluate_servicetechnicians_estimate(company_name, company_data):
|
||||
try:
|
||||
with open("serpApiKey.txt", "r") as f:
|
||||
|
||||
Reference in New Issue
Block a user