目錄
Cover
講師介紹
互動時間
Part 1: AI 是什麼?
Q1 為何 ChatGPT 才出圈
Q2 為什麼 AI 會答錯
Q3 大語言模型有多大
Q4 每次答案不同
Q5 再想想能提升嗎
Claude Code Demo
Part 2: LLM 的可能與限制
Q6 LLM 的侷限
Demo 01: 第一次 API Call
Q7 提示詞工程
Demo 02: Token 探索
Q8 讓 AI 遵守規則
Q9 AI 還能做什麼
Demo 03: Tool Use
Part 3: 手刻 Agent Loop
Q10 Agent vs ChatGPT
Q11 只要 15 行程式
Demo 04: Agent Loop
Q12 工具描述品質
Demo 05: File Agent
Q13 Context 管理
Part 4: 從玩具到真實系統
Q14 同模型不同表現
Q15 Claude Code 運作
Q16 記憶怎麼做
Demo 06: Memory
Q17 Subagent
Demo 07: Subagent
Q18 駭入 Agent
Q19 評估 Agent
Finale
Q20 不需要 GPU
Q21 下一步
Q&A
NTHU Data Science · AI Workshop

從 LLM 到 AI Agent

一場從原理到實作的旅程。
4 小時,你會手刻自己的 agent,並理解 Claude Code、Cursor 怎麼運作。

劉弘祥 · 2026.05.16

講師介紹

劉弘祥

劉弘祥

AI 自動化技術顧問,專注於生成式 AI、流程自動化與知識管理領域。清大電機所畢業,現從事企業 AI 導入顧問與人才培訓工作。

曾為金融、保險、科技、媒體等產業提供教育訓練與顧問服務,累積數十場課程與演講經驗。

著作

  • 《資料科學入門完全指南》
  • 《Notion 全方位管理術》
  • 《成為 AI 無法取代的那個人》審訂
  • Claude 書籍(即將出版)

今天結束時,你會帶走三樣東西

1

心智地圖

從 LLM 原理到 Agent 架構,一條清晰的理解路線。

2

你寫的 Agent

從零開始手刻一個有 tool use 和 loop 的 agent。不是 demo,是你自己的 code。

3

學習地圖

知道接下來要學什麼、怎麼學、哪些資源值得看。

不會包括:Attention 數學、Fine-tuning、RLHF 細節。今天目標是「會用、會做」,不是「會訓模型」。

今天的節奏

Part主題時長
1AI 是什麼?怎麼走到這裡的50 min
2LLM 的可能與限制55 min
3手刻 Agent Loop(動手最多)65 min
4從玩具到真實系統47 min
+總結與 Q&A10 min

問題驅動。每段以問題開場,穿插互動 demo 和程式實作。

互動時間

你使用過哪些 AI?

ChatGPT、Claude、Gemini、Copilot、Midjourney、Cursor...

🙋 現場互動
互動時間

你對於 AI Agent 了解多少?

完全沒聽過?有聽過但不確定?已經在用了?

🙋 現場互動

今天的課程,會帶你
手把手建立一個 AI Agent

雖然是很簡單的版本,但從此你就不會再覺得
Agent 是一個很遙遠的概念了。

PART 1 · 50 MIN

AI 是什麼?

五年前這還是科幻片,今天是日常工具。中間到底發生了什麼?
Q1 ChatGPT 為何出圈 Q2 草莓有幾個 r Q3 模型有多大 Q4 不同答案 Q5 再想想 Agent 公式收束
Q1

AI 發展了那麼多年,為何 ChatGPT 才出圈?

提示:技術突破和大眾爆發之間隔了 5 年。差別不在技術,在產品介面。

📊 講解

AI 的四個時代

PRE-2017
規則 + 統計
  • 任務特化模型
  • NLP: 規則、HMM、CRF
  • CV: CNN (AlexNet)
  • 一個模型只做一件事
2017–2022
Foundation Model
  • Transformer (2017)
  • GPT-1/2/3, BERT
  • Scaling Law
  • 「研究者的玩具」
2022–2024
對話時代
  • ChatGPT、RLHF
  • Llama、Mistral 開源
  • 多模態
  • 「聊天工具」
2024–2026
Agent 時代
  • Tool use 成熟
  • Long context
  • Reasoning model
  • Claude Code、Cursor
每個時代不是「取代」上一個,是「在上一個基礎上長出新層」。

