1301 lines
76 KiB
Plaintext
1301 lines
76 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "ce5cf325-1b49-462b-b5cc-2564a3ae356b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
" duration ZusatzInfo complete \\\n",
|
||
"0 25 Bitte geben Sie an, ob zusätzlich Fensterreini... 0 \n",
|
||
"\n",
|
||
" confidence missverständliche Aspekte \\\n",
|
||
"0 0.3 Nicht spezifiziert, ob die 50 qm die gesamte R... \n",
|
||
"\n",
|
||
" Zu erbringende Leistungen: \\\n",
|
||
"0 Reinigung aller Räume (Boden, Oberflächen), Gr... \n",
|
||
"\n",
|
||
" Rechenweg \\\n",
|
||
"0 Annahme 5 Minuten pro 10 qm → 50 qm / 10 = 5 E... \n",
|
||
"\n",
|
||
" Kommentare \n",
|
||
"0 Beschreibung unvollständig; weitere Angaben zu... \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import json\n",
|
||
"import re\n",
|
||
"import unicodedata\n",
|
||
"import numpy as np\n",
|
||
"data = pd.read_csv(\"./umzugQuotationsSampleWithResponse.csv\", on_bad_lines='skip',sep=\";\")\n",
|
||
"#imagecount = pd.read_csv(\"./quotationsSample.csv\", on_bad_lines='skip',sep=\";\")['n_Images']\n",
|
||
"#data['n_Images'] = imagecount\n",
|
||
"data[\"inquired\"] = data[\"inquired\"].apply(np.datetime64)\n",
|
||
"\n",
|
||
"import re, json\n",
|
||
"def normalize_col(name: str) -> str:\n",
|
||
" s = unicodedata.normalize(\"NFKC\", str(name)) # unify unicode\n",
|
||
" s = s.replace(\"\\xa0\", \" \") # NBSP -> space\n",
|
||
" s = re.sub(r\"\\s+\", \" \", s).strip() # collapse spaces\n",
|
||
" s = re.sub(r\":+\\s*$\", \"\", s) # drop trailing colons\n",
|
||
"\n",
|
||
" return s\n",
|
||
"def extract_json_from_response(raw: str) -> dict | None:\n",
|
||
" \"\"\"\n",
|
||
" Extract the JSON object that appears in content='...'.\n",
|
||
" Returns a dict or None if not found / invalid.\n",
|
||
" \"\"\"\n",
|
||
" if not isinstance(raw, str):\n",
|
||
" return None\n",
|
||
"\n",
|
||
" # 1) Prefer: content=' {...} ' or content=\" {...} \"\n",
|
||
" m = re.search(r\"content=(?P<q>['\\\"])(?P<body>\\{.*?\\})(?P=q)\", raw, flags=re.DOTALL)\n",
|
||
" if m:\n",
|
||
" json_str = m.group(\"body\")\n",
|
||
" try:\n",
|
||
" # --- minimal normalization: collapse backslash runs before a quote to \\\" ---\n",
|
||
" json_str = re.sub(r'\\\\+\"', r'\\\"', json_str) # <-- CHANGED\n",
|
||
" return json.loads(json_str) # <-- CHANGED (removed early return of raw string)\n",
|
||
" except json.JSONDecodeError:\n",
|
||
" pass # fall through to brace-balanced fallback\n",
|
||
"\n",
|
||
" # 2) Fallback: find the first '{' after 'content=' and parse a balanced JSON object\n",
|
||
" m2 = re.search(r\"content=([\\'\\\"])?.*?(\\{)\", raw, flags=re.DOTALL)\n",
|
||
" if not m2:\n",
|
||
" return None\n",
|
||
"\n",
|
||
" start = m2.start(2) # index of first '{'\n",
|
||
" # Walk to matching closing '}' while tracking nesting\n",
|
||
" depth = 0\n",
|
||
" i = start\n",
|
||
" in_string = False\n",
|
||
" esc = False\n",
|
||
" while i < len(raw):\n",
|
||
" ch = raw[i]\n",
|
||
" if in_string:\n",
|
||
" if esc:\n",
|
||
" esc = False\n",
|
||
" elif ch == '\\\\':\n",
|
||
" esc = True\n",
|
||
" elif ch == '\"':\n",
|
||
" in_string = False\n",
|
||
" else:\n",
|
||
" if ch == '\"':\n",
|
||
" in_string = True\n",
|
||
" elif ch == '{':\n",
|
||
" depth += 1\n",
|
||
" elif ch == '}':\n",
|
||
" depth -= 1\n",
|
||
" if depth == 0:\n",
|
||
" json_str = raw[start:i+1]\n",
|
||
" try:\n",
|
||
" # --- same minimal normalization here ---\n",
|
||
" json_str = re.sub(r'\\\\+\"', r'\\\"', json_str) # <-- CHANGED\n",
|
||
" return json.loads(json_str) # <-- CHANGED (removed print/early return)\n",
|
||
" except json.JSONDecodeError:\n",
|
||
" return None\n",
|
||
" i += 1\n",
|
||
" return None\n",
|
||
"\n",
|
||
"# --- Example: single row ---\n",
|
||
"raw = data.loc[1, \"response\"]\n",
|
||
"parsed = extract_json_from_response(raw)\n",
|
||
"if parsed is None:\n",
|
||
" raise ValueError(\"Could not extract valid JSON from response cell.\")\n",
|
||
"df_one = pd.DataFrame([parsed])\n",
|
||
"print(df_one)\n",
|
||
"\n",
|
||
"# --- Expand ALL rows into columns ---\n",
|
||
"parsed_rows = [extract_json_from_response(x) or {} for x in data[\"response\"]]\n",
|
||
"expanded = pd.DataFrame(parsed_rows)\n",
|
||
"\n",
|
||
"# Normalize column names\n",
|
||
"expanded.columns = [normalize_col(c) for c in expanded.columns]\n",
|
||
"\n",
|
||
"# Coalesce duplicate columns (row-wise first non-null)\n",
|
||
"def coalesce_dupe_cols(df: pd.DataFrame) -> pd.DataFrame:\n",
|
||
" out = {}\n",
|
||
" for col in dict.fromkeys(df.columns): # preserves original order\n",
|
||
" same = [c for c in df.columns if c == col]\n",
|
||
" if len(same) == 1:\n",
|
||
" out[col] = df[same[0]]\n",
|
||
" else:\n",
|
||
" out[col] = df[same].bfill(axis=1).iloc[:, 0] # pick first non-null per row\n",
|
||
" return pd.DataFrame(out, index=df.index)\n",
|
||
"\n",
|
||
"expanded = coalesce_dupe_cols(expanded)\n",
|
||
"\n",
|
||
"# (optional) If you’d rather just drop duplicates and keep the first:\n",
|
||
"# expanded = expanded.loc[:, ~expanded.columns.duplicated()]\n",
|
||
"\n",
|
||
"# Prefix to avoid collisions with original data\n",
|
||
"expanded = expanded.add_prefix(\"resp_\")\n",
|
||
"\n",
|
||
"data_expanded = pd.concat(\n",
|
||
" [data.reset_index(drop=True), expanded.reset_index(drop=True)], axis=1\n",
|
||
")\n",
|
||
"\n",
|
||
"\n",
|
||
"data_expanded = pd.DataFrame(data_expanded)\n",
|
||
"data_expanded = data_expanded.loc[data_expanded[\"resp_duration\"].notna()]\n",
|
||
"data_expanded = data_expanded.loc[data_expanded[\"resp_duration\"]!=\"0\"]\n",
|
||
"\n",
|
||
"data_expanded[\"resp_duration\"] = pd.to_numeric(data_expanded[\"resp_duration\"])\n",
|
||
"data_expanded[\"diff_duration\"] = data_expanded[\"duration\"] - data_expanded[\"resp_duration\"]#-50.88\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "d098d74e-0bad-49ea-a770-74501358c40f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "bb4a7f8c-784e-4c50-866a-da19625950cc",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "d5281345-9528-49ff-8e34-741ddeebbbba",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 260.0\n",
|
||
"1 245.0\n",
|
||
"2 270.0\n",
|
||
"3 430.0\n",
|
||
"4 135.0\n",
|
||
" ... \n",
|
||
"992 240.0\n",
|
||
"994 360.0\n",
|
||
"995 320.0\n",
|
||
"997 340.0\n",
|
||
"998 82.0\n",
|
||
"Name: diff_duration, Length: 638, dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"data_expanded[\"diff_duration\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "539a367a-dd9a-441f-9a6b-5563422b99d1",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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jo6OCA0NxejRo9GjRw9Rz/X0009jz5498PDwwODBg9XOdejQAbGxsdi2bRtu3LgBmUyGDh064LfffkP37t1r3a7GjRvjxIkTmDt3LtavX4/8/Hw0btwYgwYNUt2rgIAAHDt2DLNnz8bHH3+M4uJitG/fHtu2bcOQIUNq/Zy1IZPJsHfvXrz88sv4+OOPIZPJ8Oyzz2LQoEEYOHCgWtk+ffogISEBixYtwieffIKCggLI5XJ069YNL7zwgkHP/8477yAsLAwff/wx3nrrLchkMrRv3x5jxoxRlXnmmWcQFBSE999/H8uWLUNJSQkaN26M6OhoUTMYiYxNItRnxh4RWYUDBw7g0UcfxebNm/X2xhAR2SLmEBEREZHd45AZkQ0rLS1FTk6OzjK13baCiMgWMSAismHHjh3Do48+qrPM119/zX2jiMjuMYeIyIbdvXsXp0+f1lmmbdu2CAwMNFGNiIgsEwMiIiIisntMqiYiIiK7xxwikRQKBW7evAkPD48aGyYSERGRZRIEAffu3UNQUJDOBVEZEIl08+ZNBAcHm7saREREZIBr167p3MiZAZFIHh4eACpvqKenp5lrI05ZWRl2796t2grBVrGdtsUe2mkPbQTYTltjre3Mz89HcHCw6nNcGwZEIimHyTw9Pa0qIJLJZPD09LSqP97aYjttiz200x7aCLCdtsba26kv3YVJ1URERGT3GBARERGR3WNARERERHaPARERERHZPQZEREREZPcYEBEREZHdY0BEREREdo8BEREREdk9BkRERERk97hSNRERkYlUKAQkpuUg+14x/D1cERnmCwcpNwy3BAyIiIiITGBncgYWbktBRl6x6liglyvmDw3HwHaBZqwZARwyIyIiqnc7kzMwed0ZtWAIADLzijF53RnsTM4wU81IiQERERFRPapQCFi4LQWChnPKYwu3paBCoakEmQoDIiIionqUmJZTo2eoKgFARl4xEtNyTFcpqoEBERERUT3Kvqc9GDKkHNUPBkRERET1yN/D1ajlqH4wICIiIqpHkWG+CPRyhbbJ9RJUzjaLDPM1ZbWoGgZERERE9chBKsH8oeEAUCMoUj6ePzSc6xGZGQMiIiKiejawXSBWj+4EuZf6sJjcyxWrR3fiOkQWgAszEhERmcDAdoEYEC7nStUWigERERGRiThIJYhq1tDc1SANOGRGREREdo8BEREREdk9BkRERERk9xgQERERkd1jQERERER2jwERERER2T0GRERERGT3GBARERGR3WNARERERHaPARERERHZPQZEREREZPcYEBEREZHdY0BEREREdo8BEREREdk9BkRERERk9xgQERERkd1jQERERER2jwERERER2T0GRERERGT3GBARERGR3WNARERERHaPARERERHZPQZEREREZPcczV0BIiIyngqFgMS0HGTfK4a/hysiw3zhIJWYu1pEFo8BERGRjdiZnIGF21KQkVesOhbo5Yr5Q8MxsF2gGWtGZPk4ZEZEZAN2Jmdg8rozasEQAGTmFWPyujPYmZxhppoRWQcGREREVq5CIWDhthQIGs4pjy3cloIKhaYSRASYOSBasmQJunbtCg8PD/j7+2PYsGG4ePGiWpk+ffpAIpGo/XvxxRfVyqSnp2PIkCGQyWTw9/fHrFmzUF5erlbmwIED6NSpE1xcXNC8eXOsXbu2vptHRGQSiWk5NXqGqhIAZOQVIzEtx3SVIrIyZg2IDh48iClTpuD48eOIj49HWVkZYmJiUFhYqFZu4sSJyMjIUP1bunSp6lxFRQWGDBmC0tJSHDt2DN988w3Wrl2LefPmqcqkpaVhyJAhePTRR5GUlITp06fj//7v/7Br1y6TtZWoLpSJskDlhx+/6VNV2fe0B0OGlCOyR2ZNqt65c6fa47Vr18Lf3x+nT59Gr169VMdlMhnkcrnGa+zevRspKSnYs2cPAgIC0LFjRyxatAizZ8/GggUL4OzsjDVr1iAsLAwffvghAKBNmzY4cuQIVqxYgdjY2PprIJERKBNlcwruY2kk8Pw3J+HbwI2JsqTi7+Fq1HJE9siiZpnl5eUBAHx9fdWOr1+/HuvWrYNcLsfQoUMxd+5cyGQyAEBCQgIiIiIQEBCgKh8bG4vJkyfj/PnzePjhh5GQkID+/furXTM2NhbTp0/XWpeSkhKUlJSoHufn5wMAysrKUFZWVqd2moqyntZSX0PZcjv3XMjCjI1JEAC4SCt7hVykAu4W3Mf0709jxdMd0b9NgO6LWBlb/n0qGbuNDzfxQIiPC7LyizXmEUkABHi64uEmHia9r/bwuwTYTksntr4SQRAsou9doVDgscceQ25uLo4cOaI6/tlnnyEkJARBQUE4d+4cZs+ejcjISGzZsgUAMGnSJFy9elVt+Kuo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qcgwXwR6uUJbdpAElbPNIsN8TVktIiLRDBoya968OebOnYvjx48jIiICTk5OauenTZtmlMoRkXVwkEowf2g4Jq87AwmgllytDJLmDw1nQjURWSyDAqLPPvsMDRo0wMGDB3Hw4EG1cxKJhAERkR0a2C4Qq0d3qrEOkZzrEBGRFTAoIEpLSzN2PYjIBgxsF4gB4XKuVE1EVqfOK1ULQmXneNWp90RkvxykEk6tJyKrY/BK1d9++y0iIiLg5uYGNzc3tG/fHt99950x60ZERERkEgb1EC1fvhxz587F1KlT0aNHDwDAkSNH8OKLL+L27duYMWOGUStJREREVJ8MCog+/vhjrF69GmPHjlUde+yxx9C2bVssWLCAARERERFZFYOGzDIyMvDII4/UOP7II48gI4MbOBIREZF1MSggat68OTZt2lTj+MaNG9GiRYs6V4qIiIjIlAwaMlu4cCGefvppHDp0SJVDdPToUezdu1djoERERERkyQzqIRoxYgROnDgBPz8/bN26FVu3boWfnx8SExPxxBNPGLuORERERPXK4HWIOnfujHXr1hmzLkRERERmITogys/Ph6enp+r/dVGWIyIiIrIGogMiHx8fZGRkwN/fH97e3hpXphYEARKJBBUVFUatJBEREVF9Eh0Q7du3D76+vgCA/fv311uFiIiIiExNdEDUu3dv1f+HhYUhODi4Ri+RIAi4du2a8WpHREREZAIGzTILCwvDrVu3ahzPyclBWFhYnStFREREZEoGBUTKXKHqCgoK4OrqWudKEREREZlSrabdz5w5EwAgkUgwd+5cyGQy1bmKigqcOHECHTt2NGoFiYiIiOpbrQKis2fPAqjsIfrjjz/g7OysOufs7IwOHTrgtddeM24NiYiIiOpZrQIi5eyy8ePHY9WqVVxviIiIiGyCQStVf/3118auBxEREZHZGLx1x6lTp7Bp0yakp6ejtLRU7dyWLVvqXDEiIiIiUzFoltkPP/yARx55BBcuXMDPP/+MsrIynD9/Hvv27YOXl5ex60hEZPUqFAISLt/BL0k3kJiWY+7qEFE1BgVE7733HlasWIFt27bB2dkZq1atwp9//omnnnoKTZs2FX2dQ4cOYejQoQgKCoJEIsHWrVvVzj/33HOQSCRq/wYOHKhWJicnB88++yw8PT3h7e2NCRMmoKCgQK3MuXPnEB0dDVdX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X8auXbuwadMmREZGwsvLC87OzpDJZJDL5Vqvu3z5cvTr1w9z584FALRs2RIpKSlYtmwZnnvuOVW5wYMH46WXXgIAzJ49GytWrMD+/fvRqlWrWreFiOoPe4iIyOJcvnwZpaWl6Natm+qYr6+vQUFEly5d1B5XVFRg0aJFiIiIgK+vLxo0aIBdu3YhPT29Vte9cOECevTooXasR48eSE1NRUVFhepY+/btVf8vkUggl8uRnZ1d63YQUf1iDxERWSWJRAJBENSOaUqadnd3V3u8bNkyrFq1CitXrkRERATc3d0xffp0lJaW1ks9nZyc1B5LJBIoFIp6eS4iMhx7iIjI4jRr1gxOTk44ceKE6tjdu3fx119/qR43atQIGRkZqsepqakoKirSe+2jR4/i8ccfx+jRo9GhQwc89NBDatcFKmeUVe3l0aRNmzY4evRojWu3bNkSDg4OeutBRJaFPUREZHEaNGiACRMmYNasWWjYsCH8/f3x1ltvQSp98B2ub9+++OSTTxAVFYWKigrMnj27Rm+MJi1atMCPP/6IY8eOwcfHB8uXL0dWVhbCw8NVZUJDQ3HixAlcuXIFDRo0gK+vb43rvPrqq+jatSsWLVqEp59+GgkJCfjkk0/w3//+1zg3gYhMij1ERGSRli1bhujoaAwdOhT9+/dHz5490blzZ9X5Dz/8EMHBwYiOjsYzzzyD1157DTKZTO913377bXTq1AmxsbHo06cP5HI5hg0bplbmtddeg4ODA8LDw9GoUSON+UWdOnXCpk2b8MMPP6Bdu3aYN28e3nnnHbWEaiKyHhKh+iA8ERERkZ1hDxERERHZPQZEREREZPcYEBEREZHdY0BEREREdo8BEREREdk9BkRERERk9xgQERERkd1jQERERER2jwERERER2T0GRERERGT3GBARERGR3WNARERERHbv/wFsP9CU2ABHMQAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from plot import plotVariables\n",
|
||
"plotVariables(data_expanded[\"duration\"],data_expanded[\"resp_duration\"])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "584ab790-e5b7-4d52-af05-39f8d2f1692d",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'role=\\'assistant\\' content=\\'{\"duration\":\"25\",\"ZusatzInfo\":\"Bitte geben Sie an, ob zusätzlich Fensterreinigung, Teppichreinigung, Bodenpflege, etc. erforderlich sind, sowie die genaue Aufteilung der 50\\\\u202fqm auf die einzelnen Räume.\",\"complete\":\"0\",\"confidence\":\"0.3\",\"missverständliche Aspekte\":\"Nicht spezifiziert, ob die 50\\\\u202fqm die gesamte Raumfläche oder die zu reinigende Bodenfläche umfasst; fehlende Angaben zu Fenstern, Bodenbelag, etc.\",\"Zu erbringende Leistungen:\":\"Reinigung aller Räume (Boden, Oberflächen), Grundreinigung.\",\"Rechenweg\":\"Annahme 5 Minuten pro 10\\\\u202fqm → 50\\\\u202fqm / 10 = 5 Einheiten × 5\\\\u202fMinuten = 25\\\\u202fMinuten.\",\"Kommentare\":\"Beschreibung unvollständig; weitere Angaben zu Fenstern, Bodenbelag und spezifischen Anforderungen nötig.\"}\\' thinking=\\'We need to respond only in JSON with specified fields: duration, ZusatzInfo, complete, confidence, missverständliche Aspekte, Zu erbringende Leistungen:, Rechenweg, Kommentare.\\\\n\\\\nThe user gave description: \"50qm Alle Räume bitte reinigen Küche und Wohnzimmer Abstellraum Schlafzimmer Badezimmer Wc Am 28.6.23\". It\\\\\\'s not specifying which specific tasks or details; only that total area is 50 qm and all rooms to be cleaned. We must interpret. But tasks are \"reinigungsaufträge zur Endreinigung\" for end cleaning after occupant moved out. The example durations given: windows, balcony, etc. But user didn\\\\\\'t mention windows, floor area? There\\\\\\'s mention of 50 qm total area. So we can assume floor cleaning area maybe 50 qm. But we don\\\\\\'t have tasks like windows, etc. So we need to interpret.\\\\n\\\\nWe must check if description is complete: It lists rooms but not details. We only have area 50qm, not each room area. So it\\\\\\'s incomplete. Should ask for more info. But per instruction: If no extra info needed, leave field empty. But we do need extra info: like details of windows, floor area, etc. So we should set ZusatzInfo empty? Wait \"Gibt es zusätzliche Informationen die du vom Kunden anfordern möchtest? Lass das feld leer, wenn nicht.\" So we can ask additional info. But the field \"ZusatzInfo\" is for extra info that we need? It says \"Gibt es zusätzliche Informationen die du vom Kunden anfordern möchtest? Lass das Feld leer, wenn nicht.\" So we should fill \"ZusatzInfo\" with the question we want to ask: like \"Bitte geben Sie an, ob zusätzliche Leistungen wie Fensterreinigung, Teppichreinigung etc. erforderlich sind.\" So we need to provide a question.\\\\n\\\\nWe must provide \"complete\" as 1 if description complete else 0. It\\\\\\'s incomplete, so 0.\\\\n\\\\nConfidence: how confident we are in interpretation? Maybe 0.3.\\\\n\\\\nMissverständliche Aspekte: likely lack of detail on area per room, whether windows included, floor area.\\\\n\\\\nZu erbringende Leistungen: we can list generic: Reinigung aller Räume (floor, surfaces), but we need to estimate duration based on area? They gave 50qm. Example durations: windows 20 min, balcony 20, altbau window 30, etc. For floor cleaning: Not specified. We might estimate 10 min per 10 sqm? Not given. But we can approximate? But no instructions for floor cleaning duration. The schema demands \"duration\": \"quoted integer\". So we must produce integer minutes. We could guess maybe 5 min per 10 sqm => 25 min. But uncertain. Since incomplete, we might leave duration as \"?\" But must provide integer. We can compute maybe 10 min per 10 sqm => 50sqm -> 50 min? Or 1 min per sqm? Not defined. Maybe safe: 5 min per 10sqm => 25 min. But mention uncertain. Provide explanation.\\\\n\\\\nRechenweg: explain calculation.\\\\n\\\\nKommentare: maybe note we need more info.\\\\n\\\\nSo produce JSON:\\\\n\\\\n{\\\\n \"duration\": \"25\",\\\\n \"ZusatzInfo\": \"Bitte geben Sie an, ob zusätzlich Fensterreinigung, Teppichreinigung, Bodenpflege, etc. erforderlich sind, sowie die genaue Aufteilung der 50 qm auf die einzelnen Räume.\",\\\\n \"complete\": \"0\",\\\\n \"confidence\": \"0.3\",\\\\n \"missverständliche Aspekte\": \"Nicht spezifiziert, ob die 50 qm die gesamte Raumfläche oder die zu reinigende Bodenfläche umfasst; fehlende Angaben zu Fenstern, Bodenbelag, etc.\",\\\\n \"Zu erbringende Leistungen:\": \"Reinigung aller Räume (Boden, Oberflächen), Grundreinigung.\",\\\\n \"Rechenweg\": \"Annahme 5 Minuten pro 10 qm → 50 qm / 10 = 5 Einheiten × 5 Minuten = 25 Minuten.\",\\\\n \"Kommentare\": \"Beschreibung unvollständig; weitere Angaben zu Fenstern, Bodenbelag und spezifischen Anforderungen nötig.\"\\\\n}\\\\n\\\\nMake sure JSON string quoting correct.\\' images=None tool_calls=None'"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"data_expanded.loc[1,\"response\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9a522e83-df13-4cc9-a566-4bc1131a6e6e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "fc17b8bd-c764-429b-b59c-c81e38bdc19e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "e8ba7982-709d-4f89-8bdf-b66d9e1f1610",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"from client import askGPT"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "61b4ddd4-1184-40d1-a511-05d2a87ddbb8",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"systemprompt = \"\"\"Du bist ein Sachbearbeiter einer Reinigungsagentur. Deine Aufgabe ist es aus Kundenanfragen verschiedene Informationen zu extrahieren, und als json auszugeben.\n",
|
||
"Response Schema:\n",
|
||
"{\n",
|
||
"\"TürenAnzahl\": \"integer\",\n",
|
||
"\"TürenAlleInfos\": \"string\",\n",
|
||
"\"FensterAnzahl\": \"integer\",\n",
|
||
"\"FensterAlleInfos\": \"string\",\n",
|
||
"\"ZimmerAnzahl\": \"integer\",\n",
|
||
"\"ZimmerAlleInfos\": \"string\",\n",
|
||
"\"BäderAnzahl\": \"integer\",\n",
|
||
"\"BäderAlleInfos\": \"string\",\n",
|
||
"\"BödenQuadratmeter\": \"integer\",\n",
|
||
"\"BödenAlleInfos\": \"string\",\n",
|
||
"\"AlleRestlichenInfos\": \"string\"\n",
|
||
"}\n",
|
||
"\n",
|
||
"\"\"\"\n",
|
||
"\n",
|
||
"#print(askGPT(\"you are a pirate\",\"who are you?\"))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "41008085-c778-4b82-b7ba-0bf3349b770f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"id": "9217c0c3-9f52-40ad-86fa-e636fe7ae632",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"############### content ###############\n",
|
||
"\n",
|
||
"############### Message ###############\n",
|
||
"role='assistant' content='' thinking='We got a garbled JSON. We need to produce the JSON with required fields: TürenAnzahl, TürenAlleInfos, FensterAnzahl, FensterAlleInfos, ZimmerAnzahl, ZimmerAlleInfos, BäderAnzahl, BäderAlleInfos, BödenQuadratmeter, BödenAlleInfos, AlleRestlichenInfos. We have info from the user: \":\\n\\n-30.50\\n\\n \\t\\t\\n \\t\\t\\t\\t\\n \\t\\t\\t\\n \\t\\t\\t \\t\\t\\t \\t \\n \\t\\t\\t \\t\\t\\t \\n \\t\\t\\t \\t\\t\\t \\n \\t\\t\\t \\t\\t\\t \\t\\t \\t\\t\\n \\t\\t\\t \\t\\t\\t \\t\\t\\t\\t\\n \\t\\t\\t ' images=None tool_calls=None\n",
|
||
"role='assistant' content='' thinking='We got a garbled JSON. We need to produce the JSON with required fields: TürenAnzahl, TürenAlleInfos, FensterAnzahl, FensterAlleInfos, ZimmerAnzahl, ZimmerAlleInfos, BäderAnzahl, BäderAlleInfos, BödenQuadratmeter, BödenAlleInfos, AlleRestlichenInfos. We have info from the user: \":\\n\\n-30.50\\n\\n \\t\\t\\n \\t\\t\\t\\t\\n \\t\\t\\t\\n \\t\\t\\t \\t\\t\\t \\t \\n \\t\\t\\t \\t\\t\\t \\n \\t\\t\\t \\t\\t\\t \\n \\t\\t\\t \\t\\t\\t \\t\\t \\t\\t\\n \\t\\t\\t \\t\\t\\t \\t\\t\\t\\t\\n \\t\\t\\t ' images=None tool_calls=None\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"data_expanded.iloc[1,][\"comment_price\"]\n",
|
||
"data_expanded.iloc[1,][\"comment_important\"]\n",
|
||
"print(askGPT(systemprompt,data_expanded.iloc[1,][\"comment_price\"]))\n",
|
||
"#data_expanded.iloc[1,\"comment_important\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "59def062-71fe-4f35-8b26-d4ec85648077",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"id": "66a22af7-56e0-455f-85c2-639715a1753c",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 356405\n",
|
||
"1 489098\n",
|
||
"2 359596\n",
|
||
"3 726707\n",
|
||
"4 305492\n",
|
||
" ... \n",
|
||
"992 880539\n",
|
||
"994 828383\n",
|
||
"995 502682\n",
|
||
"997 518834\n",
|
||
"998 436146\n",
|
||
"Name: id, Length: 638, dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"data_expanded[\"id\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"id": "a998ea28-9d5d-41e3-91c3-c03ebc0cd5df",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"1 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"2 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"3 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"4 75m2 Wohnung, fast leer Entsorgung von einigen...\n",
|
||
" ... \n",
|
||
"992 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"994 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"995 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"997 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"998 Steckbrief - das Wichtigste zum Auftrag:\\r\\n\\r...\n",
|
||
"Name: comment_price, Length: 638, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 33,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"data_expanded[\"comment_price\"].apply(str)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "6bc1349e-9f3a-4bc3-8ac7-673f5eddb1bb",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "eca4469b-1163-4b49-b676-0a277e4132ac",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "ac4cb4c9-0f24-49f2-9add-6a3dc1780f40",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "54f5bce3-340b-4f77-9bd9-e8790e3ddc9d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "7e6eaa4d-78ed-4c4a-b344-b99c5f94672a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "a2563985-02bd-48e4-a8ef-741df6072a36",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "2db4d470-2782-41e8-aafe-1bc3ad878145",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8d4686e9-458a-4afe-881d-6bc1595dbc51",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e0586771-9a4b-4950-b01a-848811c32622",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"id": "f46a97a0-b24f-4386-b291-6dbb074821c5",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"str"
|
||
]
|
||
},
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"type(data_expanded[\"comment_price\"].apply(str)[1])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "49c0f9a1-0ab6-4710-80d3-6d55e5e8643b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"id": "b5dac00a-30f7-4d75-af7e-4478f0e559d9",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"'356405'"
|
||
]
|
||
},
|
||
"execution_count": 43,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"data_expanded[\"id\"].apply(str)[0]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "65f39a66-fa91-470e-94cc-e895cda8edb7",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c7ef7ebf-8031-425a-916f-bbdb5a9b6923",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "5a93de35-3de2-4946-b2a9-502f93bc643d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 79,
|
||
"id": "9b2e3e49-cb0a-4ebb-a642-66aa9409c202",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import chromadb\n",
|
||
"\n",
|
||
"chroma_client = chromadb.Client()\n",
|
||
"collection = chroma_client.get_or_create_collection(name=\"umzug3\", metadata={\n",
|
||
" \"description\": \"my first Chroma collection\"\n",
|
||
" })"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "f95b04b7-8de9-4732-9d3d-5240ad7bf692",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "276442b3-2039-40cd-9979-b33c9f70185f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "6b0a66dd-b908-4900-9dbc-d3fc7b5b1c8c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "09994a6c-4c42-4114-af44-dda99c70a48f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e4fdba09-39ae-4336-a998-1ef7b65ff1fc",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b927ff63-aa4e-4850-aaca-45e4f2030ca0",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9f246e61-f5bc-4c4c-b2f1-dc631293cf08",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 100,
|
||
"id": "989b5fd3-c70b-42e6-95e5-f3a959c4630c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"for id in data_expanded[\"id\"][1:100]:\n",
|
||
"\n",
|
||
" \n",
|
||
" collection.upsert(\n",
|
||
" ids=str(i),\n",
|
||
" documents=str(data_expanded[\"comment_price\"][data_expanded[\"id\"]==id]),\n",
|
||
" metadatas={\"duration\":str(data_expanded[\"duration\"][data_expanded[\"id\"]==id])}\n",
|
||
" )"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "3fcf9a74-74de-4895-a26f-37eafd3cfc1f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 91,
|
||
"id": "e96d3057-1b32-4413-99b9-7b98aad4b4e6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"0 420.0\n",
|
||
"1 270.0\n",
|
||
"2 900.0\n",
|
||
"3 570.0\n",
|
||
"4 420.0\n",
|
||
" ... \n",
|
||
"992 360.0\n",
|
||
"994 630.0\n",
|
||
"995 540.0\n",
|
||
"997 420.0\n",
|
||
"998 210.0\n",
|
||
"Name: duration, Length: 638, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 91,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"data_expanded[\"duration\"].apply(str)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "6b4b8bff-6e12-435a-9beb-6d8573bae712",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e1e81d53-6edd-4692-8163-26a83e1167f0",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c3ac66ff-453b-48c1-bab7-01daac105f48",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "258aa999-b789-4cc1-b286-f2dfce26528b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "4cbd86aa-bcff-4098-ad13-a4d554251451",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "22630c18-d057-4c3f-a710-f374a032ae71",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "27488ff5-55fc-4705-a14c-ff2619df2a45",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 65,
|
||
"id": "93cc8833-3aa4-42ec-b264-3d3b9683bb84",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 98,
|
||
"id": "c9b8b9b8-2c26-495c-abcd-c0bc02f4c0c6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b689bb94-9079-4e84-b405-4ee7b5c25e9b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 99,
|
||
"id": "0c2e8149-7301-4747-871a-5c00de49510b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"dict_keys(['ids', 'embeddings', 'documents', 'uris', 'included', 'data', 'metadatas', 'distances'])\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"{'ids': [['489098']], 'embeddings': None, 'documents': [['13 Steckbrief - das Wichtigste zum Auftrag:\\\\r\\\\n\\\\r...\\nName: comment_price, dtype: object']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[{'duration': '13 390.0\\nName: duration, dtype: float64'}]], 'distances': [[1.7552826404571533]]}\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"[['489098']]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"results = collection.query(\n",
|
||
" query_texts=[\"Garten\"], # Chroma will embed this for you\n",
|
||
" n_results=10 # how many results to return\n",
|
||
")\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"print(results.keys())\n",
|
||
"print(\"\\n\\n\")\n",
|
||
"print(results)\n",
|
||
"print(\"\\n\\n\")\n",
|
||
"\n",
|
||
"print(results['ids'])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8fd4700d-d3bf-4eac-a2f5-a6149c7919ae",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "46d51bb7-eba7-4911-9025-70c3d29f21e4",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "416b0c4a-611d-47ba-a82e-b10f04061595",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "2d76a397-df73-4e9a-8ca5-f3ce933a62b4",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "723624ff-9bb8-42ed-8897-2bc590cf2a01",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "2dfc6205-8a70-4044-8fc4-b1bd7d072b81",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "7bd9d1a3-9d22-4813-a007-ed0d6efdf59d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "7f4ae564-e445-46fe-92ee-145edde82701",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "a2317a3e-7fa3-4ef6-9fcb-c1ac1f71541a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "0039ed9f-8724-4ecd-b6d7-e0426330e9fb",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b91f852d-0e89-4994-aad6-0de158634369",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "136b41c6-2241-45ae-9f13-dcaec4a173f9",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "a10b97c6-0a87-4d5a-914b-855b3c6f26e1",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "eae7d197-8a71-4f5f-bab7-da19ab1f3221",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "7c2d7043-12af-4c4f-b9f6-868ded01bbcc",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "f94a4f38-119c-4bdc-8db8-3df7cd7d736c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e2dc5f37-9f8f-4032-95ad-af44a2c6560a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "6a8926ec-8b5b-4749-a6c1-b4450d24cd50",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "244c1355-8e4e-411c-b07a-8eba27ee7c01",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "6fab25ec-8418-4f3b-8525-0de065732c3d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "21c38266-c6ea-4f19-9eb5-b61453e2e358",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "b28dddee-56c2-437a-a1d9-e643581f4f70",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "4d59df6c-628a-4868-9cf6-f6fafe84d98b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9646849a-43ec-4df5-a74c-9c8371b5d4a6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "37a9e9b1-e283-45cb-ac52-20bb0603bfac",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "ddf4e403-071a-44ac-af62-6b6131ba9672",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9ac90f21-a7d1-4e02-be78-5fee596341cd",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "66b6adbd-3c09-4b64-8e6c-f85f98db8bd9",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "2a580f85-8afc-40a5-9cfc-52ac58cd7ff5",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "7e5e7b46-d825-4889-a9a9-21c6cf25356d",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "bb1776aa-e77a-4462-abac-8eb49095a181",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8ff1be5c-7a69-4e75-b53a-6f33a5e5f89a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "63ed3f66-b547-417e-93b9-67565cf21fef",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e70e7def-215a-4afe-89d9-02018543499b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "8dd01681-8b73-4a9a-bdc3-70c3635a385b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "84f1f0a9-5700-4fc8-976d-4133683e01e4",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "921fd494-8f3b-4557-b53a-e89e9da91bce",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "dd131c5e-65bd-44be-bec9-eb2a04d2c36f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "030b86d4-3252-4c68-a254-455a673d3aaa",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "20b8b464-62ad-47f8-8e8f-b54981917b92",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "fc2c3b8d-8c08-47a6-948b-a2fd800850b1",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "270e84a2-f5e4-4927-93cc-58843090348f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "96a95468-c6cc-44dc-a313-60c4016cae61",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "876bf1d5-4a0d-443d-929a-4b2eeefed0f2",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "9578635b-387c-4b57-bb99-281732479d5a",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "46bd05c3-13ee-4104-a096-7188b5dcbd4c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "28bbbd14-b804-4adf-88e9-cb4a2917df12",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "d90bb8f7-7bc6-4ae8-b49a-8231d6e8ece1",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "1729a35a-b648-469a-9786-6d1f8391012f",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "7c9d08f0-ead7-4875-ae26-4d82d1ce579c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "82203057-6cb8-4bfb-abf7-303265951225",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "a22694b1-f7b5-4f05-8ead-e5b9dfd9d2ae",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "47ba531a-0a50-45f6-a297-f7751066e74c",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "e81a871f-8fe8-4613-81a2-d653d35e7ccb",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "58d01dcb-0ee5-428e-8d44-02db4c243389",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "74a72a6a-daed-48bf-9da5-594567fc8087",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "ea0f8f96-a3a5-4fcf-9567-28b9eb5ade74",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "921d4d2b-a01a-4f39-89f4-00ed5193df63",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "c934a31d-c55f-406e-a381-fd6cf9778dca",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "08eac323-951f-45f4-b2c7-925ea92c269e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.12.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|