Dify Agent 教學:讓 AI 自己決定要用哪個工具
Chatbot 只會查知識庫,Workflow 的順序是你排的。Agent 不一樣——它自己決定要不要查資料、要用哪個工具、要跑幾輪。這篇說明它怎麼設定、什麼時候該用、什麼時候不該用。
🚀 想直接開始?60 秒部署你的 Dify
AI 應用開發平台 — No-Code 建構你的 AI。月付 NT$1,599 起,
Chatbot 只會查知識庫。Workflow 的步驟順序是你排好的。
Agent 是第三種:你給它一組工具,它自己決定要用哪個、用幾次、什麼時候停。
聽起來很強,但也是三種應用型態裡最不可預測的一種。這篇講清楚它適合什麼、不適合什麼。
30 秒總覽
| Chatbot | Workflow | Agent | |
|---|---|---|---|
| 誰決定步驟 | 固定 | 你 | 模型 |
| 可預測性 | 高 | 高 | 低 |
| 處理未知問題 | 弱 | 弱 | 強 |
| 模型費用 | 低 | 中 | 高(會多輪呼叫) |
| 除錯難度 | 低 | 中 | 高 |
| 適合 | 單一主題問答 | 流程明確的任務 | 問題形態難以事先窮舉 |
Agent 實際在做什麼
它跑的是一個迴圈:
- 讀使用者的問題
- 判斷需不需要用工具,用哪一個
- 呼叫工具,拿到結果
- 判斷資訊夠不夠,不夠就回到第二步
- 夠了就整理成回答
關鍵在第二步和第四步——那兩個決定是模型做的,不是你。這是它的價值,也是它的風險來源。
兩種策略怎麼選
Function Calling
靠模型原生的工具呼叫能力。準確度高、速度快,但要模型本身支援。
如果你用的模型支援,就用這個。
ReAct
用 Prompt 引導模型「思考 → 行動 → 觀察」的循環。相容性好,什麼模型都能跑,但推理過程會消耗較多 token,也比較容易繞路。
適合的情境是:你用的模型不支援原生工具呼叫,或你想看到它的推理過程來除錯。
工具從哪裡來
內建工具
搜尋、計算、圖片生成這類。設定簡單,多數需要對應服務的 API Key。
自訂工具
用 OpenAPI 規格描述你自己的 API,Agent 就能呼叫它。這是讓 Agent 真的能做事的關鍵——查訂單、查庫存、建立工單都靠這個。
把工作流當工具
已經做好的 Workflow 可以包成工具給 Agent 用。這是很實用的組合:Agent 負責決定要做什麼,Workflow 負責穩定地把它做完。
工具描述是成敗關鍵
Agent 靠工具的描述決定要不要用它。描述寫不好,它就會挑錯工具或根本不用。
| 寫法 | 結果 |
|---|---|
| 「查詢訂單」 | 太模糊,它不知道什麼情況該用 |
| 「用訂單編號查詢出貨狀態與預計到貨日。需要訂單編號才能使用。」 | 清楚,它知道何時用、需要什麼 |
原則是:寫給一個沒看過你系統的新同事看。它什麼時候該用這個工具、需要準備什麼、會拿到什麼。
迭代次數要設上限
Agent 可能陷入迴圈——工具回傳的結果不符預期,它再試一次,再試一次。
每一輪都是一次模型呼叫,也就是一次費用。務必設迭代上限,通常三到五次足夠。超過還沒結論的情況,多半是工具描述有問題或該用的資料根本不存在。
什麼時候不該用 Agent
誠實講,多數需求不需要 Agent:
- 流程是固定的——用 Workflow。步驟明確卻交給模型決定,只是把可預測的事變不可預測。
- 只是要查文件回答問題——用 Chatbot,便宜又穩。
- 對回答的一致性要求高——Agent 同一個問題問兩次,走的路徑可能不同。
- 成本敏感——多輪呼叫的費用是 Chatbot 的好幾倍。
值得用 Agent 的情境其實很窄:使用者的問題形態你事先窮舉不完,而且需要跨多個資料來源才答得出來。
一個實際的例子:訂單客服 Agent
抽象的說明不好判斷,看一個具體的:
掛上去的工具
- 查訂單——用訂單編號查出貨狀態
- 查運費——依地區與重量算運費
- 搜尋知識庫——退換貨政策與商品說明
它會怎麼跑
使用者問:「我上週買的東西什麼時候到?運費怎麼算的?」
- Agent 判斷這裡有兩個問題,需要兩個工具
- 先呼叫查訂單——但發現沒有訂單編號,於是回頭問使用者
- 拿到編號後查出貨狀態
- 再呼叫查運費工具
- 把兩份結果組成一段回答
第二步是 Agent 跟 Workflow 最大的差別:Workflow 在缺參數時會直接失敗,Agent 會想辦法補。
同樣這個需求,Workflow 會怎麼做
你要自己排:先問訂單編號 → 查訂單 → 判斷有沒有問運費 → 有的話查運費 → 組合回答。步驟固定、費用可預測、出錯知道在哪一格。
兩種都能做,差別在誰承擔「想清楚流程」這件事。需求穩定就自己排,需求變化多就交給 Agent。
常見問題
Q:Agent 一直不使用我設定的工具?
九成是工具描述寫得太模糊。把描述改成「什麼情況該用、需要什麼參數、會回傳什麼」再測一次。
Q:費用比預期高很多?
看迭代次數。Agent 每一輪都是一次完整的模型呼叫,如果經常跑滿上限,實際費用會是 Chatbot 的數倍。先確認是不是工具一直失敗導致它重試。
Q:同一個問題答案不一致?
這是 Agent 的本質,不是 bug——路徑由模型即時決定。需要一致性的場景應該用 Workflow。
Q:可以限制它只能用某幾個工具嗎?
可以,工具是逐個掛上去的。建議從最少的工具開始,確認行為穩定再加。工具越多,它挑錯的機率越高。
費用怎麼估
Agent 的費用不好預估,因為輪數是浮動的。一個粗略的抓法:
單次對話成本 ≈ 平均輪數 × 每輪的模型費用。而每輪都會把先前的對話與工具結果一起送出去,所以越後面的輪數越貴。
實務上建議上線前先跑二十個真實問題,記錄平均輪數,再乘上預估的日對話量。這個數字通常會比直覺高——很多人以為 Agent 只是「多呼叫一兩次」,實際上三到四輪是常態。
資料來源與延伸連結
- Dify 官方文件——Agent 策略與工具設定
- Dify 版本更新紀錄
- OpenAI API 文件——Function Calling 支援的模型