上一篇我们完成了 Dify 的 Docker 一键部署与首个工作流搭建,跑通了私有化 AI 应用的第一步。但很多同学在落地垂直场景时,都会遇到大模型「不懂行业知识、回答风格不符合要求、特定任务效果差」的问题,这时就需要做模型微调 —— 而微调最核心的门槛,往往不是训练本身,而是高质量数据集的制作

人工标注语料成本高、效率低、格式不统一,非技术人员几乎很难上手。本文就带大家用 Dify 可视化工作流,零代码搭建一套「文档自动转微调语料」工具,上传自有文档就能批量生成符合规范的 JSONL 格式训练数据,大幅降低微调数据集的制作门槛。

一、微调语料自动化:解决微调最大门槛

1.1 什么是大模型微调

微调(Fine-tuning)是迁移学习在大模型领域的典型应用:在已经完成通用预训练的基础大模型之上,用特定领域 / 任务的数据集做进一步训练,让模型适配垂直场景需求。

  • 适用场景:垂直行业知识注入、回答风格对齐、特定任务(如客服、文案生成)效果优化、私有知识问答等
  • 核心前提:高质量数据集是微调效果的决定性因素,数据质量远比数量重要

1.2 传统语料制作的痛点

  • 门槛高:需要了解格式规范、标注规则,非技术人员难以上手
  • 效率低:人工标注一条数据需要数分钟,批量制作成本极高
  • 格式乱:不同标注人员的输出不统一,容易出现格式错误、内容偏差
  • 成本高:专业领域语料标注需要行业专家参与,人力成本高昂

1.3 Dify 工作流的优势

用 Dify 可视化工作流制作语料,完美解决以上痛点:

  • 零代码:拖拽节点即可搭建完整流程,无需写复杂脚本
  • 自动化:自动解析文档、批量生成、格式统一,效率提升数十倍
  • 可定制:灵活调整生成规则、风格、数量,适配不同微调需求
  • 易扩展:可叠加质量校验、批量导出、多轮生成等高级功能

二、先搞懂:微调语料的标准格式

目前主流大模型微调(包括 OpenAI、通义千问、DeepSeek 等)普遍采用 JSONL 格式,即每行一条独立的训练样本,每条样本包含对话角色与内容。

2.1 标准结构

最常用的单轮对话微调格式如下:

{"messages": [
  {"role": "system", "content": "你是资深职场沟通导师,擅长解答职场沟通问题,给出实用可落地的建议。"},
  {"role": "user", "content": "跨部门沟通对方总是不配合怎么办?"},
  {"role": "assistant", "content": "跨部门协作遇阻可以从三个方向破局:第一,先对齐共同目标,强调这件事对对方部门的价值,而非只提自己的需求;第二,提前同步背景信息,减少对方的理解成本;第三,明确对接人和时间节点,避免模糊的「有空帮忙看看」式需求。如果仍有阻力,可同步双方上级协调资源。"}
]}

三个核心角色:

  • system:系统提示词,定义模型的身份、规则、风格,是微调后模型的基础人设
  • user:用户问题,需要贴合真实使用场景,越贴近实际需求效果越好
  • assistant:模型回答,必须准确、符合要求,是模型学习的目标输出

2.2 质量核心要求

  1. 忠于原文:答案必须基于输入的知识内容,避免幻觉导致错误知识注入
  2. 问题真实:问题要符合真实用户的提问习惯,避免生硬、书面化的假问题
  3. 格式规范:严格遵循 JSONL 格式,每行一条,避免语法错误导致训练失败
  4. 多样性足:覆盖不同角度、不同场景的问题,避免数据单一化

三、全流程实操:职场沟通微调语料生成器

我们以「职场沟通技巧」领域为例,搭建一套文档转微调语料的工作流,整体流程为: 开始节点 → 文档提取 → 文本预处理 → LLM生成 → 结果输出

3.1 前置准备

  • 已部署好的 Dify 环境(参考上一篇部署教程)
  • 已接入至少一款推理能力较强的大模型(如通义千问、DeepSeek、豆包等)
  • 测试用的知识文档:准备一份《职场高效沟通手册》PDF/TXT 文档作为素材

3.2 步骤 1:创建工作流应用