關鍵時刻:2022 年 11 月 30 日

5 天
ChatGPT 從 0 到 100 萬使用者

這是 AI 第一次真正「走進普通人」的日子。
在這之前,AI 是研究議題。在這之後,AI 是產品。

為什麼是「現在」?

模型沒有突然變強。
是「模型 + 工具 + 迴圈」這個組合終於成熟。

① Tool Use 可靠

正確率 > 95%。固定 schema、保證結構化輸出。能規劃多步驟工具呼叫。

② Context Window 爆量

4K → 1M tokens。能塞下整個 codebase,agent 才能「看到全貌」做決策。

③ 成本驟降

2022 GPT-3:1M token ≈ $60
2026 Haiku:1M token < $1
Agent 跑上百次呼叫也不破產。

Q2

「草莓」裡有幾個 r?為什麼 AI 會答錯?

提示:答案是 3 個 r(st-r-awbe-rr-y)。但 AI 看到的不是字母,是 token。

📊 講解 → 🎮 互動 Demo

Token:不是「字」

# 同樣意思,token 數差很多
"What is the capital of Taiwan?"           → 8 tokens
"台灣的首都是哪裡?"                          → 14 tokens
"請問你能夠告訴我...到底是位於哪一個城市嗎?"   → 35 tokens

中文用戶在「同樣 context window」下能塞的內容比英文少。這是 LLM 的隱性偏見。

InteractiveTokenization 互動示範

Q3

大語言模型到底有多「大」?

提示:7B、70B、400B⋯⋯這些數字是「參數量」,每個參數就是一個旋鈕。

📊 講解

模型規模 & Context Window

參數量

規模代表模型特性
~7BLlama 3 8B, Gemma 7B消費級 GPU,速度快
~70BLlama 3 70B, Qwen 72B多張 GPU,能力提升
~400B+GPT-4, Claude, Gemini雲端 API,最強但最貴

Context Window 演進

年份模型Context大概能塞
2022GPT-3.54K tokens一篇短文
2023GPT-432K一份小報告
2023Claude 2100K一本短書
2024Claude 3 / Gemini 1.5200K–1M整個 codebase

參數量不等於智商。小模型 + 好 context engineering 常常超越大模型 + 爛 prompt。

Q4

為什麼同一個問題,AI 每次答案不同?

提示:有個參數叫 Temperature,控制模型輸出的「隨機程度」。

📊 講解 → 🎮 互動 Demo

Temperature:控制「隨機度」的旋鈕

Temperature = 0

每次都選機率最高的 token
穩定、可預測

同一個 prompt,每次跑結果一樣。

適合:寫程式、做 agent、結構化輸出

Temperature = 1

按原始機率分佈採樣
更有創意、更多變

同一個 prompt,每次跑結果不同。

適合:寫文案、brainstorm、故事創作

實務建議:寫程式 / 做 agent 用 0~0.3;寫文案 / brainstorm 用 0.7~1.0

InteractiveSampling & Temperature 互動示範

Q5

讓 AI「再想想」能提升表現嗎?

提示:LLM 一個 token 一個 token 生成。如果先讓它「想」,後面每一步都有更好的 context。

📊 講解 → 🎮 互動 Demo

LLM 的核心機制 & Chain of Thought

LLM 就是一個非常會猜
「下一個字」的機器。
輸入: "今天天氣很"

模型內部:
  下一個字機率分佈 = {
    "好":  0.45,
    "熱":  0.20,
    "冷":  0.15,
    "差":  0.08,
    ... (其他 5 萬個 token)
  }

取最高機率(或加 sampling)→ "好"
接回去 → "今天天氣很好"
繼續猜下一個字 → ","
繼續猜 → "適合"
繼續猜 → "出門"
... 直到輸出 <end> token

Chain of Thought:讓模型「先想再答」

每一步的 token 都有前一步當 context,準確度就會提升。先讓模型輸出推理過程,再輸出答案。

現代 reasoning model(Claude thinking、o1)會自動做 CoT。不用特別 prompt。

InteractiveNext-Token Prediction 互動示範

那麼,Agent 到底是什麼?

Agent = LLM + Tools + Loop + Goal
LLM 大腦,決定下一步 + Tools 手腳,讀寫外部世界 + Loop 反覆執行,根據結果調整 + Goal 有目標要達成 = Agent

Agent vs Chatbot

