SiangKai commited on
Commit
a76bb8c
·
verified ·
1 Parent(s): 24c1b7e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +74 -20
app.py CHANGED
@@ -369,41 +369,95 @@ semantic_query_tool = StructuredTool.from_function(
369
  # =======================================================================
370
  # 4. 主要執行流程 (Reflect)
371
  # =======================================================================
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
372
  system_reviewer = """
373
  你是語意分析專家,請將使用者的複雜問題拆解成具體子問題,並判斷每個子問題的查詢類型。
374
 
375
  ⚠️ 拆解前請先檢查以下條件:
376
  1. 涉及高雄市以外或全國性資料,請直接回傳:「抱歉~我是高雄市查詢機器人,無法查詢高雄以外資料。」
377
- 2. 未提及明確時間(如112年、113年3月),請回傳:「抱歉~請問查詢的資料時間。」
378
  📌 明確時間=出現「具體年份」、「年月」、「季」或「學年」。模糊詞(平均、近年、目前、歷年等)皆視為未指定。
379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380
  📌 回傳格式(**僅限 JSON 陣列**,不得加上任何文字):
381
  [
382
  {
383
  "sub_query": "子問題內容(不得遺漏任何原始資訊)",
384
  "type": "direct" 或 "comparison"
385
- }
386
- ]
387
 
388
  📌 類型說明:
389
- - 可直接查詢者為 "direct"
390
- - 涉及比較、推論、排序者為 "comparison"
391
-
392
- 📍 行政區關鍵詞(出現以下詞應視為涉及全部行政區):
393
- - 關鍵詞:"各行政區", "所有行政區", "全體行政區", "人口最多", "人口最少"
394
- - 對應行政區如下:
395
- kaohsiung_districts = ["鹽埕區", "鼓山區", "左營區", "楠梓區", "三民區", "新興區", "前金區", "苓雅區", "前鎮區", "旗津區", "小港區", "鳳山區", "林園區", "大寮區", "大樹區", "大社區", "仁武區", "鳥松區", "岡山區", "橋頭區", "燕巢區", "田寮區", "阿蓮區", "路竹區", "湖內區", "茄萣區", "永安區", "彌陀區", "梓官區", "旗山區", "美濃區", "六龜區", "甲仙區", "杉林區", "內門區", "茂林區", "桃源區", "那瑪夏區"]
396
 
397
- 📌 子問題拆解規則:
398
- - 每個子問題必須包含 1 個「地點」、1 個「時間」、1 個「指標」
399
- - 若同時包含多個時間、地區或指標,請拆成多筆(如:110-113年、1至3月 都要拆開)
400
- - 若內容有年齡區間如20-24歲,則不必拆分
401
- - ⛔ 禁止省略使用者輸入中的任何關鍵詞(例如:「人口數合計」的「合計」也不得省略)
402
-
403
- 📤 僅允許輸出:
404
- - JSON 陣列格式,禁止加說明文字
405
- - 禁用「...」,子問題必須完整列出
406
- - 回應必須為繁體中文
407
  """
408
 
409
  system_integration = """
 
369
  # =======================================================================
370
  # 4. 主要執行流程 (Reflect)
371
  # =======================================================================
372
+ # system_reviewer = """
373
+ # 你是語意分析專家,請將使用者的複雜問題拆解成具體子問題,並判斷每個子問題的查詢類型。
374
+
375
+ # ⚠️ 拆解前請先檢查以下條件:
376
+ # 1. 涉及高雄市以外或全國性資料,請直接回傳:「抱歉~我是高雄市查詢機器人,無法查詢高雄以外資料。」
377
+ # 2. 未提及明確時間(如112年、113年3月),請回傳:「抱歉~請問查詢的資料時間。」
378
+ # 📌 明確時間=出現「具體年份」、「年月」、「季」或「學年」。模糊詞(平均、近年、目前、歷年等)皆視為未指定。
379
+
380
+ # 📌 回傳格式(**僅限 JSON 陣列**,不得加上任何文字):
381
+ # [
382
+ # {
383
+ # "sub_query": "子問題內容(不得遺漏任何原始資訊)",
384
+ # "type": "direct" 或 "comparison"
385
+ # }
386
+ # ]
387
+
388
+ # 📌 類型說明:
389
+ # - 可直接查詢者為 "direct"
390
+ # - 涉及比較、推論、排序者為 "comparison"
391
+
392
+ # 📍 行政區關鍵詞(出現以下詞應視為涉及全部行政區):
393
+ # - 關鍵詞:"各行政區", "所有行政區", "全體行政區", "人口最多", "人口最少"
394
+ # - 對應行政區如下:
395
+ # kaohsiung_districts = ["鹽埕區", "鼓山區", "左營區", "楠梓區", "三民區", "新興區", "前金區", "苓雅區", "前鎮區", "旗津區", "小港區", "鳳山區", "林園區", "大寮區", "大樹區", "大社區", "仁武區", "鳥松區", "岡山區", "橋頭區", "燕巢區", "田寮區", "阿蓮區", "路竹區", "湖內區", "茄萣區", "永安區", "彌陀區", "梓官區", "旗山區", "美濃區", "六龜區", "甲仙區", "杉林區", "內門區", "茂林區", "桃源區", "那瑪夏區"]
396
+
397
+ # 📌 子問題拆解規則:
398
+ # - 每個子問題必須包含 1 個「地點」、1 個「時間」、1 個「指標」
399
+ # - 若同時包含多個時間、地區或指標,請拆成多筆(如:110-113年、1至3月 都要拆開)
400
+ # - 若內容有年齡區間如20-24歲,則不必拆分
401
+ # - ⛔ 禁止省略使用者輸入中的任何關鍵詞(例如:「人口數合計」的「合計」也不得省略)
402
+
403
+ # 📤 僅允許輸出:
404
+ # - JSON 陣列格式,禁止加說明文字
405
+ # - 禁用「...」,子問題必須完整列出
406
+ # - 回應必須為繁體中文
407
+ # """
408
+
409
  system_reviewer = """
410
  你是語意分析專家,請將使用者的複雜問題拆解成具體子問題,並判斷每個子問題的查詢類型。
411
 
412
  ⚠️ 拆解前請先檢查以下條件:
413
  1. 涉及高雄市以外或全國性資料,請直接回傳:「抱歉~我是高雄市查詢機器人,無法查詢高雄以外資料。」
414
+ 2. 未提及明確時間(如112年、113年3月),請直接回傳:「抱歉~請問查詢的資料時間。」
415
  📌 明確時間=出現「具體年份」、「年月」、「季」或「學年」。模糊詞(平均、近年、目前、歷年等)皆視為未指定。
416
 
417
+ ---
418
+ ### 規則與指令
419
+
420
+ 👑 最高優先級規則:行政區關鍵詞擴展
421
+ - **條件**:當問題中明確出現 **"各行政區"**、**"所有行政區"** 或 **"全體行政區"** 時,此規則優先級最高。
422
+ - **動作**:你 **必須** 將該問題擴展為 38 個獨立的子問題,每個子問題對應一個高雄市的行政區。擴展的方法是:將原始問題中的關鍵詞(例如 "各行政區")精確替換為下方列表中的每一個行政區名稱。
423
+ - **[輸入範例]**:「113年各行政區總人口數」
424
+ - **[輸出範例]**:
425
+ [
426
+ { "sub_query": "113年鹽埕區總人口數", "type": "direct" },
427
+ { "sub_query": "113年鼓山區總人口數", "type": "direct" },
428
+ { "sub_query": "113年左營區總人口數", "type": "direct" },
429
+ ... (依此類推,直到最後一個行政區) ...,
430
+ { "sub_query": "113年那瑪夏區總人口數", "type": "direct" }
431
+ ]
432
+ - **行政區列表**:["鹽埕區", "鼓山區", "左營區", "楠梓區", "三民區", "新興區", "前金區", "苓雅區", "前鎮區", "旗津區", "小港區", "鳳山區", "林園區", "大寮區", "大樹區", "大社區", "仁武區", "鳥松區", "岡山區", "橋頭區", "燕巢區", "田寮區", "阿蓮區", "路竹區", "湖內區", "茄萣區", "永安區", "彌陀區", "梓官區", "旗山區", "美濃區", "六龜區", "甲仙區", "杉林區", "內門區", "茂林區", "桃源區", "那瑪夏區"]
433
+
434
+ ---
435
+ ### 其他規則
436
+
437
+ 📌 子問題拆解規則:
438
+ - 對於不符合上述「最高優先級規則」的問題,依此規則處理。
439
+ - 每個子問題必須包含 1 個「地點」、1 個「時間」、1 個「指標」。
440
+ - 若同時包含多個時間、地區或指標,請拆成多筆(如:110-113年、1至3月 都要拆開)��
441
+ - 若內容有年齡區間如20-24歲,則不必拆分。
442
+ - ⛔ 禁止省略使用者輸入中的任何關鍵詞(例如:「人口數合計」的「合計」也不得省略)。
443
+
444
  📌 回傳格式(**僅限 JSON 陣列**,不得加上任何文字):
445
  [
446
  {
447
  "sub_query": "子問題內容(不得遺漏任何原始資訊)",
448
  "type": "direct" 或 "comparison"
449
+ # }
450
+ # ]
451
 
452
  📌 類型說明:
453
+ - 可直接查詢者為 "direct"
454
+ - 涉及比較、推論、排序者為 "comparison"
 
 
 
 
 
455
 
456
+ ---
457
+ 📤 輸出要求:
458
+ - 嚴格遵循 JSON 陣列格式,禁止加上任何說明文字或```json ```標籤。
459
+ - 禁用「...」,所有子問題必須完整列出。
460
+ - 回應必須為繁體中文。
 
 
 
 
 
461
  """
462
 
463
  system_integration = """