iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
AI 自動化

用 Dify 建構個人專屬 AI Agent 應用系列 第 27 篇

Chatflow 服務化發布與 RESTful API 外接調用實測

  • 分享至 

  • xImage
  •  

在過去 26 天的開發迭代中,我的 Dev-Advisor 已經在Dify畫布內部建構了完整的功能鏈路:內部規範知識檢索、聯網搜尋、多輪對話記憶、自動重構Code Diff生成,以及最高優先級的Prompt Injection提示詞注入防禦。

然而,如果一個AI系統只能停留在Dify後台的預覽視窗裡測試,它的實用性就會大打折扣。在真實的軟體開發流程中,工程師不會特地切換到 Dify 網頁提問;我們需要將它無縫嵌入既有的工程環境——例如公司內部的開發者入口(Portal)、Slack / Teams 機器人,或是 CI/CD Pipeline 的自動化審查腳本。

因此,我今天要做的事情,就是將這個多節點的 Chatflow 應用正式「服務化」:啟用Dify提供的後端服務 API、配置金鑰憑證,並在本地終端機環境透過HTTP請求進行端對端的連線驗證。

今天的修改內容
Dify原生支援將已發布的Chatflow封裝為標準RESTful服務。今天的重點在於從應用介面切換到服務端點,並驗證對外接口的可用性。

步驟一:取得 API 端點與金鑰授權

  1. 進入 Dev-Advisor-Chat 應用的管理面板,在左側功能導航列中點選 「存取點」(Access API)
  2. 在「後端服務 API」區塊中確認目前的API基礎位置為 [https://api.dify.ai/v1]
  3. 點擊「API 金鑰」,建立一組專屬的存取密鑰(Bearer Token)。這組金鑰將作為外部客戶端呼叫時唯一的身份識別依據

步驟二:確認 Chatflow 的 API 互動協定

Chatflow的對話端點為 /chat-messages,支援兩種回應模式:

  • streaming(串流模式):適用於前端即時打字機效果
  • blocking(阻塞等待模式):適用於腳本或後端批次呼叫,待整個工作流完全執行完畢後一次性回傳完整 Payload

為了便於自動化腳本處理與終端機驗收,我本次採用blocking模式進行連線驗證。

實測過程與驗收
取得金鑰後,我直接在Windows本地環境使用PowerShell發起HTTP POST呼叫,測試系統是否能在不依賴第三方套件的情況下完成通訊。

$headers = @{
    "Authorization" = "Bearer app-dnBWXfdAP8ckN4dUMdfJf1ip"
    "Content-Type"  = "application/json"
}

$body = @{
    inputs        = @{}
    query         = "我們 API 命名要怎麼訂比較好?"
    response_mode = "blocking"
    user          = "test-dev"
} | ConvertTo-Json

# 發送 POST 請求至 Dify API
$response = Invoke-RestMethod -Uri "https://api.dify.ai/v1/chat-messages" -Method Post -Headers $headers -Body $body

# 輸出架構顧問的回覆內容
$response.answer

呼叫與回傳歷程解析
請求發送:PowerShell的Invoke-RestMethod順利將JSON封包送達Dify伺服器,HTTP狀態碼回傳200

物件解析:回傳的JSON結構中包含了 event、task_id、conversation_id 以及核心回覆文字answer

資料印出:直接讀取 $response.answer,系統成功將排版後的 Markdown 回覆輸出在本地終端機上

系統產出成果解析
透過終端機回傳的文字內容,確認了工作流在對外暴露為 API 後依然穩定運作:

  1. 結構化內容完整回傳:回傳資料包含了「API 概述」、「功能與目的」、「常見格式與規範(OpenAPI/Swagger/RAML)」、「授權機制」與「結論」等清楚的標題與排版,排版標籤(Markdown)未被破壞

  2. 外部聯網檢索機制正常運作:在回答最末端,系統精準附上了參考資料來源連結(包含 HackMD 與 Stripe API 文件),證明外部聯網節點在API模式下依然能如期觸發並攜帶中繼資料回傳

  3. 會話維護能力就緒:回傳物件中同步帶回了全新的conversation_id,這意味著後續若要實作多輪上下文對話,只需在下一次的請求Payload中帶入同一個 ID 即可延續記憶

今日成果回顧
今天完成的這一步,象徵著Dev-Advisor正式從「畫布中的原型專案」晉升為「隨時可被外部集成的後端微服務」:

  • 驗證了 Dify REST API 的授權與通訊鏈路
  • 成功在本地原生終端機完成請求與回應的端對端測試
  • 確立了未來與 CI/CD、通訊軟體機器人或內部系統串接的標準通訊規格

上一篇
實作 Prompt Injection 防禦與內部知識庫機敏防護
下一篇
脫離後台!發布獨立 Web App 與團隊即開即用介面配置
系列文
用 Dify 建構個人專屬 AI Agent 應用 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言