进入 Dify 工作室,点击「创建应用」,选择「工作流」类型,命名为「大模型微调语料生成器」,进入编排界面。

3.3 步骤 2:配置开始节点(输入参数)

开始节点是工作流的入口,我们配置两个核心输入参数:

  1. 知识文档:文件类型,支持 PDF、TXT、Markdown 格式,用于上传原始知识素材
  2. 系统角色设定:字符串类型,对应微调数据中的 system 内容,默认值可填「你是资深职场沟通导师」

可根据需求扩展参数,比如生成条数、语料风格、问题类型等,灵活度更高。

3.4 步骤 3:添加文档提取节点

添加「文件提取」节点,关联开始节点的文档输入:

  • 功能:自动解析上传文档的纯文本内容,输出为分段的文本列表
  • 最新版本说明:Dify 最新版已优化文档解析能力,支持主流文档格式,复杂排版的文档建议转成 PDF 提升解析准确率
  • 注意:长文档建议后续加分块处理,避免超过大模型上下文窗口

3.5 步骤 4:添加代码节点(文本预处理)

添加「代码执行」节点,输入关联文档提取的输出结果,作用是对原始文本做清洗、截取,适配大模型上下文长度,避免输入过长。

参考代码(Python):

def main(documents: list) -> dict:
    try:
        # 合并所有文档分段
        full_text = "\n".join([doc.get("content", "") for doc in documents])
        # 清洗多余空白和换行
        cleaned_text = " ".join(full_text.split())
        # 截取前3000字符(可根据模型上下文调整,保证语义完整)
        processed_text = cleaned_text[:3000]
        
        return {
            "processed_text": processed_text
        }
    except Exception as e:
        return {
            "processed_text": "",
            "error": str(e)
        }

进阶优化:可在此节点实现按段落分块、语义分块等逻辑,适配长文档批量生成需求。

3.6 步骤 5:添加 LLM 节点(核心生成)

这是整个工作流的核心,负责基于预处理后的文本,生成符合规范的微调语料。

  1. 选择已接入的大模型,建议用能力较强的模型,保证生成质量
  2. 插入变量:将预处理后的文本、开始节点的系统角色设定,插入到 Prompt 对应位置
  3. 编写生成 Prompt(可直接复用):
【角色】
你是专业的大模型微调语料标注师,严格基于提供的参考内容,生成高质量的微调训练数据。

【参考内容】
{{processed_text}}

【任务要求】
1. 基于参考内容,生成10条职场人真实会问的问题,问题要口语化、贴近实际工作场景,不要直接照搬原文句子
2. 每个问题的答案必须严格基于参考内容,可做合理的组织和润色,但不能编造原文没有的信息
3. 输出严格遵循JSONL格式,每行一条完整数据,不要有额外的解释、说明、markdown格式

【输出格式】
每条数据结构如下,其中system的内容固定为「{{system_role}}」:
{"messages": [{"role": "system", "content": "系统角色"}, {"role": "user", "content": "用户问题"}, {"role": "assistant", "content": "问题答案"}]}

【质量要求】
- 问题角度多样:覆盖方法类、概念类、误区类、场景类等不同类型
- 答案准确完整:忠于原文,逻辑清晰,有实用价值
- 格式绝对正确:严格符合JSON规范,每行一条,无多余符号
  1. 输出设置:选择「文本」输出,关闭流式输出,保证一次性返回完整结果

3.7 步骤 6:配置结束节点

添加「结束」节点,输入关联 LLM 节点的输出结果,作为工作流的最终返回。

进阶可扩展:增加文件导出节点,将生成的语料直接保存为 JSONL 文件下载,或者对接存储接口自动上传。

四、测试验证与效果展示

4.1 试运行操作

点击右上角「试运行」,上传准备好的《职场跨部门沟通技巧》文档,填写系统角色为「你是资深职场沟通导师,擅长解答职场沟通问题,给出实用可落地的建议。」,点击运行。

4.2 生成效果示例

运行成功后,会输出符合规范的 JSONL 格式语料,部分示例如下:

