iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
AI 自動化

Data Machi 30 天學習系列:從 Chat 到 Product,打造真正能工作的企業 AI系列 第 17

Day 16|什麼時候工具使用(Tool Use)才真正變成代理(Agent)?

  • 分享至 

  • xImage
  •  

昨天我們已經完成第一個跨來源流程:先查 Google Sheets,再根據結果查詢文件。這套流程可以正常運作,但它有一個很明顯的限制——所有步驟都是我們事先寫好的。只要使用者換一種問法、任務多了一個資料來源,或中間結果需要改變後續動作,就可能需要再增加新的條件與流程。

這時候就會碰到一個很重要的分界:Tool Use 不等於 Agent。 一個系統即使擁有很多工具,只要每一次執行順序都由程式事先決定,它仍然可能只是固定的 Workflow。真正開始具有 Agent 特性的地方,是系統能根據使用者的任務,以及前一步執行得到的結果,重新決定下一步要做什麼。
https://ithelp.ithome.com.tw/upload/images/20260827/201696460yDaMwqixU.jpg

Tool 提供能力,Agent 負責決策

Tool 可以理解成一項可以被呼叫的能力,例如查詢 Google Sheets、搜尋文件、取得專案狀態,或呼叫某個外部 API。它本身通常不會理解整個任務,也不會判斷自己什麼時候應該被使用。

例如:

query_google_sheets
search_documents
get_project_status

這些 Tool 各自負責完成一件明確的工作。query_google_sheets 不需要知道為什麼使用者現在想查數字,search_documents 也不需要知道查完文件之後還要不要繼續做其他事情。

Agent 則多了一層「決策」。它收到使用者問題後,會先理解目前需要哪些資訊,再選擇適合的 Tool。Tool 執行完成後,Agent 還會觀察結果,判斷目前的資訊是否足夠,或是不是需要進一步查詢其他來源。

整體可以簡化成:

理解任務
   ↓
選擇 Tool
   ↓
執行 Tool
   ↓
觀察結果
   ↓
結果足夠嗎?
   ↓
┌──────────────┬──────────────┐
│     是       │      否      │
│              │              │
│ 產生回答     │ 再決定下一步 │
└──────────────┴──────────────┘

如果資料不足,Agent 可能更換 Tool、調整查詢參數,或要求使用者補充資訊。這個「執行之後再次判斷」的循環,才是從固定自動化流程走向 Agent 的核心。

Workflow 和 Agent 最大的差異是什麼?

前一天我們介紹的跨來源流程,其實仍然是一個 Workflow。例如:

Step 1
查 Google Sheets

Step 2
取得 Top Category

Step 3
用 Top Category 查 PDF

Step 4
查 Project Status

Step 5
整合答案

無論使用者問多少次,只要進入這條流程,執行順序大致都是相同的。

但假設使用者改問:

「今年哪一類需求最多?如果文件有正式定義就告訴我,如果沒有,再看看 Confluence;如果這一類目前有改善專案,也一起告訴我。」

這時候執行路徑就開始變得不固定。

可能的流程是:

查 Google Sheets
      ↓
取得 Top Category
      ↓
搜尋 PDF
      ↓
有找到定義嗎?
      ↓
┌─────────────┬─────────────┐
│     有      │     沒有    │
│             │             │
│ 使用結果    │ 查 Confluence│
└─────────────┴─────────────┘
      ↓
是否需要專案資訊?
      ↓
查 Project Tool
      ↓
整合回答

這時「下一步要做什麼」開始依賴前一步的結果,系統不再只是照固定順序執行,而是需要進行動態判斷。

這就是 Agent 比固定 Workflow 多出來的能力。

固定 Workflow 並沒有比較落後

談到 Agent 時,很容易出現一個誤區:既然 Agent 比較有自主性,就代表所有流程都應該改成 Agent。

實際上並不是這樣。

如果任務的步驟非常固定、規則清楚,而且輸入與輸出都可以事先定義,Workflow 通常會比 Agent 更可靠、更便宜,也更容易測試。

例如:

「每天早上 9 點讀取昨天銷售資料,產生固定格式的報表。」

這個流程幾乎完全可以事先寫清楚:

每天 09:00
    ↓
讀取昨日資料
    ↓
計算 KPI
    ↓
套用報表格式
    ↓
輸出報告

這種情況如果硬加入 Agent,反而會多出不必要的模型判斷、Token 成本與執行不確定性。

但另一個問題:

「找出最近表現最差的市場,確認這個指標的正式定義,看看是否已有改善專案;如果沒有,就告訴我目前缺少什麼。」

這類問題的執行路徑就不容易完全預先寫死。系統需要先看數據結果,再決定下一步查哪個來源,因此 Agent 的價值才開始出現。

可以簡單比較:

情境 Workflow Agent
步驟固定 適合 通常沒必要
條件明確 適合 可不用
每次流程大致相同 適合 可能過度設計
問題類型很多 規則可能快速膨脹 適合
下一步依賴中間結果 可以做,但會增加分支 適合
需要語意判斷 較困難 適合
行為容易預測 較低
成本與延遲 較低 通常較高

