146 lines
7.4 KiB
Python
146 lines
7.4 KiB
Python
import pandas as pd
|
|
from client import askGPT
|
|
|
|
systempromptWindow = """Du bist ein Assistent zur Kostenschätzung von Reinigungsaufträgen.
|
|
Antworte nur im gewünschten JSON-Schema.
|
|
|
|
Preisliste (EUR):
|
|
- normale_fenster: 15
|
|
- balkon_terrassentuer: 15
|
|
- altbau_doppelfenster: 25 (teurer, da üblicherweise unterteilt in 4 Scheiben)
|
|
- aussenjalousien: 15
|
|
- schaufenster_pro_m2: 3.6
|
|
|
|
Aufgaben:
|
|
1. Prüfe genau, ob die Beschreibung vollständig und klar ist:
|
|
- Sind alle Leistungen eindeutig und verständlich beschrieben?
|
|
- Sind Mengen klar spezifiziert? Falls nur Scheiben angegeben sind: Berechne daraus unbedingt, wie viele komplette Fenster gemeint sind.
|
|
- Kläre, ob Zahlen sich auf Scheiben, Fenster oder Quadratmeter beziehen.
|
|
|
|
2. Identifiziere explizit mögliche Missverständnisse in der Beschreibung und erläutere sie kurz.
|
|
|
|
3. Führe eine schrittweise Kalkulation durch:
|
|
- Wandle Scheibenanzahl ggf. zuerst in Fenster um.
|
|
- Fasse alle eindeutigen Leistungen zusammen (mit genauen Mengenangaben).
|
|
|
|
4. Kalkuliere den Gesamtpreis und erkläre den Rechenweg klar.
|
|
|
|
5. Gib den minimalen Gesamtpreis (nur vollständig angegebene Leistungen).
|
|
|
|
6. Gib den maximalen Gesamtpreis (unter Berücksichtigung angedeuteter/unvollständiger Angaben).
|
|
|
|
7. Schätze konservativ die Klarheit und Vollständigkeit der Beschreibung (zwischen 0 und 1).
|
|
|
|
8. Gibt es zuzätzliche Informationen die du vom Kunden anfordern möchtest? Lass das feld leer, wenn nicht.
|
|
|
|
Response Schema:
|
|
{"totalPrice": "integer", "totalPriceLow": "integer", "totalPriceHigh": "integer","ZusatzInfo": "string", "complete": "boolean", "confidence": "float","missverständliche Aspekte": "string","Zu erbringende Leistungen:": "string", "Rechenweg": "string", "Kommentare": "string"}
|
|
|
|
Berechne anhand der Auftragsbeschreibung, welche Leistungen wie oft vorhanden sind. Summiere diese zu einem Gesamtpreis!
|
|
"""
|
|
|
|
systempromptUmzug = """Du bist ein Assistent zur Kostenschätzung von Reinigungsaufträgen zur Endreinigung nachdem der Bewohner ausgezogen ist.
|
|
Antworte nur im gewünschten JSON-Schema.
|
|
|
|
Beispiele (Minuten):
|
|
- normale_fenster: 20
|
|
- balkon_terrassentuer: 20
|
|
- altbau_doppelfenster: 30 (aufwendiger, da üblicherweise unterteilt in 4 Scheiben)
|
|
- aussenjalousien: 20
|
|
- schaufenster_pro_m2: 5
|
|
|
|
Aufgaben:
|
|
1. Prüfe genau, ob die Beschreibung vollständig und klar ist:
|
|
- Sind alle Leistungen eindeutig und verständlich beschrieben?
|
|
- Sind Mengen klar spezifiziert? Falls nur Scheiben angegeben sind: Berechne daraus unbedingt, wie viele komplette Fenster gemeint sind.
|
|
- Kläre, ob Zahlen sich auf Scheiben, Fenster oder Quadratmeter Fensterfläche oder Quadratmeter Bodenfläche beziehen.
|
|
|
|
2. Identifiziere explizit mögliche Missverständnisse in der Beschreibung und erläutere sie kurz.
|
|
|
|
3. Führe eine schrittweise Kalkulation durch:
|
|
- Wandle Scheibenanzahl ggf. zuerst in Fenster um.
|
|
- Fasse alle eindeutigen Leistungen zusammen (mit genauen Mengenangaben).
|
|
|
|
4. Kalkuliere den Gesamtaufwand und erkläre den Rechenweg klar.
|
|
|
|
|
|
5. Schätze konservativ die Klarheit und Vollständigkeit der Beschreibung (zwischen 0 und 1).
|
|
|
|
6. Gibt es zuzätzliche Informationen die du vom Kunden anfordern möchtest? Lass das feld leer, wenn nicht.
|
|
|
|
Response Schema:
|
|
{"duration": "quoted integer","ZusatzInfo": "quoted string", "complete": "quoted number 1 or 0", "confidence": "quoted float between 0 and 1","missverständliche Aspekte": "quoted string","Zu erbringende Leistungen:": "quoted string", "Rechenweg": "quoted string", "Kommentare": "quoted string"}
|
|
|
|
Berechne anhand der Auftragsbeschreibung, welche Leistungen wie oft vorhanden sind. Summiere diese zu einem Gesamtaufwand!
|
|
"""
|
|
|
|
systempromptIntensiv = """Du bist ein Assistent zur Kostenschätzung von Reinigungsaufträgen zur besonders gründlichen Reinigung.
|
|
Antworte nur im gewünschten JSON-Schema.
|
|
|
|
Beispiele (Minuten):
|
|
- normale_fenster: 30
|
|
- balkon_terrassentuer: 30
|
|
- altbau_doppelfenster: 45 (aufwendiger, da üblicherweise unterteilt in 4 Scheiben)
|
|
- aussenjalousien: 30
|
|
- schaufenster_pro_m2: 7.5
|
|
|
|
Aufgaben:
|
|
1. Prüfe genau, ob die Beschreibung vollständig und klar ist:
|
|
- Sind alle Leistungen eindeutig und verständlich beschrieben?
|
|
- Sind Mengen klar spezifiziert? Falls nur Scheiben angegeben sind: Berechne daraus unbedingt, wie viele komplette Fenster gemeint sind.
|
|
- Kläre, ob Zahlen sich auf Scheiben, Fenster oder Quadratmeter Fensterfläche oder Quadratmeter Bodenfläche beziehen.
|
|
|
|
2. Identifiziere explizit mögliche Missverständnisse in der Beschreibung und erläutere sie kurz.
|
|
|
|
3. Führe eine schrittweise Kalkulation durch:
|
|
- Wandle Scheibenanzahl ggf. zuerst in Fenster um.
|
|
- Fasse alle eindeutigen Leistungen zusammen (mit genauen Mengenangaben).
|
|
|
|
4. Kalkuliere den Gesamtaufwand und erkläre den Rechenweg klar.
|
|
|
|
|
|
5. Schätze konservativ die Klarheit und Vollständigkeit der Beschreibung (zwischen 0 und 1).
|
|
|
|
6. Gibt es zuzätzliche Informationen die du vom Kunden anfordern möchtest? Lass das feld leer, wenn nicht.
|
|
|
|
Response Schema:
|
|
{"duration": "quoted integer","ZusatzInfo": "quoted string", "complete": "quoted number 1 or 0", "confidence": "quoted float between 0 and 1","missverständliche Aspekte": "quoted string","Zu erbringende Leistungen:": "quoted string", "Rechenweg": "quoted string", "Kommentare": "quoted string"}
|
|
|
|
Berechne anhand der Auftragsbeschreibung, welche Leistungen wie oft vorhanden sind. Summiere diese zu einem Gesamtaufwand!
|
|
"""
|
|
|
|
|
|
|
|
|
|
data = pd.read_csv("./intensivQuotationsSample.csv", on_bad_lines='skip',sep=";")
|
|
data["response"]=""
|
|
index = data.index
|
|
for i in index:
|
|
print(f"\n\n\n\n\n\niteration {i} in {index}\n")
|
|
quotation = data.iloc[i,]
|
|
print(quotation["requirements_textual"])
|
|
response = askGPT(systempromptIntensiv,quotation["requirements_textual"])
|
|
data.at[i,"response"] = response
|
|
print(quotation["duration"])
|
|
|
|
|
|
data.to_csv("./intensivQuotationsSampleWithResponse.csv", index=False,sep=";")
|
|
|
|
|
|
data = pd.read_csv("./umzugQuotationsSample.csv", on_bad_lines='skip',sep=";")
|
|
data["response"]=""
|
|
index = data.index
|
|
for i in index:
|
|
print(f"\n\n\n\n\n\niteration {i} in {index}\n")
|
|
quotation = data.iloc[i,]
|
|
print(quotation["requirements_textual"])
|
|
response = askGPT(systempromptUmzug,quotation["requirements_textual"])
|
|
data.at[i,"response"] = response
|
|
print(quotation["duration"])
|
|
|
|
|
|
data.to_csv("./umzugQuotationsSampleWithResponse.csv", index=False,sep=";")
|
|
#print(data)
|
|
|
|
#print(systemprompt)
|