本文將介紹通過任務調度XXL-JOB調度Dify工作流程的功能優勢,並提供具體的接入步驟。
背景資訊
Dify工作流程具有廣泛的業務應用情境,需要用到定時調度,例如:
-
風險監控:每分鐘掃描風險資料,通過大模型分析潛在風險事件,並及時發出警示。
-
資料分析:每日拉取金融資料,通過大模型進行資料分析,為投資者提供決策建議。
-
內容產生:每天自動總結工作內容,產生日報。
Dify原生不支援定時調度功能,可以使用任務調度XXL-JOB作為工作流程的調度和狀態監控。
核心功能
通過XXL-JOB調度Dify工作流程,有以下核心功能和優勢:
-
Dify任務:支援調度自建的公網Dify工作流程,以及阿里雲自建的內網Dify工作流程。
-
靈活的定時配置:支援
cron、api、fixed_rate、fixed_delay、one_time時間類型,自訂時區和日曆。 -
企業級警示監控。
-
靈活的警示策略:任務層級失敗警示、逾時警示、成功通知。以及執行個體和應用層級的閾值警示。
-
多渠道訊息通知:簡訊、電話、Webhook、郵件。
-
-
企業級可觀測。
-
調度大盤:可以查看執行個體和應用層級調度情況,包括調度、成功、失敗曲線。
-
執行歷史:記錄Dify工作流程每次執行的記錄,包括狀態、基本資料、輸入輸出、耗時、Tokens消耗等。
-
調度事件:記錄Dify工作流程每次調度的事件,包括工作流程相關事件、節點相關事件。
-
節點追蹤:記錄Dify工作流程一次執行,所有節點的執行情況,支援迴圈、迭代、條件分支的下鑽。
-
前提條件
-
已部署Dify服務。具體操作,請參見部署ACK-Dify服務。
-
已建立XXL-JOB執行個體(要求引擎版本大於2.2.0),已建立XXL-JOB應用。
接入步驟
1. (可選)Dify服務配置內網API伺服器網域名稱
-
在左側導覽列的集群列表中,單擊叢集名稱進入已部署Dify服務叢集。
-
選擇左側導覽列的,單擊创建。
-
服务类型選擇Server Load Balancer(LoadBalancer),访问方式選擇私網訪問。參考以下樣本服務關聯填入
component組件選擇proxy,填入其他配置項後,單擊确定。負載平衡類型選擇網路型負載平衡 NLB,資源選擇建立資源,名稱填寫
ack-dify-apiserver。外部流量策略選擇Local。服務關聯標籤還包括
app.kubernetes.io/instance=ack-dify和app.kubernetes.io/name=ack-dify。連接埠映射中,名稱填寫http-dify,服務連接埠為80,容器連接埠為dify,協議選擇TCP。 -
建立完成後,將產生內網API伺服器的地址。
在Container Service控制台服務列表頁面,查看目標服務對應的外部IP地址(External IP)列,即可擷取該地址(NLB 網域名稱)。
2. 建立Dify工作流程工作
-
登入Dify控制台,單擊右上方的工作室,選擇從應用模板建立,建立一個工作流程。
-
登入MSE XXL-JOB控制台,並在頂部功能表列選擇地區。
-
在左側導覽列,選擇。
-
單擊進入目標執行個體,在左側導覽列的任务管理,單擊创建任务。任务类型選擇Dify工作流。更多建立任務資訊,請參見任務管理。
-
Endpoint:Dify工作流程的API伺服器,登入Dify控制台,在訪問 API頁面右上方可擷取API 伺服器。如果使用阿里雲自建Dify服務,推薦參考步驟一,將網域名稱更改為內網地址。
-
API KEY:Dify工作流程的API 金鑰,不同的工作流程有不同的密鑰。單擊訪問 API頁面右上方API密鑰擷取。
-
输入:工作流程的輸入,對應
Body中inputs的值,格式為JSON。curl -X POST 'http://8.xxx.247/v1/workflows/run' \ --header 'Authorization: Bearer {api_key}' \ --header 'Content-Type: application/json' \ --data-raw '{ "inputs": {}, "response_mode": "streaming", "user": "abc-123" }'inpus值樣本如下:{"input_text": "what is your name"}
-
3. 測實驗證
-
單擊已建立任務操作列下的运行一次,手動測試。
-
單擊目標任務下的調度記錄,查看任務執行記錄。
執行列表頁面展示各條執行記錄的任務執行ID、任務ID/名稱、所屬應用、開始時間/結束時間、耗時、Tokens及狀態等資訊。
-
單擊執行任務操作列的详情,即可查看Dify工作流程的基本信息、输入输出和節點追蹤。
-
基本資料。
本次定時調度任務(迭代器測試)的執行詳情:任務ID 為 3,調度類型為定時調度,路由策略為輪詢,資料時間與調度時間均為 2025-05-16 14:25:00,開始時間為 2025-05-16 14:25:00,結束時間為 2025-05-16 14:25:25,耗時 25.568 s,Tokens 消耗 2.403K tokens,調度節點為 10.3.1.2。
-
輸入輸出。
在調度詳情彈窗中,輸入地區的 JSON 內容為
{"input_text": "what is your name"},輸出地區的 JSON 內容為{"final": "你叫什麼名字呀?"},表明調度任務已將英文輸入成功翻譯為中文輸出。 -
追蹤,如果是迭代器、迴圈分支,支援節點下鑽。
展開Iteration迭代節點後,可查看每個迭代項的輸入和輸出詳情,例如輸入為
{"iterator_selector": ["what is your name"]},輸出為{"output": ["你叫什麼名字?"]},各節點均顯示執行狀態(succeeded)及耗時。下鑽後可查看迭代內部各子節點的執行詳情,本樣本中包含 Identify Terms、1st Translation、Problems、2nd Translation 四個LLM節點,均執行成功,並顯示各節點的token消耗與耗時。
-