因此 Agent 並不是 Workflow 的升級版,而是適合處理另一種問題類型的設計方式

為什麼 Data Machi 開始需要 Agent 層?

在 Data Machi 最早的版本中,我們可以用很簡單的規則判斷問題。

例如:

如果是文件問題
→ PDF RAG

如果是數字問題
→ Google Sheets Tool

當只有兩三個工具時,這種方式其實完全合理。

但隨著 Knowledge Map 開始出現更多來源:

Google Sheets
PDF RAG
Confluence
Trello
Database
External API

使用者也可能提出:

「找出最近下降最多的市場,確認這個 KPI 的定義,再看看是否有相關改善計畫。」

或:

「這個專案延遲了嗎?如果延遲,先確認正式 Deadline,再檢查最近的進度紀錄。」

如果每一種組合都使用 if / else 事先寫死,程式很快會變成:

if 問題 A:
    tool_1
elif 問題 B:
    tool_2
elif 問題 C and 條件 D:
    tool_1
    tool_3
elif 問題 E and 條件 F:
    tool_2
    tool_4
...

這種方式不是不能做,但當使用者問題的組合越來越多,規則會快速增加,也很難涵蓋自然語言中的所有表達方式。

因此 Data Machi 開始需要一個 Coordinator

Coordinator 的工作不是自己去讀 Google Sheets 或 PDF,而是理解:

使用者想完成什麼?
      ↓
需要哪些資訊?
      ↓
目前有哪些 Tool 可以使用?
      ↓
先使用哪一個?
      ↓
結果是否足夠?
      ↓
下一步應該做什麼?

這一層開始具有 Agent 的角色。

Agent 最重要的不是「選 Tool」,而是看完結果再決定

如果系統只是把原本的:

if data_question:
    query_google_sheets()

改成讓 LLM 選擇:

LLM:
Use query_google_sheets

這確實已經加入一些動態 Tool Selection,但還不一定代表完整的 Agent 行為。

Agent 更重要的能力,是可以根據 Tool Result 繼續判斷。

假設使用者問:

「CDP 專案現在進度如何?」

第一次執行可能是:

Agent
  ↓
get_project_status("CDP")
  ↓
Result:
No project found

如果只是單次 Tool Calling,流程可能到這裡就結束,直接回答「找不到」。

但 Agent 可以觀察這個結果,重新思考:

「CDP 可能是縮寫,
我需要先知道正式名稱。」

接著再執行:

search_documents("CDP")
        ↓
Result:
CDP = Customer Data Platform

        ↓
get_project_status(
  "Customer Data Platform"
)

這就是 Agent 很關鍵的特性:

前一次 Tool Result 會改變下一次的行動。

Agent 的核心其實是一個決策循環

因此可以把 Agent 簡化成一個不斷循環的過程:

任務
 ↓
Reason
現在需要做什麼?
 ↓
Act
使用某個 Tool
 ↓
Observe
Tool 回傳了什麼?
 ↓
Reason
資訊足夠嗎?
 ↓
┌────────────┬────────────┐
│    不夠    │    足夠    │
│            │            │
│ 繼續行動   │ 產生回答   │
└────────────┴────────────┘

這也是下一篇會進一步介紹的 ReAct(Reason + Act) 思路。

現階段先不用把 Agent 想成一個非常複雜的 AI。它最重要的差異只是:不再一次決定完整流程,而是在每一次取得新資訊後,重新判斷下一步。

新增能力時,先問它是 Tool、Workflow,還是 Agent

做到這裡,我們已經出現三個很容易混在一起的概念:

Tool
Workflow
Agent

可以用三個問題快速判斷一個功能應該放在哪一層。

1. 只需要完成一件明確的事情嗎?

例如:

  • 查一張 Google Sheet
  • 搜尋一份 PDF
  • 取得 Trello Card
  • 查詢目前庫存

這些通常適合做成 Tool

Tool 的責任應該盡量清楚:

Input
  ↓
完成一件明確工作
  ↓
Output

2. 步驟能不能事先列清楚?

例如:

查資料
  ↓
計算 KPI
  ↓
驗證結果
  ↓
產生固定報表

如果每次大致都走相同路徑,通常使用 Workflow 會比較可靠。

3. 下一步是不是必須看中間結果才知道?

例如:

先查數據
  ↓
找出異常市場
  ↓
根據市場查定義
  ↓
如果找不到,改查另一來源
  ↓
再決定是否檢查改善專案

這時候才真正出現 Agent 的需求。

因此可以整理成:

類型 核心問題 例子
Tool 幫我做一件事 查銷售、搜尋文件
Workflow 按照哪些步驟完成? 查資料 → 驗證 → 報告
Agent 下一步應該做什麼? 根據結果動態選擇 Tool

這個順序可以避免一個很常見的問題:把所有東西都設計成 Agent。

為什麼不要什麼都做成 Agent?

Agent 帶來彈性,但彈性並不是免費的。

每多一次模型判斷,通常就代表更多 Token、更多等待時間,以及更多可能走錯路的機會。固定 Workflow 原本可能兩個 API Call 就能完成,如果 Agent 不斷嘗試不同 Tool,可能變成五次甚至更多呼叫。

例如:

固定 Workflow

Tool A
 ↓
Tool B
 ↓
回答

共 2 次 Tool Call

Agent 可能變成:

Tool A
 ↓
結果不足
 ↓
Tool C
 ↓
沒有找到
 ↓
Tool B
 ↓
再查 Tool A
 ↓
回答

共 4 次 Tool Call

如果這些額外步驟真的有必要,當然值得。但如果原本就能用固定規則完成,就沒有必要只為了「看起來比較 Agentic」而增加複雜度。

Agent 應該被使用在:

真正需要動態決策的地方。

而不是當成所有 AI Application 的預設架構。

Agent 也一定要有邊界

Agent 可以自己選擇下一步,不代表它可以無限制地自由行動。

企業環境中的 Agent,更合理的設計是:

可以自主決策
        ↓
但只能在有限範圍內

至少應該限制幾件事情。

可使用的 Tool 有限

Agent 只能使用系統明確提供的 Tool,而不是自己連接未知的系統。

Allowed Tools:

query_google_sheets
search_documents
get_project_status

資料範圍有限

即使有 search_documents,也不代表 Agent 可以搜尋公司所有文件。Tool 本身仍然需要遵守資料與權限邊界。

嘗試次數有限

如果一直找不到答案,不應該無限循環:

Search
 ↓
No Result
 ↓
Search Again
 ↓
No Result
 ↓
Search Again
 ↓
...

可以設定例如:

Maximum Tool Calls = 5

超過之後就停止並說明目前資料不足。

某些情況必須詢問使用者

例如找到兩個名稱都很接近的專案:

Customer Data Platform Revamp
Customer Data Platform Migration

這時候 Agent 不應該自行挑選,而可以回問:

「目前找到兩個可能相關的 CDP 專案,你指的是 Dashboard Revamp 還是 Platform Migration?」

高風險 Action 需要確認

如果未來 Tool 從「查資料」進一步變成「修改資料」,例如:

delete_record
send_email
update_project_status

則應該有更明確的確認與權限控制,而不是讓 Agent 單獨決定執行。

因此企業 Agent 的自主性並不是:

「你想做什麼都可以。」

而比較像:

「在被授權的 Tool、資料範圍、步驟上限與停止條件內,自主選擇下一步。」

這才是比較可控的 Agent 設計。

Data Machi 接下來要增加的不是自由,而是可控的判斷

做到 Day 16,Data Machi 的能力已經可以整理成:

LLM
理解自然語言
      ↓

RAG
取得文件知識
      ↓

Tool Use
取得外部資料
      ↓

Workflow
串起多個步驟
      ↓

Agent / Coordinator
根據任務與結果
動態決定下一步

但接下來的目標不會只是讓 Coordinator 有更多自由。如果 Agent 可以自己選 Tool,就需要知道它為什麼選、執行了什麼、什麼時候應該停止,以及結果是否真的可靠。

因此後面的重點會逐漸從:

「怎麼讓 AI 做更多事情?」

轉向:

「怎麼讓 AI 的決策過程可以被觀察、驗證與控制?」

這也是企業 Agent 和單純 Demo 最大的差別之一。

實務踩坑|Agent 不是自由行動的 AI

Agent 很容易讓人聯想到一個可以自主完成所有事情的「數位員工」,但真正適合企業環境的 Agent 通常反而有非常清楚的限制。

它擁有的 Tool 是有限的、能讀取的資料有範圍、每一次 Tool Call 都可以留下紀錄,而且執行到一定步數之後必須停止。遇到不確定資訊時,Agent 也應該能選擇承認資料不足或向使用者確認,而不是為了完成任務持續猜測。

因此 Agent 的價值不是「無限制自主」,而是:

在明確的安全邊界內,替原本無法完全預先寫死的決策提供有限自主性。


今天的重點:
Agent 的本質不是「有很多 Tool」,而是能在每一次 Tool 執行之後觀察結果,重新判斷下一步。步驟明確的工作仍然適合 Workflow;只有當下一步真的必須依賴語意或中間結果時,Agent 的自主判斷才有價值。

下一篇,我們會使用 ReAct 的概念,把 Agent 的決策循環拆得更清楚,看看它如何在 Reason、Act 與 Observe 之間持續移動,以及為什麼這個循環同時也需要停止條件。

我們下集見囉!


上一篇
Day 15|實作:讓 AI 同時查數字與文件,完成第一次跨來源回答
下一篇
Day 17|推理與行動(ReAct):代理如何看結果,再決定下一步?
系列文
Data Machi 30 天學習系列:從 Chat 到 Product,打造真正能工作的企業 AI30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言