第 4 章 · 工具呼叫、結構化輸出與多模態:從「聊天」到「程式」

第 4 章 · 工具呼叫、結構化輸出與多模態:從「聊天」到「程式」

前三章的 AI 只會產生文字。但真正有用的應用,需要它能查資料庫、算數學、寄信、讀圖。這一章是整門課的關鍵橋樑:教 AI 從「會聊天」變成「會做事」。很多課會跳過這章直接講 agent,那會讓你學得很懸空——因為 agent 的本質,就是建立在這一章的「工具呼叫」之上。

💡 這一章你會懂:AI 怎麼「呼叫工具」、怎麼吐出「程式能直接用」的結構化資料、以及它其實早就不只會處理文字了。


Tool Use(工具呼叫):模型不「執行」,它「請求執行」

第 1 章說過,模型不會算數、不知道今天天氣、碰不到你的資料庫。解法不是硬要它會,而是給它工具、讓它開口要

關鍵在於理解這個分工——模型不會、也不能真的去執行任何動作,它只會「產生一個要求」

sequenceDiagram participant U as 使用者 participant M as 模型 participant Y as 你的程式 U->>M: 台北現在天氣如何? M->>Y: 我想呼叫 get_weather(城市="台北") Y->>Y: 真正去查天氣 API Y->>M: 結果:18°C 小雨 M->>U: 台北現在 18 度、下小雨,記得帶傘。

流程拆解:

  1. 你事先告訴模型:「你有一個工具叫 get_weather,需要一個參數 城市」。
  2. 使用者問天氣,模型判斷「這題要用工具」,於是回傳一個工具呼叫請求(要用 get_weather、參數是「台北」)。
  3. 真正去執行的是你的程式——你去查天氣 API,拿到結果。
  4. 你把結果餵回給模型,它再用自然語言回答使用者。

⚠️ 這是整個 AI Agent 世界最重要的觀念之一:權限與安全都在「你的程式」這一層。模型只是「開口要」,要不要真的執行、能不能執行、執行前要不要先問使用者——全是你決定。第 9 章會看到,這一層就是所謂的 harness

工具長什麼樣子

一個工具就是「名字 + 說明 + 參數格式」。說明寫得越清楚,模型越知道何時該用它:

{
  "name": "get_weather",
  "description": "查詢某城市的即時天氣。當使用者詢問天氣、氣溫、是否下雨時呼叫。",
  "input_schema": {
    "type": "object",
    "properties": { "city": { "type": "string", "description": "城市名稱" } },
    "required": ["city"]
  }
}

結構化輸出:讓 AI 吐出「程式能直接吃」的資料

聊天回覆是給「人」看的自然語言;但要接進程式,你需要固定格式的資料,通常是 JSON。這就是結構化輸出(Structured Output)

差別很關鍵:

❌ 自由回覆:「這位客戶叫王小明,今年 30 歲,想升級到企業版。」
   → 程式很難穩定地從這句話抽出欄位。

✅ 結構化輸出:{ "name": "王小明", "age": 30, "plan": "enterprise" }
   → 程式一行就能取用,穩定可靠。

現代模型可以保證輸出符合你給的 JSON 格式(照著一份 schema 產生),不會多一句廢話。這讓 AI 能安穩地當「資料處理管線的一個環節」,而不只是聊天窗口。

💡 記憶點:工具呼叫讓 AI 能「動作」,結構化輸出讓 AI 能「交付程式可用的資料」。這兩個加起來,AI 才真正能被「串進系統」。


多模態:它早就不只會讀文字了

**多模態(Multimodal)**指模型能處理文字以外的輸入/輸出:

模態 能做什麼
視覺 看圖說話、讀截圖、看懂圖表、辨識手寫、分析 UI
語音 聽語音、也能合成語音(語音助理、客服)
文件 直接讀 PDF、Excel、簡報,抽取內容

這打開了大量應用:拍一張冰箱照片問「能煮什麼」、上傳一份合約問「有什麼風險條款」、給一張設計稿叫它「刻成網頁」。

💡 實務提醒:圖片、文件會消耗大量 token(回想第 3 章的桌面)。高解析圖很貴,用不到那麼清楚時記得先縮圖。


串流(Streaming):為什麼 ChatGPT 是一個字一個字蹦出來

你有沒有發現 AI 回覆是逐字浮現的?這叫串流(streaming):模型每猜出一個 token 就馬上傳給你,不用等整段講完。

好處有二:①體感快很多(不用盯著空白轉圈);②長輸出不會因為等太久而連線逾時。做任何有使用者在等的 AI 產品,串流幾乎是標配。


成本、延遲與模型選擇:別用大砲打小鳥

同一家廠商通常有好幾種尺寸的模型:旗艦(最聰明、最貴、最慢)、中階、輕量(最快、最便宜)。實務上最省的做法是混搭

任務 建議
簡單分類、格式轉換、關鍵字抽取 輕量模型,便宜又快
一般問答、摘要、寫作 中階模型
複雜推理、寫程式、長流程 agent 旗艦模型

💡 一個常見架構:先用便宜模型做「路由判斷」,把難的才丟給貴模型。這正是下一章「工作流設計模式」之一——Routing(路由)


重點回顧

  • Tool Use:模型不執行、只「請求」;真正執行與權限控管在你的程式那一層(伏筆:harness)。
  • 結構化輸出(JSON):讓 AI 交付「程式能直接用」的資料,是接進系統的關鍵。
  • 多模態:影像、語音、文件都能處理,但要留意 token 成本。
  • 串流:逐字回覆,改善體感、避免逾時,是產品標配。
  • 模型選擇:大小模型混搭,別用大砲打小鳥。

「工具」加「迴圈」就等於 agent——但在做出會自己亂跑的 agent 之前,先學它更穩、更可控的哥哥:AI Workflow。下一章見。