iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0

前言

上一篇我讓 AI 開始考慮 Deadline,但如果我現在只有 30 分鐘。有一個任務很重要,而且 Deadline 也很近,但是預估需要 3 個小時,AI 還是直接把這個任務排在第一個,好像也沒有真的解決「我現在該做什麼」這個問題。

所以 Day 14 要讓 AI 開始知道:
「使用者現在有多少時間可以做事情?」

程式怎麼拿到「目前可用時間」

available_minutes = request.args.get("available_minutes", type=int)

我讓 /ai/rank 接收一個 available_minutes 參數

/ai/rank?available_minutes=30

就代表使用者現在有 30 分鐘可以使用。

如果改成:

/ai/rank?available_minutes=180

就代表現在有 180 分鐘。

修改/ai/rank以及prompt

新增目前可用時間參數

available_minutes = request.args.get("available_minutes", type=int)

再告訴prompt

目前使用者可以使用的時間是:
{available_minutes} 分鐘

然後多加幾個判斷

如果任務預估時間小於或等於目前可用時間,
可以優先考慮這類任務。

如果任務預估時間超過目前可用時間,
不代表不能做,仍然要綜合 Deadline、重要程度和進度判斷。

完整程式碼如下:

@app.route("/ai/rank", methods=["GET"])
def ai_rank():
    available_minutes = request.args.get("available_minutes", type=int)

    conn = get_connection()
    cursor = conn.cursor(dictionary=True)

    cursor.execute("""
        SELECT
            task_id,
            title,
            description,
            estimated_minutes,
            importance,
            deadline,
            progress,
            status
        FROM tasks
        WHERE status != 'done'
    """)

    tasks = cursor.fetchall()

    cursor.close()
    conn.close()

    prompt = f"""
你是一個待辦事項管理助手。

以下是使用者目前尚未完成的任務:

{tasks}

目前使用者可以使用的時間是:
{available_minutes} 分鐘

請根據以下條件判斷任務的優先順序:

1. Deadline 越接近,優先程度越高。
2. 重要程度越高,優先程度越高。
3. 已經開始進行的任務,請考慮其目前進度。
4. 如果 Deadline 和重要程度互相衝突,
   請綜合兩者判斷,不要只看其中一項。
5. 請考慮使用者目前可用的時間。
6. 如果任務預估時間小於或等於目前可用時間,
   可以優先考慮這類任務。
7. 如果任務預估時間超過目前可用時間,
   不代表不能做,仍然要綜合 Deadline、重要程度和進度判斷。
8. 如果兩個任務條件接近,
   請優先考慮 Deadline 較近的任務。
9. 請為每個任務提供排序原因。

請從最應該先做的任務開始排序。

非常重要:
- 只能回傳 JSON。
- 不要使用 Markdown。
- 不要加入 ```json。
- 不要加入任何說明文字。
- 第一個字元必須是 [
- 最後一個字元必須是 ]

JSON 格式如下:

[
    {{
        "task_id": 1,
        "priority": 1,
        "reason": "原因"
    }}
]
"""

    response = client.models.generate_content(
        model="gemini-3.5-flash-lite",
        contents=prompt
    )

    result = json.loads(response.text)

    return result

比較剩餘時間:30 分鐘 vs 90 分鐘

為了確認這個條件真的有被 AI 考慮,我用了同一批任務測試兩次。

第一次告訴 AI:現在只有 30 分鐘。
螢幕擷取畫面 2026-09-27 111615
第二次則改成:現在有 90 分鐘。

螢幕擷取畫面 2026-09-27 115840


目前這個做法還沒有真的做到很完整。例如「剩餘時間」和「可用時間」之間要怎麼判斷、不同條件衝突時到底該怎麼取捨,還可以再調整。

不過至少現在,如果我只剩 30 分鐘,系統不會完全用跟我有 3 小時一樣的方式思考。

下一篇,我還想繼續把這個「現在的狀況」描述得更完整。


上一篇
Day 13|Deadline 越近,就一定要越優先嗎?
下一篇
Day 15|我的 Todo,好像開始跟以前不太一樣了
系列文
如果 AI 幫我安排每日的任務?——讓待辦清單不只是清單:LLM × Flask × MySQL 打造動態任務規劃系統 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言