在軟件研發、數據分析和機器學習項目中,構建高質量、高覆蓋度的測試數據是確保產品質量的關鍵環節。然而,手動創建測試數據不僅耗時耗力,還常常面臨數據單調、缺乏真實性、難以模擬複雜業務邏輯等痛點。尤其是在進行壓力測試、性能基準測試或訓練複雜模型時,對百萬級逼真測試數據的需求,往往讓開發者和測試工程師們頭疼不已。 今天,我們將介紹一種革命性的解決方案:利用 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 工作流會記住你的配置。 由於我們設置了循環 1000 次,每次運行這個工作流,它都會自動生成 1000 條不同的用户數據。 你可以在“運行歷史”中找到每次執行的結果。Dify 提供了 API 接口,你可以直接通過調用 API 來觸發數據生成,並將返回的 JSON 數組保存到文件中。 對於百萬級數據,你可以通過腳本循環調用該 API,或者在工作流外部再封裝一個循環邏輯,分批次生成。

三、高級技巧與場景拓展

  • 數據關聯性:要生成有關聯的數據(如訂單和訂單項),可以創建兩個工作流。先運行“用户生成器”,再運行“訂單生成器”,後者在生成訂單時,隨機從已生成的用户列表中選取 user_id。
  • 數據質量校驗:可以在工作流中增加一個“代碼節點”,編寫規則對生成的數據進行校驗(如檢查年齡範圍、金額合理性),將不合格的數據過濾掉。
  • 多樣化數據:通過創建多個不同提示詞的 LLM 節點,並行生成不同類型的數據(如用户數據、商品數據、日誌數據),最後再通過代碼節點合併。
  • 性能優化:對於超大規模數據生成,可以考慮使用 Dify 的異步批處理 API,或者將循環次數設置得非常大,然後利用雲服務的彈性資源來執行。

四、總結

通過將 Dify 工作流的自動化、可視化能力與大語言模型的創造力和認知能力相結合,我們成功地構建了一個強大、靈活且易於使用的測試數據生成工廠。這種方法不僅極大地提升了數據生成的效率和質量,還讓測試數據的創建過程變得前所未有的智能和有趣。 無論是為了單元測試、集成測試,還是為了填充演示系統、訓練 AI 模型,Dify + LLM 的方案都能讓你從“造數據”的苦海中解脱出來,將更多精力投入到核心業務邏輯的開發與創新中。

現在就前往 Dify,開始構建你的專屬測試數據生成器吧!