前幾篇已經把 Todo 的基本功能做起來了,上一篇也把任務資料整理好了。
今天的重點是先搞懂:我的程式到底要怎麼跟 LLM 溝通?
以前我一直把「AI」想成一個可以直接聊天的東西。
但對程式來說,LLM 比較像是一個可以透過 API 呼叫的服務。
我的 Flask 不會真的跑進 ChatGPT 裡面跟它聊天,而是把資料送到模型提供的 API。
大概會是這樣:
我的 Flask
↓
送出 Prompt + 任務資料
↓
LLM API
↓
模型分析
↓
回傳結果
↓
Flask
這個概念看起來其實滿直觀的。
那麼我要送什麼給 AI?
這就回到上一篇整理任務資料的原因。
如果我的資料是:
Python 作業
寫鐵人賽文章
複習離散數學
AI 很難做出有根據的判斷。
但如果我送的是:
Python 作業
預估時間:120 分鐘
重要度:3
Deadline:明天
進度:0%
鐵人賽文章
預估時間:90 分鐘
重要度:2
Deadline:今天
進度:20%
可以提供給 AI 的資訊就多很多。
如果直接跟 AI 說:
幫我安排任務。
它當然可以回答。
但我需要的不是一般聊天答案。
我真正想要的是:
根據任務的截止時間、重要程度、剩餘時間與完成進度,幫我判斷目前的任務順序。
而且最好還能告訴我為什麼。
所以 Prompt 其實可以想成是在告訴 AI:
「你現在是誰、你手上有什麼資料、你要做什麼、最後要怎麼回答。」
例如概念上可以變成:
你是一個任務規劃助手。
請根據以下任務資料,
考慮重要程度、截止時間、剩餘時間與完成進度,
幫我安排任務優先順序。
請不要新增不存在的任務。
請按照指定格式回傳結果。
任務資料:
...
這跟平常使用 ChatGPT 的方式其實很像,只是現在這段文字是之後由 Flask 自動組合。
如果 AI 回傳:
我認為目前最重要的是 Python 作業,因為它的重要程度比較高,而且截止日期也比較接近……
人看得懂。但我的程式看了可能會:?????
因為 Flask 需要知道的是:
task_id = 1
priority = 1
而不是一大文字。
所以JSON很重要,例如之後我希望 AI 回傳類似:
{
"recommended_tasks": [
{
"task_id": 1,
"priority": 1,
"reason": "截止時間較近且重要度較高"
},
{
"task_id": 2,
"priority": 2,
"reason": "目前已有部分進度"
}
]
}
這樣 Flask 就可以讀取:
task_id
priority
reason
再交給前端顯示。
整個流程就會變成:
MySQL
↓
取得任務
↓
Flask
↓
組成 Prompt
↓
LLM
↓
JSON
↓
Flask 解析
↓
前端顯示
這才是我真正需要的 AI。
今天研究完之後,我沒有急著要求 AI 馬上做出超厲害的排程。因為現在比較重要的是先把流程搞懂。
目前我至少知道了幾件事情:
下一篇讓我們一起把LLM接起來吧。