【模型手术室】外传:无中生有 —— 用 Python 自动化构建“行业黑话”数据集
·
专栏进度:02 / 10 (配套工具篇)
在 AI 业界,这种方法被称为 Synthetic Data Generation(合成数据生成)。当原始数据稀缺或涉及隐私无法导出时,我们会先定义“知识元”,再利用更高阶的模型(如 DeepSeek-V3 或 GPT-4o)来批量生产“教案”。
一、 核心逻辑:从“知识点”到“对话对”
我们将数据集构建分为三个维度:
基础定义:解释行业术语。
场景实战:模拟具体故障或需求。
异常处理:当规则冲突时,模型该如何权衡。
二、 Python 实战:自动化生成脚本
这个脚本模拟了从“行业规范”中提取逻辑并转化为微调样本的过程。
Python
import json
- 定义行业“知识种子” (Knowledge Seeds)
假设我们要微调一个“企业内网安全专家”模型
seeds = [
{
"topic": "SSH 登录策略",
"rule": "严禁使用密码登录,必须强制使用 RSA 4096 位密钥,且尝试次数超过 3 次锁定 IP 24 小时。",
"scenarios": ["配置检查", "攻击防范", "合规咨询"]
},
{
"topic": "数据库脱敏",
"rule": "生产环境查询手机号必须展示前3后4,中间4位掩码。严禁导出未脱敏的明文数据。",
"scenarios": ["SQL 审计", "权限申请", "操作指南"]
}
]
- 构造 SFT 数据生成器
def generate_sft_data(seeds):
dataset = []
for seed in seeds:
# 场景 1:基础问答
dataset.append({
"instruction": f"请简述公司关于{seed['topic']}的安全规范。",
"input": "",
"output": f"根据公司安全审计要求,{seed['rule']}"
})
# 场景 2:实战应用 (带 Input)
dataset.append({
"instruction": "请分析以下配置是否符合合规要求。",
"input": f"当前配置:允许密码登录,SSH 尝试锁定时间为 10 分钟。针对主题:{seed['topic']}",
"output": f"不符合合规要求。原因:{seed['rule']}。当前配置过于宽松,存在暴力破解风险。"
})
return dataset
- 保存为微调专用的 JSONL 格式
sft_results = generate_sft_data(seeds)
with open("security_expert_data.jsonl", "w", encoding="utf-8") as f:
for entry in sft_results:
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
print(f"成功生成 {len(sft_results)} 条微调样本!")
三、 如何大规模扩充?(LLM-as-a-Service)
上面的脚本只是骨架。在工业界,我们会编写一个 Prompt 循环,让大模型批量执行以下任务:
给大模型的指令:
“你现在是一名资深网络安全专家。基于‘SSH 强制密钥登录’这一规则,请为我生成 20 组不同的对话。要求:
5 组是正向咨询。
5 组是反向报错拦截。
5 组是针对新员工的科普说明。
5 组是针对资深架构师的底层逻辑探讨。
输出格式必须为标准 JSONL。”
四、 避坑指南:合成数据的“纯度”检查
同质化严重:如果 Prompt 写得不好,模型生成的 100 组数据可能只是在换词。对策:在指令中加入 Temperature=0.9 增加多样性。
逻辑幻觉:合成数据可能包含错误结论。对策:抽样 10% 进行人工校验,或者用另一个模型(如 Claude 3.5)进行交叉审核。
更多推荐

所有评论(0)