左 · 每一輪送給模型的上下文(context)
由上而下依時間排列。每一步模型都會把整段再讀一次。
- 系統提示(含工具清單)
- 用戶任務/插話
- 模型輸出
- 工具請求單
- 工具結果
- Harness 訊息
大型語言模型(large language model, LLM)本身只能做一件事:讀入一段文字,再寫出一段文字。所謂 Agent(代理),是把模型放進一個會反覆循環的程式裡。
每一輪,模型讀完整段上下文(context,即到目前為止的全部對話與結果),決定要不要用工具;要用,就寫一張請求單——工具調用(tool call)。包住模型的那層程式叫 Harness(執行框架):它檢查權限、真正執行、把結果貼回上下文,再把整段上下文交還模型。如此重複,直到模型不再提出請求。下面四個任務都是預先編寫好的示意,結果每次相同。
切換任務、「無工具」或「跳過驗證」都會重新開始。權限模式在舞台右邊的 Harness 面板設定,可以隨時改。
按「下一步」走一輪迴圈。左邊是模型每一輪看見的上下文;中間是模型唯一能做的事——寫字;右邊是 Harness 替它做事的地方。留意黃色的請求單:模型寫的只是一張單,它自己碰不到檔案。
由上而下依時間排列。每一步模型都會把整段再讀一次。
這一格只會出現文字。要做事,模型只能在文字裡附上一張請求單。
讀模型寫的請求單,查權限,真正執行,再把結果寫回上下文。
權限模式(permission mode)是 Harness 的功能,不是模型的——第 4 堂會展開。
本頁所有模型輸出與工具結果均為預先編寫的示意,並非真實模型即時產生;詞元(token)數以經驗法則估算(中文每字約 0.6 個、英文每字約 0.3 個)。
模型的輸出永遠是一段文字。它「讀檔案」時,其實只是寫了一句「請讀取 下載/報告.docx」;真正打開檔案、把內容抄回上下文的,是 Harness。模型看不見硬碟、上不了網、也刪不了任何東西——除非 Harness 替它做。
所以「模型執行了程式」這句話是錯的:模型寫了一張請求單,Harness 執行了程式。權限、日誌、叫停,全都發生在 Harness 這一層。
模型說「已寫入檔案」,只代表它寫了一句話。檔案是否真的有內容、程式是否真的跑對,要靠再讀一次、再列一次、再跑一次來確認——這一步叫驗證(verification)。任務 1 勾選「讓模型跳過驗證」,就能看到一次「宣稱完成」與「真的完成」之間的落差。
不用電腦,兩個人就能演出上面那三格。
模型(字條):「請打開講台左邊第一格抽屜,列出裡面的東西。」
Harness(回覆):「三支白板筆(黑、紅、藍)、一塊板擦、一卷膠帶。」
模型(字條):「請在白板上寫『白板筆:3 支』。」 Harness:「已寫。」
模型(字條):「請讀出白板上現在寫著甚麼。」 Harness:「白板筆:3 支」 模型:「完成。」
重點:扮演模型的同學從頭到尾沒有碰過抽屜、也沒有碰過白板——這正是真實 Agent 的處境。
課堂討論用,每題兩分鐘。
第 1 題可引導的方向:讀取類工具(列出、讀檔、查詢)風險低,因為不改變世界;寫入類(寫檔、寄訊息)中等,錯了要花力氣收拾;不可逆類(刪除、付款、發佈)最高,正是任務 3 的「刪除檔案」為何預設要問。可順勢引出第 4 堂的權限模式:授權不是「全給」或「全不給」,而是按動作的可逆性分級。
第 2 題可引導的方向:正確的說法是「模型寫了一張執行程式的請求單,Harness 執行了程式,並把輸出貼回上下文」。把主詞換成「Agent」則說得通,因為 Agent 一詞指的是「模型 + Harness + 工具」整個迴圈系統,而不是模型本身。可以請學生回頭看舞台中間那一格——從頭到尾只出現過文字。