今天,我們將介紹一種革命性的解決方案:利用 Dify 工作流 結合 大語言模型(LLM),以可視化、自動化的方式,智能生成海量、逼真且符合業務規則的測試數據。

一、為什麼選擇 Dify + LLM?
智能化與逼真度:大語言模型(如 GPT-4、ChatGLM、文心一言等)擁有強大的自然語言理解和世界知識,能夠生成高度擬人化的姓名、地址、產品描述、評論等文本數據,遠超傳統隨機字符串生成器。
業務邏輯理解:通過精心設計的提示詞(Prompt),我們可以引導 LLM 理解並遵循複雜的業務規則。例如,“生成一個年齡在18-65歲之間、位於華東地區的用户數據,其購買力與職業相關”。
流程自動化與規模化:Dify 的工作流功能允許我們將數據生成、格式轉換、循環擴增、質量校驗等步驟串聯成一個自動化管道。一個節點的一次調用,可以輕鬆擴展為生成成千上萬條記錄。
可視化編排:無需編寫複雜的腳本,通過拖拽節點和連接線,即可構建完整的數據生成流水線,大大降低了技術門檻。
二、實戰:構建一個“百萬級電商用户數據生成器”
我們將通過一個具體的例子,演示如何在 Dify 中搭建一個工作流,用於生成包含用户基本信息、購買行為和產品偏好的測試數據集。

目標: 生成 1000 條結構化的 JSON 格式用户數據。

最終工作流概覽:開始 -> 循環器(設置循環次數) -> 數據生成節點(LLM) -> 代碼節點(格式處理) -> 答案節點(輸出結果)

步驟 1:在 Dify 中創建新應用和工作流
登錄 Dify,點擊“創建新應用”,選擇“工作流”類型。
給你的應用起一個名字,例如“電商測試數據生成器”。
步驟 2:搭建工作流
我們將從左側的組件庫中拖拽所需的節點到畫布上。

節點 1:開始節點

這是工作流的入口。
節點 2:循環器節點

將其連接到“開始”節點。
這是實現批量生成的關鍵。在節點的配置中,設置循環次數為 1000。
為了在後續節點中知道當前是第幾次循環,我們可以定義一個循環變量,例如 {{index}}。
節點 3:大語言模型節點(核心)

將其連接到“循環器”節點。
選擇模型:根據你的需要和可用性,選擇一個能力強的大模型,如 GPT-4。
編寫提示詞(Prompt):這是引導 LLM 生成正確數據的核心。我們需要一個高度結構化、明確的提示詞。
示例提示詞:

你是一個測試數據生成專家。請生成一條高度逼真、虛構的中國電商用户數據記錄,包含基本信息、行為數據和偏好。

要求:

  1. 數據必須為 JSON 格式。
  2. 所有字段必須使用中文,但字段名使用英文。
  3. 數據必須逼真,符合常理。

請嚴格按照以下 JSON 結構輸出,不要有任何額外的解釋:

{

"user_id": “根據循環索引自動生成,這裏先佔位”,

"name": “一個隨機的中文姓名”,

"age": 一個18至65之間的整數,

"city": “一個隨機的中國城市名”,

"membership_level": “從['普通', '白銀', '黃金', '鉑金', '鑽石']中隨機選擇”,

"last_login_days": 一個1至30之間的整數,

"total_orders": 一個1至200之間的整數,

"average_order_value": 一個50至500之間的浮點數,保留一位小數,

"favorite_category": “從['電子產品', '服裝', '家居', '美食', '圖書']中隨機選擇”,

"recent_search_keyword": “一個與偏好品類相關的搜索關鍵詞”

}

注意:user_id 字段請生成一個以“U”開頭,後接9位數字的字符串,例如“U100000001”。
關鍵點:

我們通過示例 JSON 結構強制 LLM 輸出標準格式。
字段設計涵蓋了多種數據類型(字符串、整數、浮點數、枚舉)。
提示詞中包含了業務規則(如年齡範圍、會員等級等)。
節點 4:代碼節點(用於數據組裝)

將其連接到“LLM 節點”。
這個節點的作用是處理 LLM 返回的文本,並將其解析成真正的 JSON 對象,同時可以整合循環變量。
選擇 Python 作為語言。
輸入代碼示例:

從上游節點獲取輸入

llm_output = ‘’  # 這裏假設 LLM 節點的變量鍵是 ‘llm_output’

loop_index = 0   # 這裏假設循環器的索引變量鍵是 ‘index’try:

# 解析 LLM 返回的 JSON 字符串

user_data = json.loads(llm_output)

# 將循環索引整合到 user_id 中,確保唯一性

user_data[‘user_id’] = f"U{100000000 + loop_index}"

# 將處理好的數據輸出到下一節點

result = user_data

except Exception as e:

# 如果解析失敗,返回錯誤信息

result = {“error”: f"Data parsing failed: {str(e)}"}節點 5:答案節點

將其連接到“代碼節點”。

這是工作流的輸出終端。它會收集並展示最終結果。

在配置中,選擇將“代碼節點”的輸出作為答案。

步驟 3:運行與測試

點擊右上角的“保存”按鈕。

點擊“運行”按鈕,開始測試工作流。你可以在右側的“運行跟蹤”面板中觀察每個節點的執行狀態和輸入輸出。

首次運行可能需要進行調試,檢查 LLM 的輸出格式是否符合預期,代碼節點是否能正確解析等。

步驟 4:批量生成與導出

當單次測試通過後,Dify 工作流會記住你的配置。

三、高級技巧與場景拓展
數據關聯性:要生成有關聯的數據(如訂單和訂單項),可以創建兩個工作流。先運行“用户生成器”,再運行“訂單生成器”,後者在生成訂單時,隨機從已生成的用户列表中選取 user_id。
數據質量校驗:可以在工作流中增加一個“代碼節點”,編寫規則對生成的數據進行校驗(如檢查年齡範圍、金額合理性),將不合格的數據過濾掉。
多樣化數據:通過創建多個不同提示詞的 LLM 節點,並行生成不同類型的數據(如用户數據、商品數據、日誌數據),最後再通過代碼節點合併。
性能優化:對於超大規模數據生成,可以考慮使用 Dify 的異步批處理 API,或者將循環次數設置得非常大,然後利用雲服務的彈性資源來執行。
四、總結
通過將 Dify 工作流的自動化、可視化能力與大語言模型的創造力和認知能力相結合,我們成功地構建了一個強大、靈活且易於使用的測試數據生成工廠。這種方法不僅極大地提升了數據生成的效率和質量,還讓測試數據的創建過程變得前所未有的智能和有趣。

無論是為了單元測試、集成測試,還是為了填充演示系統、訓練 AI 模型,Dify + LLM 的方案都能讓你從“造數據”的苦海中解脱出來,將更多精力投入到核心業務邏輯的開發與創新中。