Learning Objectives
- 說出一個 AI 應用由哪些部分組成:模型、提示詞、API、資料、工具、評估
- 比較在 ChatGPT 裡打字和自己寫程式呼叫模型的差別
- 從實際輸出比較規則解析與模型解析各有什麼風險
- 判斷一個需求什麼時候不該用大型語言模型(LLM)
從使用 ChatGPT 到做出 AI 應用
你可能已經常用 ChatGPT:打字、看回答、不滿意就再問一次。這一軌要學的是另一件事:寫程式把模型接進自己的應用。例如讓系統讀完一千則課程回饋再分類,或做一個只根據學校手冊回答問題的助手。
這時候回答不再只是給人看,它會被程式接著使用:存進資料庫、算成統計、顯示給別人。所以你要處理的問題也不一樣:回答的格式對不對、每次一不一樣、算錯了誰會發現、一次呼叫要花多少錢。
這一軌的範例怎麼執行: 右邊的程式和真實環境寫法相同,但不會真的呼叫模型。我們事先用 gpt-5.6-luna 執行一次,把真實的回應錄下來(2026-11-03),你看到的回答、token 數都是當時的真實結果,包括答錯的部分。所以你改了提示詞再跑,會看到「沒有預錄的回應」;想試自己寫的提示詞,第 5、9、13、18 課有登入後呼叫真實模型的實驗。
一個 AI 應用的六個部分
| 部分 | 它是什麼 | 這一軌在哪裡學 |
|---|---|---|
| 模型 | 輸入文字、產生文字的服務;有不同的能力與價格 | 第 2~4 課:token、注意力、抽樣 |
| 提示詞 | 告訴模型任務、規則與輸出格式的文字 | 第 5、6 課 |
| API | 程式呼叫模型的介面,包含錯誤處理與結構化輸出 | 第 7~9 課 |
| 資料 | 模型本來不知道的內容,例如學校手冊;要找出相關段落再交給模型 | 第 10~14 課 |
| 工具 | 模型可以要求你的程式去做的事,例如查資料庫、計算 | 第 15~18 課 |
| 評估 | 用一組測試題檢查應用的品質,改版時才知道有沒有變好 | 第 14、20 課 |
把它們接起來,一次請求的流程大致是這樣:
使用者的問題
↓
你的程式:找出相關資料,組成提示詞
↓(API)
模型:回答,或要求呼叫工具 → 你的程式執行工具,把結果送回去
↓
你的程式:檢查回答的格式與內容,存起來或顯示
注意流程裡大部分是你的程式,模型只是其中一步。
和 ChatGPT 的差別
| 在 ChatGPT 打字 | 自己寫程式呼叫 API | |
|---|---|---|
| 系統提示詞 | 平台寫好的,你看不到全部 | 你自己寫 |
| 對話記憶 | 平台幫你處理 | 程式自己維護(第 7 課) |
| 資料與工具 | 平台提供的功能 | 由你決定接什麼、給什麼權限 |
| 費用 | 依方案或免費額度 | 依用掉的 token 計費(第 2 課) |
| 回答給誰 | 給你讀,錯了你可能看得出來 | 常常直接交給下一段程式,錯了要靠程式擋下來 |
逐步看:用規則解析「資工系 大二」
需求很小:把一段文字解析成系所與年級兩個欄位。先用一般程式寫。請注意第 3 筆以後的輸入發生什麼事。
逐步看:同一個需求交給模型
輸入多加一筆「我是資工系的」,其他相同。請一筆一筆對照上一個範例,看哪些變好、哪些出現新問題。
逐步看:同一個輸入呼叫五次
上一個範例裡 dept 的寫法不一致。這裡把同一個輸入重複送五次,看模型自己會不會一致。
規則與模型各有什麼風險
| 規則解析 | 模型解析(這次錄到的結果) | |
|---|---|---|
| 常見寫法「資工系 大二」 | 正確 | 欄位對,但 dept 寫法不固定 |
| 換句話說「我念資工,今年大二」 | 回傳 None |
解析成功 |
| 不合理的「資工系 大七」 | 回傳 None,擋下來 |
回傳 year: 7,沒有擋 |
| 同一輸入重複執行 | 永遠相同 | 五次裡出現 2 種寫法 |
| 失敗時的樣子 | 明確失敗,程式看得出來 | 看起來像正常的回答,要另外檢查 |
| 費用與速度 | 幾乎為零 | 七筆用掉 512 個 token,每筆都要等網路 |
兩種做法不是誰取代誰。常見的寫法是組合使用:規則對得上就不呼叫模型,對不上才交給模型,模型的結果再用程式檢查。
def parse(text):
result = parse_rule(text) # 規則對得上,就不必花錢呼叫模型
if result is not None:
return result
result = parse_model_as_dict(text) # 假設這裡已把模型回答轉成字典
if result["year"] not in (1, 2, 3, 4, None):
return None # 「大七」在這裡擋下來
return result
逐步看:請模型做計算
再試一個需求:算平均、算乘法。每題問模型三次,和 Python 算的結果對照。請猜猜看三次會不會都對。
什麼時候不該用 LLM
上面的計算結果是這個模型、這個設定在 2026-11-03 錄到的情況;換模型或換設定結果可能不同,有時也會全部答對。重點是:你沒辦法從回答本身看出它對不對,而程式算的結果不需要這樣懷疑。
遇到下面這些情況,先考慮不用 LLM:
- 規則是確定的: 檢查學號格式、比較日期、判斷有沒有修滿學分。
- 要精確計算: 成績、金額、統計。要讓模型參與時,讓它呼叫計算工具(第 15 課),由程式算。
- 查資料庫就有答案: 「我這學期修幾學分」應該查資料庫,不是問模型。
- 每次都要一樣、要能重現: 同樣的輸入必須得到同樣的結果時,例如要留存供稽核的判斷。
適合用 LLM 的情況通常是:輸入的形式不固定(自然語言),要做摘要、分類、改寫、擷取,而且結果可以用程式驗證,或是錯了的代價不高、有人會檢查。
至於結果會影響別人的權益時該怎麼負責,請看 AI 素養軌。
小測驗:什麼時候用模型
這段程式會印出什麼?
下面哪一個需求,最不適合讓模型直接產生答案?
範例裡模型把「資工系 大七」解析成 year: 7。最實際的改善方式是什麼?
同一個輸入呼叫五次,dept 有時是「資工」、有時是「資工系」。對後續的程式有什麼影響?
自己寫程式呼叫 API 時,下面哪一件事不會由平台替你處理,要自己負責?
重點整理
- 一個 AI 應用由模型、提示詞、API、資料、工具、評估組成,流程裡大部分是你自己的程式。
- 規則解析在沒寫到的情況會明確失敗;模型能處理換句話說,但同一輸入可能寫法不同,也可能放過不合理的值。
- 模型的回答要當成還沒驗證的資料,用程式檢查。
- 有確定規則、要精確計算、查資料庫就有答案時,先考慮不用 LLM。
下一課: 範例裡反覆出現 token 這個字。下一課看模型實際上怎麼切文字,以及費用怎麼算。