ChatbotAgent
一輪一輪對話自己連續執行多步驟
只能回應文字能執行動作(寫檔、call API、改 DB)
你問什麼答什麼你給目標,它自己拆解
記憶在 context window 內可以有跨對話的長期記憶
停在「給文字」停在「達成目標」或「無法達成」

三種典型 Agent

對話增強型

ChatGPT + tools, Claude.ai

本質還是「你問我答」,只是答的時候會去查資料、跑 code。

時間尺度:秒

任務型

Claude Code, Cursor

給明確任務、有限時間。中途會自己讀檔、跑命令、修正。

時間尺度:分鐘

自主型

Devin, Manus, ChatGPT Agent

長時間自己跑。網頁、檔案、外部 API 都能用。

時間尺度:小時~天

DEMO

看一個真實 Agent 跑起來

打開 Claude Code,給它一個 issue,看它自己讀檔、跑 grep、改 code、跑測試、commit。

關鍵觀察:沒有人教它「先 grep 再 read」,它自己想出來。後面三個 Part 都在拆這個東西。

🔧 課前準備:Gemini API 申請

Step 1:取得 API Key

  • 前往 aistudio.google.com
  • 用 Google 帳號登入
  • 點「Get API Key」→「Create API Key」
  • 複製並保存 key

Step 2:設定環境

export GEMINI_API_KEY="你的key"

免費額度:Gemini 2.0 Flash Lite
每分鐘 30 requests,足夠課堂使用。

Part 3 動手做 agent 時會用到。如果還沒申請,趁休息時間處理。

PART 2 · 55 MIN

LLM 的可能與限制

在動手做 agent 之前,我們得先理解「那個會思考的東西」其實是什麼——以及它不是什麼。

Q6 LLM 的侷限 Q7 要學 Prompt Engineering 嗎 Q8 讓 AI 遵守規則 Q9 除了回答問題 第一次碰 API
Q6

純粹的 LLM 有什麼侷限?

提示:LLM 不知道自己「知不知道」。它永遠會給答案,不會 return null。

📊 講解

為什麼會「幻覺」?

因為它不知道自己「知不知道」。

為什麼數學會錯?

它沒在算,它在「回憶看過類似題目的答案」。

解法:給它 calculator 工具。這就是 Part 3 要做的。

DEMO · 範例 01

第一次呼叫 LLM API

python examples-gemini/01_first_call.py

看:basic call、system prompt、temperature 對比、token usage。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

Q7

需要學「提示詞工程」嗎?

提示:Prompt Engineering 是「怎麼寫好一句指令」。但現在更重要的是——模型看到的所有資訊怎麼設計。

📊 講解 → 🎮 互動 Demo

Context Engineering

2022-2023 大家研究:「那一句問句」怎麼寫

這些技巧現在還有用,但已經不是主戰場。

Context Engineering 的時代

2024+ 重點變成:整個 context 怎麼設計

System Prompt

角色、規則、限制

Few-shot 範例

展示想要的行為

工具描述

能做什麼動作

對話歷史

過去說過什麼

外部資料 RAG

查到的相關文件

記憶

過去學過的事

同模型,不同 Context

空白 system prompt

User:看看這個資料夾有什麼,幫我寫個 README.md

Claude:好的,請問資料夾路徑是?你希望 README 包含哪些內容?...

變成廢話對話

Claude Code system prompt

User:看看這個資料夾有什麼,幫我寫個 README.md

Claude:[自己 ls → read 多個檔案 → 理解專案 → 產生 README.md]

變成自主 agent

同一個模型,差別只在 context engineering。

模型是引擎,Context 是駕駛。
一樣的引擎能做計程車,也能做賽車。

Context Window 互動體驗

DEMO · 範例 02

探索 Token 與 Context

python examples-gemini/02_token_explore.py

看:中英文 token 數差距、multi-turn 累積。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

Q8

如何讓 AI 遵守規則?

提示:有一種特殊的訊息叫 System Message,它在對話開始前就設定好模型的「行為邊界」。

📊 講解 → 🎮 互動 Demo

System Message + 結構化輸出

System Message

對話開始前給模型的「角色設定」。不是對話的一部分,而是設定模型的行為基調。

在 Agent 中:System message 定義了 agent 的「人格」和「行為邊界」——該做什麼、不該做什麼、遇到錯誤怎麼處理。

結構化輸出

兩種做法

Message Structure 互動體驗

DEMO · 範例 02 (續)

結構化 JSON 輸出

