在過去 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 端點與金鑰授權
步驟二:確認 Chatflow 的 API 互動協定
Chatflow的對話端點為 /chat-messages,支援兩種回應模式:
為了便於自動化腳本處理與終端機驗收,我本次採用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 後依然穩定運作:
結構化內容完整回傳:回傳資料包含了「API 概述」、「功能與目的」、「常見格式與規範(OpenAPI/Swagger/RAML)」、「授權機制」與「結論」等清楚的標題與排版,排版標籤(Markdown)未被破壞
外部聯網檢索機制正常運作:在回答最末端,系統精準附上了參考資料來源連結(包含 HackMD 與 Stripe API 文件),證明外部聯網節點在API模式下依然能如期觸發並攜帶中繼資料回傳
會話維護能力就緒:回傳物件中同步帶回了全新的conversation_id,這意味著後續若要實作多輪上下文對話,只需在下一次的請求Payload中帶入同一個 ID 即可延續記憶
今日成果回顧
今天完成的這一步,象徵著Dev-Advisor正式從「畫布中的原型專案」晉升為「隨時可被外部集成的後端微服務」: