第 7 章

各種工具的使用方法

第 4 章我們讓 Agent 用工具,第 5、6 章我們造了工作流。這一章把兩個世界打通:工具在 Agent 與 Workflow 中的不同用法、把你自己的工作流變成工具、以及用一份 OpenAPI 文件把任何 API 變成 Dify 工具。

本章目標

要學什麼
了解各種工具的用法並靈活應用
學會的技能
Agent 與 Workflow 中工具使用的差異、工作流工具化、自訂工具(OpenAPI/Swagger)製作基礎
能做出什麼
Web 瀏覽應用、可重複使用的工具庫、串接公司內部 API 的自訂工具

7.1同一個工具,兩種用法

在 Agent 中在 Workflow 中
誰決定何時用模型自己判斷(自主)你在畫布上固定位置(確定)
參數怎麼填模型從對話中推斷你指定變數對應
適合開放式任務、對話式服務定型流程中的固定步驟
風險可能不用、用錯工具無彈性,但 100% 可預期
重點
選擇心法:「流程已知用 Workflow 節點、流程未知交給 Agent」。例如「每天摘要固定格式的報表」用 Workflow 的工具節點;「幫使用者查任何想查的事」交給 Agent 自由發揮。第 4 章的 DuckDuckGo/Wikipedia 就是 Agent 用法;第 6 章天氣速報的 HTTP 節點本質上是 Workflow 的「手動工具」。

7.2Web 瀏覽與 Code Interpreter

7.2.1Web 瀏覽

兩條路線,第 4 章都鋪好了:

7.2.2Code Interpreter

節點面板「工具」分頁內建 Code Interpreter(Dify 官方),可以讓 LLM 生成程式碼並在沙箱中執行——「算出這份資料的標準差」這類問題,模型寫 Python 算出來,比直接心算可靠得多。在 Workflow 中則常用「參數提取器 → 程式碼執行 → 模板轉換」的組合達成一樣的效果(回顧第 6 章伍、柒、捌之型)。

7.3把工作流變成工具:一次打造,處處使用

這是本章最重要的技巧。第 6 章做的「天氣速報」工作流,可以包裝成一個工具,讓所有 Agent 和其他工作流呼叫:

  1. 打開工作流,按「發佈」下拉選單中選「工作流程作為工具」
  2. 填寫工具資訊工具名稱(天氣速報)、機器識別名稱(get_city_weather)、描述(「查詢指定城市的即時天氣」)。描述寫得越清楚,Agent 越知道何時該用它
  3. 設定參數說明工作流的輸入欄位 city 自動成為工具參數,補上說明「城市的英文名稱,例如 Taipei、Tokyo」。
  4. 儲存完成!
工作流程作為工具的設定對話框
圖 7-1工具化設定:上半是工具名稱與描述(給 Agent 看的「使用說明書」),下半是參數表——輸入欄位自動變成工具參數,輸出變數自動成為工具回傳值。
集成頁面的工作流工具列表
圖 7-2「集成 → 工具 → 工作流程作為工具」——天氣速報已經是一個正式工具了。之後在任何 Agent 的工具清單、任何工作流的工具節點裡都找得到它。
小技巧
這個模式的威力在於分層:把常用的複雜流程(查天氣、查庫存、產報價單)做成工具,上層的 Agent 或主工作流只要「呼叫」即可。改版時只改工具內部,所有使用者自動生效——這就是 AI 應用的模組化。

7.4自訂工具:一份 OpenAPI 文件接入任何 API

公司內部系統、第三方服務,只要有 HTTP API,就能包成 Dify 工具。位置在「集成 → 工具 → Swagger API 作為工具」:

Swagger API 作為工具分頁
圖 7-3自訂工具入口。與工作流工具並列,這裡管理所有以 OpenAPI 規格匯入的 API 工具。
建立自訂工具的 Schema 編輯畫面
圖 7-4建立畫面:貼上 OpenAPI/Swagger 規格(JSON 或 YAML),Dify 自動解析出所有端點變成工具動作;下方可設定 API Key 等鑑權方式,並逐一測試。

OpenAPI 規格中最重要的三個部分:

注意
自訂工具等於把 API 的呼叫權交給了模型。務必:金鑰用鑑權欄位保存(不要寫進描述)、正式環境先從唯讀 API 開始、破壞性操作(刪除、付款)不要輕易做成工具。

7.5創造的三大心法

  1. 用「型」打好基礎——第 6 章的十二之型是骨架,先能徒手組流程。
  2. 用工具拓展可能性——內建工具、Marketplace、工作流工具化、OpenAPI 自訂,四個來源由近到遠。
  3. 靈活區分使用手法——同一能力在 Agent(自主)與 Workflow(確定)中的取捨,依業務的容錯度決定。

7.6本章回顧

到此為止,「單次執行」的武器已經齊全。下一章回到對話的世界——把工作流的力量裝進多輪對話裡,這就是聊天流(Chatflow)。