python examples-gemini/02_token_explore.py Demo 3

看:用 system prompt 強制模型輸出合法 JSON。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

Q9

除了回答問題,AI 還能做什麼?

提示:如果模型可以「說」它想用計算機,而你的程式真的幫它算了呢?

📊 講解 → 🎮 互動 Demo

Tool Use 概念

給模型一份「工具清單」,模型可以選擇:

程式接到工具呼叫 → 真的去執行 → 把結果回給模型 → 模型決定下一步。

Structured Output 互動體驗

3.2Tool Use 訊息流

User Model Your Code 1 「現在幾點?」 2 看到 tools 清單,決定用工具 3 tool_use: get_time 4 datetime.now() → "14:32" 5 tool_result: "14:32" 6 「現在是下午 2 點 32 分。」

Tool Use 程式碼

tools = [{
    "name": "calculator",
    "description": "進行四則運算,回傳結果",
    "input_schema": {
        "type": "object",
        "properties": {"expression": {"type": "string"}},
        "required": ["expression"]
    }
}]

response = client.messages.create(
    model="claude-sonnet-4-5",
    tools=tools,
    messages=[{"role": "user", "content": "幫我算 23 * 47"}]
)
tools = [{
    "type": "function",
    "function": {
        "name": "calculator",
        "description": "進行四則運算,回傳結果",
        "parameters": {
            "type": "object",
            "properties": {"expression": {"type": "string"}},
            "required": ["expression"]
        }
    }
}]

response = client.chat.completions.create(
    model="gemini-3.1-flash-lite",
    tools=tools,
    messages=[{"role": "user", "content": "幫我算 23 * 47"}]
)

API 實際呼叫:Basic Chat

REQUEST
user
{
  "model": "gemini-3.1-flash-lite",
  "messages": [
    {
      "role": "user",
      "content": "用一句話解釋什麼是 API"
    }
  ]
}
DEMO · 範例 03

第一次 Tool Use

python examples-gemini/03_tool_use_basic.py

看:tool_use → execute → tool_result → final response 的完整一輪。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

PART 3 · 65 MIN

手刻 Agent Loop

所有 agent 的核心,只有 15 行 Python。看完這段你會發現,「神秘」其實很簡單。
Q10 Agent vs ChatGPT Q11 只要 15 行? Q12 工具描述的影響 Q13 Context 管理 動手跑程式
Q10

Agent 跟 ChatGPT 到底差在哪?

提示:ChatGPT 是「你問它答」,Agent 是「你給目標,它自己想辦法」。

📊 講解

Q10Agent vs Chatbot

ChatGPT(Chatbot)Agent
一輪一輪對話自己連續執行多步驟
只能回應文字能執行動作(寫檔、call API、改 DB)
你問什麼答什麼你給目標,它自己拆解
記憶在 context window 內可以有跨對話的長期記憶
停在「給文字」停在「達成目標」或「無法達成」
Q11

Agent 真的只要 15 行程式?

提示:Agent 的本質就是一個 while 迴圈。每一輪:問模型 → 要用工具嗎?→ 執行 → 結果回去 → 再問。

📊 講解 → 💻 程式

Q11從一輪 Tool Use 到 Agent Loop

如果模型呼叫工具後,需要再呼叫另一個工具怎麼辦?

例:「30 天後是星期幾?」

while True ↻ 1 get_current_time() → "2026-05-16" 2 calculator() → "2026-06-15" 3 get_weekday() → "Monday" stop 回覆使用者 每一輪都是:呼叫 API → 檢查 stop_reason → 執行 tool → 送回結果 → 再呼叫

Q11Agent Loop — 核心 15 行

messages = [{"role": "user", "content": user_input}]

while True:
    response = client.messages.create(
        model=MODEL, tools=tools, messages=messages
    )
    messages.append({"role": "assistant", "content": response.content})

    if response.stop_reason == "end_turn":
        break  # 模型不再需要工具,結束

    tool_results = []
    for block in response.content:
        if block.type == "tool_use":
            result = execute_tool(block.name, block.input)
            tool_results.append({
                "type": "tool_result",
                "tool_use_id": block.id,
                "content": result,
            })
    messages.append({"role": "user", "content": tool_results})
messages = [{"role": "user", "content": user_input}]

