跳到主要內容

AI 201 · Module 3

工具發現與工具呼叫

AI 如何找到工具、準備參數、呼叫工具,並把結果整理成有依據的回答

開始第一節
已完成 0 / 6
同步我的進度加入梯次後,進度可跨裝置保存,講師也能看到

資訊

加入後,你已完成的單元編號會連同「學員代碼」傳送給講師,講師可以看到你的進度。請使用講師提供的代碼,不要輸入姓名、公司機密或其他個資。進度資料與該梯次的其他資料一起保存。

學習目標

  • 走過從使用者問題到人工驗證答案的 10 個步驟
  • 用白話說明工具發現(tools/list)與工具呼叫(tools/call)
  • 讀懂一份工具描述與一次工具呼叫,並說出送出了哪些參數、為什麼
  • 區分哪些是可以觀察的(工具選擇、參數、結果、來源),哪些不是

發現工具

8 分鐘

從問題到經過驗證的答案

假設使用者問:「哪些教師在研究代理式 AI?」整段旅程共有 10 個步驟。本單元接下來會逐一放大每個階段。

工具呼叫流程
  1. 使用者提出問題
  2. 解讀意圖
  3. 發現工具
  4. 選擇工具
  5. 準備參數
  6. 依 Schema 驗證
  7. 執行工具
  8. 回傳結構化結果
  9. 產生有依據的回答
  10. 人工驗證

資訊

請注意,第一步與最後一步都屬於人:人定義意圖 → AI 選擇能力 → MCP 呼叫可信工具 → 人驗證結果。

重點: 工具呼叫是由許多小步驟串成的流程,由人開始,也由人收尾。

10 分鐘

工具發現:tools/list

AI 要能使用工具,必須先知道工具存在。Client 會用一個名為 tools/list 的請求,詢問 Server:「你有哪些工具?」Server 則回覆每項工具的描述。

tools/list 回傳結果的示意節錄
{
  "tools": [
    {
      "name": "find_research_experts",
      "description": "Find people by research topic and role.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": { "type": "string" },
          "role": { "type": "string", "enum": ["faculty", "student", "staff"] }
        },
        "required": ["topic"]
      }
    }
  ]
}
  • name:工具的名稱
  • description:工具的用途,用 AI 讀得懂的文字說明
  • inputSchema:允許哪些輸入、哪些是必填(此例中,topic 為必填)

資訊

實際的工具描述可能不同,這份節錄是示意,並已經精簡。重點在於觀念:工具會自己說明自己。
自我檢測

tools/list 的用途是什麼?

tools/list 的用途是什麼?

重點: tools/list 是工具自我介紹的方式:名稱、用途與允許的輸入。

呼叫工具

10 分鐘

選擇工具與準備參數

拿到工具描述之後,AI 會把問題對應到某項能力,並填寫 Schema。針對「哪些教師在研究代理式 AI?」,find_research_experts 的描述最符合,欄位會填入下列的值。

從問題到參數(示意)
問題中的部分參數
「研究代理式 AI」topicagentic AI
「哪些教師」rolefaculty

注意

你能觀察到的,是被選中的工具,以及送出的參數。模型的私下推理並不是介面能呈現的東西,所以不要把一段解釋當成看見它的「思考過程」。請根據看得到的工具選擇與參數來判斷。
自我檢測

在設計良好的工具呼叫畫面中,學習者實際上能觀察到下列哪一項?

在設計良好的工具呼叫畫面中,學習者實際上能觀察到下列哪一項?

重點: 要檢查的是看得見的工具選擇與參數,而不是想像中的思考過程。

12 分鐘

工具呼叫:tools/call

要執行工具,Client 會送出名為 tools/call 的請求,內含工具名稱與參數。在執行任何動作之前,Server 會先依 Schema 驗證參數。如果缺少必填值,或值不在允許範圍內,呼叫就會被拒絕,而不是由系統自行猜測。

針對 find_research_experts 的 tools/call 請求(示意)
{
  "method": "tools/call",
  "params": {
    "name": "find_research_experts",
    "arguments": {
      "topic": "agentic AI",
      "role": "faculty"
    }
  }
}
  1. 送出
    Client 送出工具名稱與參數。
  2. 驗證
    Server 依 Schema 檢查參數。
  3. 執行
    驗證通過後,Server 針對權威資料執行工具。
  4. 拒絕
    驗證失敗時,Server 回傳 AI 可以處理的錯誤,例如補上缺少的值。
自我檢測

送出的參數不符合 Schema(缺少必填值)時,應該發生什麼事?

送出的參數不符合 Schema(缺少必填值)時,應該發生什麼事?

重點: tools/call 送出名稱與參數,Server 先驗證,寧可拒絕也不猜測。

結果與驗證

10 分鐘

附有來源的結構化結果

工具會回傳結構化的結果:AI 與介面都能穩定讀取的欄位。好的結果還會附上來源資訊(provenance),說明資料從哪裡來、有多新。

結果節錄(示意,人名為虛構,並非真實紀錄)
{
  "results": [
    { "name": "Example Person A", "role": "faculty", "topics": ["agentic AI"] },
    { "name": "Example Person B", "role": "faculty", "topics": ["agentic AI", "learning analytics"] }
  ],
  "provenance": {
    "source": "AI4X research directory",
    "retrievedAt": "2026-01-15T09:00:00Z",
    "lastUpdated": "2026-01-10",
    "completeness": "partial"
  }
}
如何閱讀來源資訊
欄位它告訴你什麼
source資料來自哪個權威系統
retrievedAt工具剛剛取得資料的時間
lastUpdated來源紀錄本身最後一次更新的時間
completeness清單是完整的,還是只有部分
自我檢測

結果中出現 "completeness": "partial",最終回答應該如何處理?

結果中出現 "completeness": "partial",最終回答應該如何處理?

重點: 結果的價值取決於來源資訊:來源、新舊程度與完整性。

10 分鐘

有依據的回答與人工驗證

AI 接著根據工具結果寫出回答。有依據的回答會把兩件事分開:來自工具的事實,以及 AI 在事實周圍自己加上的文字或摘要。

有依據的回答

  • 人名來自工具結果
  • 說明資料來源與新舊程度
  • 結果不完整或為空時會註明
  • 把自己的摘要標示為摘要

沒有依據的回答

  • 加入結果裡沒有的人名
  • 沒有標示來源或日期
  • 用自信的猜測填補空缺
  • 把事實與意見混在一起

完成

如果工具找不到資料或執行失敗,正確的回答是「查無結果」,並說明接下來可以怎麼做,而不是拿一個聽起來合理的內容來代替。

最後一步交給你。對照來源檢查人名、留意日期,並判斷這個答案是否足以支撐你要拿它來做的事。

自我檢測

工具沒有回傳任何符合的專家,最好的最終回答是什麼?

工具沒有回傳任何符合的專家,最好的最終回答是什麼?

重點: 回答要以結果為依據,誠實說明缺口,並交由人來驗證。

接下來做什麼?