Back to blog
    從應用程式使用者互動建構訓練資料集
    training datadatasetfine-tuningdata collectionmobile AIsegment:mobile-builder

    從應用程式使用者互動建構訓練資料集

    您的應用程式已經在生成微調所需的訓練資料。如何收集、清理和格式化使用者互動,轉換為能產出高品質裝置端模型的資料集。

    EErtas Team·

    AI 模型最好的訓練資料來自您自己的應用程式。使用者的真實互動、真實問題和真實內容,完全代表了模型需要學習的領域。沒有任何合成資料或公開資料集能比得上來自實際使用場景的資料品質。

    本指南涵蓋如何收集、清理和格式化這些資料以用於微調。

    什麼算是訓練資料

    應用程式中的每個使用者互動都是潛在的訓練範例:

    應用程式類型原始資料訓練範例
    客戶支援使用者問題 + 客服回覆問答對
    筆記應用使用者筆記 + 自動生成摘要摘要對
    金融交易描述 + 指定分類分類對
    電子郵件收到的郵件 + 使用者回覆回覆生成對
    電商產品 + 使用者評論情感對
    健康症狀描述 + 分診結果分類對

    模式是:任何輸入-輸出對,其中「正確」輸出是已知的(無論是來自明確的使用者行為還是專家判斷),就是一個訓練範例。

    資料收集策略

    被動收集(建議的起步方式)

    記錄自然產生輸入-輸出對的使用者互動:

    • **搜尋查詢 + 點擊結果:**點擊的結果就是「正確」答案
    • **分類動作:**當使用者為內容指定分類時,就是一個標記範例
    • **修正:**當使用者編輯 AI 生成的回應時,編輯後的版本就是「正確」輸出
    • **接受:**當使用者接受建議時,就是一個正面範例
    // 記錄使用者修正作為訓練資料
    function onAiResponseEdited(original: string, edited: string, context: string) {
      logTrainingExample({
        input: context,
        output: edited,  // 使用者的修正就是訓練目標
        source: "user_correction",
        timestamp: Date.now(),
      });
    }

    主動收集

    提示使用者提供直接產生訓練資料的回饋:

    • **對 AI 回應按讚/倒讚:**篩選按讚的回應作為正面範例
    • **修正介面:**讓使用者修改 AI 回應;記錄修正
    • **範本使用:**當使用者選擇並使用範本時,填寫好的範本就是一個訓練範例

    合成增強

    用合成範例補充真實資料:

    1. 取用您最好的真實範例
    2. 使用更大的模型(GPT-4o、Claude Sonnet)生成變體
    3. 將合成範例與真實範例進行驗證
    4. 混合合成和真實資料(目標至少 30% 真實資料)

    隱私與同意

    法律要求

    在收集任何使用者資料進行訓練之前:

    1. 更新隱私政策以揭示匿名化的互動資料可能用於改善 AI 功能
    2. 取得同意(GDPR 要求處理個人資料需取得明確同意)
    3. 提供退出選項給不希望其互動用於訓練的使用者
    4. 匿名化資料後再用於訓練。移除姓名、電子郵件、電話號碼和其他個人識別資訊。

    技術匿名化

    import re
    
    def anonymize(text: str) -> str:
        # 移除電子郵件地址
        text = re.sub(r'\b[\w.-]+@[\w.-]+\.\w+\b', '[EMAIL]', text)
        # 移除電話號碼
        text = re.sub(r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b', '[PHONE]', text)
        # 移除姓名(需要 NER 或姓名清單)
        text = replace_names(text, '[NAME]')
        return text

    裝置端收集

    最安全的方式:在裝置上收集訓練資料,僅傳輸匿名化、匯總的資料。原始互動留在使用者手機上。只有匿名化的訓練範例離開裝置。

    資料清理

    原始互動資料是有雜訊的。清理是管線中最重要的步驟。

    品質篩選

    1. **移除過短的範例:**輸入少於 10 個字元或輸出少於 20 個字元的範例很少包含有用資訊
    2. **移除重複:**完全重複和近似重複的範例會增加雜訊
    3. **移除錯誤:**應用程式當機或使用者中途放棄的互動
    4. **移除離題:**與目標任務不符的互動
    5. **移除漏過匿名化的個資:**使用更嚴格的模式進行二次檢查

    品質評分

    並非所有範例都同樣有用。為每個範例評分:

    訊號權重理由
    使用者接受了 AI 回應直接的正面訊號
    使用者編輯後接受最高編輯結果就是理想輸出
    使用者拒絕了 AI 回應低(謹慎使用)負面訊號,作為對比有用
    長而詳細的互動為模型提供更多上下文
    常見的查詢模式高頻模式最為重要

    目標分佈

    您的訓練集應大致匹配正式環境的查詢分佈。如果 40% 的使用者查詢是關於主題 A,10% 關於主題 B,您的訓練集應反映該比例。過度代表稀有主題可能使模型產生偏差。

    格式化以進行微調

    聊天格式(標準)

    大多數微調框架期望聊天格式:

    {"messages": [
      {"role": "system", "content": "You are an assistant for FitTracker app."},
      {"role": "user", "content": "How many calories in a banana?"},
      {"role": "assistant", "content": "A medium banana has about 105 calories, 27g carbs, 1.3g protein, and 0.4g fat."}
    ]}

    多輪對話

    對於聊天功能,包含完整的對話:

    {"messages": [
      {"role": "system", "content": "You are an assistant for FitTracker app."},
      {"role": "user", "content": "What should I eat before a workout?"},
      {"role": "assistant", "content": "A light meal 1-2 hours before works best. Good options: banana with peanut butter, oatmeal, or a small smoothie. Focus on easily digestible carbs."},
      {"role": "user", "content": "What about protein?"},
      {"role": "assistant", "content": "Add a small amount of protein: a scoop of whey in your smoothie, Greek yogurt with your oatmeal, or a handful of almonds. Keep it under 20g to avoid feeling heavy during the workout."}
    ]}

    分類格式

    對於分類任務,格式更簡單:

    {"messages": [
      {"role": "user", "content": "Classify: Morning run in the park"},
      {"role": "assistant", "content": "Cardio"}
    ]}

    資料集大小指南

    任務最低良好優秀
    分類(5-10 個類別)200500-1,0002,000+
    問答(有界領域)3001,000-2,0003,000+
    聊天(多輪)5002,000-3,0005,000+
    摘要3001,000-2,0003,000+
    內容生成5001,500-3,0005,000+

    品質比數量更重要。500 個精心策劃的範例勝過 5,000 個有雜訊的範例。

    流程

    1. 在應用程式中埋入追蹤以記錄互動(需使用者同意)
    2. 累積資料 2-4 週的正常使用
    3. 匯出和匿名化記錄的互動
    4. 使用上述品質標準清理和篩選
    5. 格式化為聊天 JSON 結構
    6. 分割為訓練集(90%)和評估集(10%)
    7. 微調使用像 Ertas 這樣的平台:上傳格式化的資料集,選擇基礎模型,使用 LoRA 訓練,匯出 GGUF
    8. 在保留的測試集上評估
    9. 部署 GGUF 模型到裝置端
    10. 迭代通過定期收集更多資料並重新訓練

    您的應用程式現在就在生成訓練資料。問題是您是否正在捕獲它。

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    Keep reading