while True:
    response = client.chat.completions.create(
        model=MODEL, tools=tools, messages=messages
    )
    msg = response.choices[0].message
    messages.append(msg)

    if msg.tool_calls is None:
        break  # 模型不再需要工具,結束

    for tc in msg.tool_calls:
        result = execute_tool(tc.function.name,
                              json.loads(tc.function.arguments))
        messages.append({
            "role": "tool",
            "tool_call_id": tc.id,
            "content": str(result),
        })

Q11這 15 行就是 Agent 的全部本質

後面所有「花俏的東西」都是在這上面加裝飾:

加 system prompt

變成角色化 agent

加更多工具

能做更多事

加 memory 工具

跨對話記得事

加 subagent 工具

能拆解大任務

加 streaming / hooks

變成可觀察的產品

加 eval

能驗證品質

框架會換、模型會變,但這個結構不變。

Q11ReAct Pattern

論文 ReAct: Synergizing Reasoning and Acting(2022)提出的模式:

Thought:    "使用者想知道 30 天後是星期幾,我先拿今天日期"
Action:     get_current_time()
Observation: "2026-05-16"

Thought:    "今天 5/16,加 30 天是 6/15"
Action:     get_weekday("2026-06-15")
Observation: "星期一"

Thought:    "可以回答了"
Final:      "2026 年 6 月 15 日是星期一。"

現在的 Claude / GPT 已經內建這個模式,不用特別 prompt 它。

DEMO · 範例 04 ⭐

完整 Agent Loop

python examples-gemini/04_agent_loop.py

給 agent 三個工具(時間、計算、星期),看它自己規劃多步驟。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

API DemoTool Use — 完整生命週期

USER 送出問題 MODEL tool_calls CODE execute TOOL result MODEL response
USER
{"role": "user", "content": "幫我算 (15 * 23) + 100 是多少?"}
MODEL finish_reason: "tool_calls"
{
  "tool_calls": [{
    "id": "call_abc123",
    "function": {
      "name": "calculator",
      "arguments": "{\"expression\": \"(15 * 23) + 100\"}"
    }
  }]
}
SYSTEM Your code executes
eval("(15 * 23) + 100")  # → 445
TOOL RESULT
{"role": "tool", "tool_call_id": "call_abc123", "content": "445"}
MODEL finish_reason: "stop"
{
  "content": "(15 * 23) + 100 = 445",
  "finish_reason": "stop"
}
Q12

工具描述寫得好不好,差多少?

提示:LLM 決定「用不用工具」和「怎麼用」,完全依賴你寫的描述。描述差 = agent 笨。

📊 講解 → 💻 程式

Q12好的工具描述 vs 爛的工具描述

爛的描述

{
  "name": "search",
  "description": "search something"
}

模型不知道:搜什麼?網路還是本地?回傳什麼?

好的描述

{
  "name": "search_web",
  "description": "Search the public internet for current info. Use when user asks about events after 2024 or current data. Returns top 5 results: title, snippet, URL."
}

明確說「何時用」、「回傳什麼」。

工具描述 = 給 LLM 的使用說明書。寫得好 agent 表現翻倍。

Q12多工具:File System Agent

給 agent 一組「能讀寫檔案」的工具:

工具說明
list_directory列出資料夾內容
read_file讀取檔案
write_file寫入檔案

給它任務:「看看資料夾裡有什麼,幫我寫一份摘要。」

關鍵觀察:沒有人教它「先 list 再 read 再 write」,它自己規劃。

DEMO · 範例 05

File System Agent

python examples-gemini/05_file_agent.py

注意 agent 自己探索的順序。試試把工具描述改差,看它變笨。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

Q13

Agent 在 Context 管理上要注意什麼?

提示:對話越長,token 越多,模型注意力越被稀釋。你需要策略來控制。

📊 講解

Q13Context Engineering 在 Agent 的四個重點

① System Prompt 設計

角色、能力、限制、使用工具的規則、輸出風格。

② 工具描述的藝術

描述差 → agent 不知何時用。Tool description 是 LLM 的「使用說明書」。

③ Error Handling

Tool 失敗時,把錯誤原封不動回傳給模型。不要 catch 然後吞掉。

④ Token Budget

長對話 token 會爆。截斷、摘要、compact、subagent 是四種應對。

Q13Token Budget — 四種策略

截斷

只保留最近 N 輪。

簡單但遺忘舊資訊。

摘要

舊內容壓縮成摘要。

保留事實,細節遺失。

Compact

整段對話 LLM 重寫 = Claude Code compaction。

