必须用dify内置标注流导出jsonl格式数据集,禁用“包含原始对话上下文”,清洗后验证格式,再按标签分层采样生成适配目标模型的终版训练集。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

从知识库自动标注生成训练数据集
当你在Dify中已积累大量用户提问与AI优质回复对,需要将这些真实交互沉淀为可复用的微调语料时,必须跳过手动复制粘贴的低效方式,直接利用平台内置标注流导出结构化数据集。这一步漏掉元数据清洗或格式错位,后续训练会直接报JSON解析错误。
进入【标注】→【问答对管理】,点击右上角“筛选”按钮,勾选“已标注为正确答案”+“标签包含:售后/退款/登录”(按实际业务标签筛选)。
确认筛选结果无误后,点击“批量导出”→选择“JSONL格式”,【务必取消勾选“包含原始对话上下文”】——该选项会混入多轮冗余消息,破坏SFT训练所需的单轮prompt-completion对齐结构。
导出文件默认命名为`labeled_qa_20261021.jsonl`,用VS Code打开检查前5行,确认每行严格为单个JSON对象,且含`prompt`与`completion`两个顶层字段,不含`history`或`session_id`等干扰键。
清洗标注数据并转为Dify微调标准格式
Dify 2026微调引擎只接受纯文本prompt-completion对,拒绝任何带HTML标签、Markdown语法或换行符失控的样本。原始标注数据常含客服系统自动插入的【工单号】【时间戳】等噪声,必须清除。
方法一:用Dify内置清洗器(推荐新手)
在【数据集】→【新建数据集】页面,上传刚导出的JSONL文件,勾选“启用智能清洗”→开启“移除非ASCII字符”“折叠连续空白符”“截断超长completion(>2048 token)”三项。
方法二:命令行快速处理(适合批量)
执行以下Python脚本,它会过滤掉prompt为空、completion长度<10字符、或含“正在转接人工”等无效话术的样本:python clean_labeled_data.py --input labeled_qa_20261021.jsonl --output cleaned_for_tune.jsonl
注意:清洗后必须用dify tune validate --file cleaned_for_tune.jsonl校验格式,报错信息会精确到第几行缺失completion字段——别跳过这步,否则训练启动即失败。
输出适配不同微调目标的数据子集
不是所有标注数据都适合扔进同一个微调任务。Qwen2-7B模型做指令对齐时,需强化角色一致性;做SQL生成时,则要突出表结构描述密度。必须按目标分层抽样。
第一步:按标签聚类
用Dify控制台的【标注分析】面板,查看各业务标签下的样本量分布,例如“退款流程”有1273条,“发票查验”仅89条。
第二步:设置采样权重
在数据集配置页点击“高级采样”,输入YAML:
sampler:<br> type: stratified_domain<br> layers:<br> - name: "refund-process"<br> ratio: 0.6<br> - name: "invoice-check"<br> ratio: 1.0<br> - name: "login-fail"<br> ratio: 0.3
这确保小众但高价值的“发票查验”类样本100%入选,而高频的“登录失败”只取三成防过拟合。
第三步:导出终版训练集
点击“生成子集”→等待状态变为“就绪”→下载文件,命名规则为`qwen2-7b-refund-focused-v1.jsonl`,该文件可直接传入CLI微调命令的--dataset-id参数。











