上一篇把 Gemini 接進 Flask,也成功讓 AI 按照我規定的格式回傳 JSON。
今天要讓 Flask 把這些資料拿出來,做第一版「任務排序邏輯」
MySQL
↓
取得所有未完成任務
↓
Flask
↓
整理成 Prompt
↓
Gemini
↓
排序
先增加幾個不同的任務
INSERT INTO tasks
(title, description, estimated_minutes, importance, deadline, progress, status)
VALUES
(
'完成英文報告',
'完成英文課報告並整理內容',
60,
2,
'2026-09-16 23:59:00',
0,
'todo'
),
(
'準備期中考試',
'複習資料結構與演算法',
90,
3,
'2026-09-18 23:59:00',
20,
'doing'
),
(
'看 Python 教學影片',
'完成 Python 練習影片',
45,
1,
'2026-09-20 23:59:00',
0,
'todo'
);
這樣資料庫裡就會有不同的:
之後 AI 才有東西可以比較。
讓 Flask 從 MySQL 抓出未完成任務,把任務交給 Gemini。
@app.route("/ai/rank", methods=["GET"])
def ai_rank():
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}
請根據以下條件判斷任務的優先順序:
1. 重要程度越高,優先度越高
2. Deadline 越接近,優先度越高
3. 請考慮目前的完成進度
4. 請綜合以上條件,不要只看單一條件
請從最應該先做的任務開始排序。
只回傳 JSON,不要加入其他說明。
格式:
[
{{
"task_id": 1,
"priority": 1,
"reason": "原因"
}}
]
"""
response = client.models.generate_content(
model="gemini-3.5-flash-lite",
contents=prompt
)
return {
"result": response.text
}
先啟動 Flask
雖然回傳格是跑掉了,但 AI 成功把資料庫裡的 7 個未完成任務拿出來比較,最後排成:
Priority 3 → task 3
Priority 4 → task 5
Priority 5 → task 8
Priority 6 → task 7
Priority 7 → task 9
而且 AI 不只是給順序,還有給原因,且AI 的排序其實已經開始同時考慮:
它不是單純只會把重要程度全部排前面
接下來 Day 13
我們會先更正回傳格式問題,而且不只是繼續加 Prompt,會開始做一個比較有意思的測試:
「Deadline 越近,就一定要越優先嗎?」