最聰明但最貴。

Subagent

子任務獨立 context。

主對話完全乾淨。

Part 3 小結

你剛剛學會的東西:

Agent 不神秘。它就是一個 while 迴圈、一些工具、和一個會選工具的 LLM。

PART 4 · 47 MIN

從玩具到真實系統

為什麼同樣是 Claude,跑在 Claude Code 裡像神,跑在裸 API 裡像新手?因為它穿了不同的「裝具」。

Q14 同模型不同表現 Q15 Claude Code 怎麼運作 Q16 記憶怎麼做 Q17 Subagent Q18 駭入 Agent Q19 評估 Agent
Q14

為什麼同一個 Claude,在不同產品裡表現差那麼多?

提示:模型是馬,Harness 是馬具。馬有力量,但需要馬具來引導和控制。

📊 講解

Harness

harness = 馬具、挽具

在 AI 圈,特指「把模型套上來用的整套裝置」。

Claude(模型)可以同時跑在:

Claude.ai 網頁版

對話介面、Artifacts、搜尋

Claude Code CLI

檔案系統、Bash、subagent、hooks

裸 API call

你自己寫什麼,它就只有什麼

同模型、三種 harness、行為完全不同。

Harness 包含什麼?

核心三件套

System Prompt

角色、規則、語氣

Tools

模型能「做」的事

Loop / State

多輪執行、狀態管理

外圍配件

Memory

跨對話記憶

Safety

權限、沙箱

UI

使用者介面

Eval / Monitor

品質追蹤

Subagents

子任務分工

Hooks / Events

生命週期攔截

State / Todo

自我規劃

Q15

Claude Code 到底怎麼運作的?

提示:它和你剛寫的 agent 是同一個架構。差別只在工程規模。

📊 講解

Claude Code System Prompt(節錄)

You are Claude Code, Anthropic's official CLI for Claude...

# Doing tasks
- The user will primarily request you to perform
  software engineering tasks...
- Prefer editing existing files to creating new ones.
- Don't add features, refactor, or introduce abstractions
  beyond what the task requires.

# Using your tools
- Prefer dedicated tools over Bash when one fits
  (Read, Edit, Write)
- Use TodoWrite to plan and track work.
- You can call multiple tools in a single response.

# Tone and style
- Only use emojis if the user explicitly requests it.
- Your responses should be short and concise.

完整 system prompt 約 5000+ tokens。Anthropic 投入大量 prompt engineering 進去。

工具粒度

工具用途為什麼這樣設計
Read讀檔(加行號、限大小)不是 cat,因為要結構化
Edit精準 string replacement不是整檔重寫,省 token、減錯
Write建立新檔少用,避免覆蓋
Bash執行 shell逃逸閥
Grep搜尋字串不是叫 bash grep,是 ripgrep 包裝
TodoWrite自我管進度強制 agent 規劃
Agentspawn subagentcontext isolation

太粗(給 bash 就好)→ 模型亂下指令;太細 → tool 太多模型選不出來。

課程範例 vs Claude Code

組件課程範例Claude Code
System Prompt幾行超過 1 萬字
工具數3–5 個數十個
Loop基本 while加上錯誤處理、重試、token 管理
Subagent範例 07內建 Task tool 做 context isolation
記憶JSON 檔CLAUDE.md + TodoWrite
Q16

Agent 的「記憶」怎麼做?

提示:其實就是「讀寫一個 JSON 檔案」。沒有任何神奇的技術。

📊 講解 → 💻 程式

Memory 概念

給 agent 兩個工具:save_memoryload_memory

核心概念都一樣:agent 透過工具存取資訊

DEMO · 範例 06

給 Agent 加 Memory

python examples-gemini/06_agent_with_memory.py

第一次對話告訴 agent 你的名字,第二次(messages 重置)它還記得。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

Q17

什麼是 Subagent?為什麼需要?

提示:主 agent 的 context 越長越混亂。如果能「開一個新的 LLM 對話」跑子任務呢?

📊 講解 → 💻 程式

Subagent — Context Isolation

為什麼需要:主對話 context 越長越貴 + 模型越混亂。

主 Agent Context

使用者:「幫我比較 Anthropic、OpenAI、Google 的 agent 策略」

spawn_subagent() × 3

Subagent 1

研究 Anthropic

獨立 context

Subagent 2

研究 OpenAI

獨立 context

Subagent 3

研究 Google

