Spaces:
Running
Running
Update app.py
Browse files
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 |
-
|
| 399 |
-
-
|
| 400 |
-
-
|
| 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 = """
|