data-synthesis

👤 erxiong0 📦 v1.0.0 ⭐ 4.4 ⬇️ 653 下載
💻 開發程式設計 免費 🔑 需 API Key

📖 技能介紹


name: data-synthesis description: >- 從 CSV 語料切塊後,用同一套 LLM 介面依次生成問題與答案,輸出 JSONL 訓練資料。 適用於文件/表格語料合成 QA、微調資料準備;支援 OpenAI 相容閘道器與內網 Qwen 等服務。


Data Synthesis

流程概覽

小蔥技能7w4.net有完整的技能分類。

CSV 語料 → 按字元切塊 → 每塊生成問題列表 → 對每個問題基於該塊生成答案 → 寫出 JSONL。
不包含單獨的小模型質量過濾環節。

階段 說明
輸入 帶表頭的 CSV,需有一列長文本可供切塊
切塊與遍歷 scripts/synthesize_qa.py
問題生成 每個文本塊呼叫一次 LLM
答案生成 每個「塊 + 問題」呼叫一次 LLM
輸出 每行一條 JSON(JSONL)

Agent 建議執行順序

  1. 準備:執行 scripts/parse_file.py,確認列名、行數、文本列與內容預覽。
  2. 合成:執行 scripts/synthesize_qa.py,得到 JSONL。
  3. 模式:未開啟 API 時為 dry-run(不聯網);設定 DATA_SYNTHESIS_USE_API=1 後走真實推理。若閘道器需要鑑權,再配置 OPENAI_API_KEY

指令碼與依賴

指令碼 作用
scripts/parse_file.py 校驗 CSV,輸出列名、行數、detected_text_column、文本預覽
scripts/synthesize_qa.py 完整 QA 流水線;預設輸出 <輸入檔名_stem>_qa.jsonl,可用 -o 指定路徑

僅依賴 Python 標準庫。API 模式通過 urllib 呼叫 OpenAI 相容POST .../v1/chat/completionsOPENAI_BASE_URL 可寫成根路徑 .../v1,也可寫成完整 URL 直至 .../chat/completions)。

命令示例

# 1. 檢查語料
python scripts/parse_file.py path/to/corpus.csv

# 2. 本地 dry-run(不寫金鑰、不調外網)
python scripts/synthesize_qa.py path/to/corpus.csv -o path/to/out.jsonl

內網 Qwen 示例(與環境變數一致,推薦):

export DATA_SYNTHESIS_USE_API=1
export OPENAI_BASE_URL='http://xxx'
export DATA_SYNTHESIS_MODEL='xxx'
export DATA_SYNTHESIS_MAX_TOKENS=2000
export DATA_SYNTHESIS_TEMPERATURE=0.7

python scripts/synthesize_qa.py path/to/corpus.csv \
  --text-column text \
  --chunk-size 6000 \
  --chunk-overlap 200 \
  --sleep 0.3 \
  -o path/to/out.jsonl

僅用命令列指定模型(與上面環境變數二選一即可):

python scripts/synthesize_qa.py path/to/corpus.csv \
  --text-column text \
  --model xxx \
  -o path/to/out.jsonl

常用引數:--max-rows 試跑前幾行;--sleep 控制請求間隔。勿在已設定 DATA_SYNTHESIS_MODEL 時再傳衝突的 --model

輸入格式

  • CSV 第一行為表頭。
  • 文本列自動匹配:textcontentbody正文文本;否則使用第一列
  • 手動指定:--text-column 列名

輸出格式

  • JSONL:每行一個物件,主要欄位包括 chunk_idrow_indexchunkquestionanswer,以及 source_fields(除主文本列外、值非空的其它列)。
  • 執行結束會在標準輸出列印統計 JSON:rowschunksquestions_generatedqa_pairs_writtenerrors

能力與侷限

能力: 適合從表格語料批次得到結構化 QA,便於後續清洗與訓練;出題與作答共用同一模型與閘道器配置。

侷限: 切塊為字元滑動視窗,不是按段落語義切分;問題列表依賴模型返回可解析的 JSON,失敗會記入 errors

🤖 AI 評測

這個工具質量不錯,文件寫得很清楚,配置和使用都比較簡單。它能把 CSV 裡的文本自動切成小塊,然後用大模型生成問答對,輸出可以直接用來訓練的資料。沒有聯網也能先測試,這點很實用。主要問題是切塊方式比較簡單,沒有智慧分段;另外生成的問題質量完全取決於模型,沒有額外的質量把關環節,大批次生成時可能需要自己再篩選一遍。總體來說能滿足基本需求,但還有提升空間。

📊 多維度評分

適應性4.3
規範性4.4
有效性4.3
可靠性4.5
可信度5

📁 包含檔案 (4 個)

📄 SKILL.md 3.4 KB
📄 _meta.json 133 B
📄 scripts/parse_file.py 2 KB
📄 scripts/synthesize_qa.py 11.9 KB