獨立 context

結果

只有摘要回到主 context,不被中間 100 步污染。

主對話只看到「結果」,不被中間 100 步污染。

DEMO · 範例 07

Subagent Pattern

python examples-gemini/07_subagent.py

主 agent 收到「比較三家公司」,spawn 三個 subagent,每個有獨立 context。

使用 Gemini API + gemini-3.1-flash-lite 免費模型

Q18

如何「駭入」一個 AI Agent?

提示:Agent 有工具。被注入後不只是回答奇怪的東西——它可能執行危險操作。

📊 講解

Prompt Injection + Agent 安全

Prompt injection 是攻擊者透過輸入文字,覆蓋或繞過 system message 的限制。

為什麼 Agent 更危險?

一般 Chatbot

被注入 → 回答奇怪的東西

vs

Agent

被注入 → 可能執行危險操作(刪檔案、發送資料)

防禦策略

Q19

怎麼知道 Agent 好不好?

提示:Agent 任務是開放式的,沒有「正確答案」。這是目前最難的問題之一。

📊 講解

評估 Agent(Eval)

為什麼這很難

業界做法

做 agent 不難,做品質穩定的 agent 很難。

推薦工具:Inspect(UK AISI)、Promptfoo

其他 Harness 比較

Harness模型目標特色
ChatGPTGPT-4/5通用對話Web、Code Interpreter、Image Gen
Claude CodeClaudeCoding agent強檔案系統、Bash、subagent、hooks
Cursor多模型IDE-first codingDiff-first、in-editor、Composer
Devin多模型自主 coding agent長時間執行、瀏覽器、planner
Manus多模型通用任務 agent多領域工具、自主執行

觀察

模型快變成「商品」,Harness 才是差異化。

想做出有特色的 agent 產品?

FINALE · 10 MIN

總結 & 下一步

把今天串成一張圖,告訴你接下來該往哪走。

Q20

我沒有 GPU,能做 Agent 嗎?

提示:Agent 是「用 API」,不是「跑模型」。計算在雲端,你的電腦只跑迴圈和執行工具。

📊 講解

不需要 GPU

完全可以,而且今天課程就是證明。

Agent 是「用 API」,不是「跑模型」。一台普通筆電 + 網路就夠了。

推薦入門:LLM API

只要付一點點 token 費用(或免費模型)。今天用的 Gemini 就是免費的。
穩定、快速、不用管硬體。

本地模型也越來越強

Llama、Qwen、Gemma 等開源模型持續進步。
但入門階段先用 API 會比較順暢。

今天的 7 個範例約 32 次 API 呼叫、約 7,150 tokens,全部在 Gemini 免費額度內。

Q21

接下來該學什麼?

提示:Coding Agent → Multi-Agent → Eval → 多模態。按這個順序走不會迷路。

📊 講解

下一步

① Coding Agent

Claude Code:今天看到的,開源可學
Codex (OpenAI):類似概念
先用起來,體會 agent 能做什麼

② Agent Skills & Multi-Agent

讓 agent 有更多能力:瀏覽器操作、資料分析
多個 agent 協作:規劃者 + 執行者 + 審查者

③ Framework(挑一個)

LangGraph:graph-based
Pydantic AI:型別友善
Anthropic Agent SDK:官方、簡潔

④ Eval & 多模態

怎麼衡量 agent 品質:Inspect、Promptfoo
讓 agent 操作瀏覽器、看圖、看影片

推薦資源

建議路徑

  1. 馬上做:把今天的範例改成自己的專案
  2. 每天用:養成用 AI 輔助工作的習慣
  3. 讀 source:Claude Code 是 open-source
  4. 挑戰自己:寫一個能解決實際問題的 agent

總架構圖

HARNESS

System Prompt
Tools
Memory
UI / Safety
Hooks / Events
Eval / Monitor

LOOP ↻

LLM

↑ Context(engineered)

User Goal

核心訊息

Agent = LLM + Tools + Loop + Context

框架會換、模型會變,但這個結構不變。

你今天看到它的全貌了。

FEEDBACK

Slido

NTHUDS-0516

app.sli.do/event/jGSXuWdWbtvaq5FsFHu6Ut

Thank you

Q & A

問問題的最好時機:
「我大概懂了,但有件事我不太確定...」

清大資料科學社 · 2026.05.16
課程資源:Notion 頁面(掃 QR Code)
回饋:Slido NTHUDS-0516