Bugfix Robuster Umgang mit k.A.

This commit is contained in:
2025-03-29 21:46:28 +00:00
parent 87412374f9
commit 88f8ffb323

View File

@@ -93,7 +93,7 @@ system_prompt = {
"- Berücksichtige dabei alle vorliegenden Informationen (auch externe Beschreibung, Wikipedia, LinkedIn, Website) sowie die bisherige Einstufung.\n" "- Berücksichtige dabei alle vorliegenden Informationen (auch externe Beschreibung, Wikipedia, LinkedIn, Website) sowie die bisherige Einstufung.\n"
"- Wenn die bisherige Einstufung korrekt ist, bestätige sie wenn nicht, schlage eine neue Einstufung vor und begründe diese.\n" "- Wenn die bisherige Einstufung korrekt ist, bestätige sie wenn nicht, schlage eine neue Einstufung vor und begründe diese.\n"
"- Gib zusätzlich an, ob das Unternehmen FSM-relevant ist (Ja / Nein / k.A. mit Begründung).\n" "- Gib zusätzlich an, ob das Unternehmen FSM-relevant ist (Ja / Nein / k.A. mit Begründung).\n"
"- Schätze die Anzahl mobiler Techniker anhand öffentlich verfügbarer Infos und gib eine Stufe an: <50 / >50 / >100 / >500, mit Begründung.\n\n" "- Schätze die Anzahl mobiler Techniker anhand öffentlich verfügbarer Infos und gib eine Stufe an und begründe diese: <50 / >50 / >100 / >500\n\n"
"Gib das Ergebnis ausschließlich im folgenden CSV-Format aus (eine Zeile, 8 Spalten, getrennt durch Semikolon):\n" "Gib das Ergebnis ausschließlich im folgenden CSV-Format aus (eine Zeile, 8 Spalten, getrennt durch Semikolon):\n"
"Wikipedia-Branche;LinkedIn-Branche;Umsatz (Mio €);Empfohlene Neueinstufung;Begründung;FSM-Relevanz (Ja/Nein/k.A. mit Begründung);Techniker-Einschätzung;Techniker-Begründung\n\n" "Wikipedia-Branche;LinkedIn-Branche;Umsatz (Mio €);Empfohlene Neueinstufung;Begründung;FSM-Relevanz (Ja/Nein/k.A. mit Begründung);Techniker-Einschätzung;Techniker-Begründung\n\n"
"Ziel-Branchenschema:\n" + "\n".join(branches) "Ziel-Branchenschema:\n" + "\n".join(branches)
@@ -122,10 +122,10 @@ def get_wikipedia_data(name):
if not branche: if not branche:
cats = page.categories cats = page.categories
branche = cats[0] if cats else "" branche = cats[0] if cats else ""
return url, branche, umsatz return url, branche or "k.A.", umsatz or "k.A."
except: except:
continue continue
return "", "", "" return "", "k.A.", "k.A."
def classify_company(row): def classify_company(row):
user_prompt = { user_prompt = {
@@ -138,9 +138,12 @@ def classify_company(row):
temperature=0 temperature=0
) )
text = response.choices[0].message.content.strip() text = response.choices[0].message.content.strip()
parts = [v.strip().strip('"') for v in text.split(";")] lines = text.splitlines()
while len(parts) < 8: csv_line = next((l for l in lines if ";" in l and not l.lower().startswith("wikipedia-branche")), "")
parts.append("k.A.") parts = [v.strip().strip('"') for v in csv_line.split(";")] if csv_line else []
if len(parts) != 8:
print("⚠️ Antwort konnte nicht korrekt gelesen werden. Setze alle Werte auf 'k.A.'")
parts = ["k.A."] * 8
return parts return parts
# === VERARBEITUNG === # === VERARBEITUNG ===
@@ -152,9 +155,9 @@ for i in range(start, min(start + DURCHLÄUFE, len(sheet_values))):
wiki, linkedin, umsatz_chat, new_cat, reason, fsm, techniker, techniker_reason = classify_company(row) wiki, linkedin, umsatz_chat, new_cat, reason, fsm, techniker, techniker_reason = classify_company(row)
values = [ values = [
wiki or wiki_branche, wiki,
linkedin, linkedin,
umsatz_chat or umsatz, umsatz_chat,
new_cat, new_cat,
reason, reason,
fsm, fsm,
@@ -168,4 +171,4 @@ for i in range(start, min(start + DURCHLÄUFE, len(sheet_values))):
sheet.update(range_name=f"G{i+2}:P{i+2}", values=[values]) sheet.update(range_name=f"G{i+2}:P{i+2}", values=[values])
time.sleep(5) time.sleep(5)
print("✅ Durchläufe abgeschlossen") print("✅ Durchläufe abgeschlossen")