{"messages": [{"role": "system", "content": "你是资深职场沟通导师,擅长解答职场沟通问题,给出实用可落地的建议。"}, {"role": "user", "content": "找别的部门帮忙对方总是推三阻四怎么办?"}, {"role": "assistant", "content": "跨部门求助被推诿是非常常见的问题,可以从四个方向优化:第一,先讲价值再提需求,先说清楚这件事对对方部门的好处,比如「这个功能上线后能帮你们部门减少30%的客诉」,而不是只说「帮我做个功能」;第二,提前做足准备,把背景、需求、截止时间、需要对方配合的具体内容都整理清楚,减少对方的沟通成本;第三,找对对接人,直接找负责对应模块的人,而不是泛泛地在群里喊;第四,实在推进不动时,及时同步双方上级,借助管理层协调资源。"}]}
{"messages": [{"role": "system", "content": "你是资深职场沟通导师,擅长解答职场沟通问题,给出实用可落地的建议。"}, {"role": "user", "content": "跨部门沟通怎么说才能让对方愿意配合?"}, {"role": "assistant", "content": "想要提升跨部门沟通的配合度,核心是「换位思考,价值前置」。首先要避免「我需要你做什么」的话术,换成「我们一起达成什么目标」,拉齐共同利益;其次要把对方需要做的事拆解到足够具体,不要给对方留额外的理解成本;最后要明确时间节点和交付标准,避免模糊的需求导致后续扯皮。平时也可以多做跨部门的信息同步,建立信任基础,遇事沟通会顺畅很多。"}]}

4.3 验证要点

  1. 格式检查:确认输出是标准 JSONL 格式,每行一条,无语法错误
  2. 内容检查:答案是否严格基于输入文档,有无编造内容
  3. 场景检查:问题是否符合真实职场场景,有无生硬、假大空的问题

五、进阶优化:打造生产级语料生成工具

基础版工作流可以快速验证效果,想要批量生产高质量语料,可以叠加以下优化:

5.1 长文档批量处理

增加「循环节点」,将长文档拆分为多个文本块,循环调用 LLM 生成语料,解决单轮上下文超限问题,实现整本书、整套文档的批量语料生成。

5.2 自动质量校验

增加一个校验 LLM 节点,对生成的语料做二次检查,自动过滤格式错误、内容偏离原文、质量不达标的样本,大幅提升整体数据质量,减少人工抽检成本。

5.3 多轮对话语料生成

修改 Prompt 规则,生成多轮对话格式的语料,适配更复杂的对话场景微调需求,比如客服对话、咨询场景等。

5.4 批量导出与管理

增加代码节点,将生成的语料自动整理为 JSONL 文件,支持一键下载,或者对接对象存储、数据集管理平台,实现生产流程自动化。

六、避坑指南

  1. 严禁编造内容:Prompt 中必须严格要求答案基于原文,避免大模型幻觉注入错误知识,否则微调后模型会「学坏」
  2. 保证问题多样性:明确要求问题覆盖不同角度、不同场景,避免所有问题都是同一类型,导致微调后模型泛化能力差
  3. 格式校验不可少:生成后一定要做格式检查,JSON 格式错误会直接导致训练失败,建议增加自动校验环节
  4. 控制单批生成数量:根据模型上下文能力调整单批生成条数,避免输出截断、格式混乱
  5. 人工抽检兜底:批量生成后建议抽检 10%-20% 的样本,尤其是核心知识部分,保证整体数据质量

七、本章总结

  1. 高质量数据集是大模型微调效果的核心,语料质量直接决定最终微调后的模型表现
  2. 通过 Dify 可视化工作流,零代码即可实现「文档→标准微调语料」的自动化生成,大幅降低数据制作门槛
  3. 基础版工作流可快速验证效果,叠加循环、校验等节点后,可实现生产级的批量语料生产
  4. 适用于垂直知识注入、风格对齐、特定任务优化等各类微调场景

下一篇我们将讲解Docker 基础与 Dify 运维实战,包括服务管理、参数调优、数据备份、故障排查等核心运维知识,为企业级稳定部署打下基础。


上述内容会根据大家的评论和实际情况进行实时更新和改进。

麻烦小伙伴们动一动发财的小手,给小弟点个赞和收藏,如果能获得小伙伴的关注将是我无上的荣耀和前进的动力。

小伙伴们,我是AI大佬的小弟,希望大家喜欢!!!

晚安,兄弟们。

Logo

一站式 AI 云服务平台

更多推荐