从数据集构建:如何为春节祝福场景"喂"出懂人情的AI
今年1月初,我立了个Flag:春节前,做一个能帮人写祝福语的小工具。
当时想得很简单,现在大模型这么强,写个祝福语还不简单?结果被狠狠打脸。
我用市面上几个主流的大模型试了一圈,输入"写给客户的新年祝福",输出清一色都是:
"尊敬的客户,值此新春佳节之际,谨代表全体员工向您致以最诚挚的问候..."
这话有错吗?没错。但你敢直接转发给合作了三年的老熟人吗?不敢。
问题出在哪儿?不是模型不够强,是我们根本没告诉它,什么叫"合适"。
这就引出了我们今天要聊的核心------垂直场景下的数据集构建。如果你也想让AI帮你处理类似"懂人情、知分寸"的任务,接下来的内容或许能给你一些启发。
第一步:别急着训练,先定义"分寸感"
很多人做AI应用容易犯一个错误:拿到模型就想微调,但连"好"的标准是什么都没定义清楚。
在「码上拜年」项目启动时,我们做了一件很笨的事:坐下来,把人际关系掰开了揉碎了,拆成计算机能理解的维度。
最终,我们定义了一套"关系感知"的数据结构:
| 维度 | 作用 | 举个例子 |
|---|---|---|
| 称呼 | 决定了亲密程度 | "王总" vs "老王" vs "老爸" |
| 关系 | 决定了行为边界 | 客户不能调侃,恋人不能太官方 |
| 交往细节 | 让祝福"专属化"的关键 | "去年合作马术项目" |
| 场合 | 微信 vs 当面说,语感完全不同 | 微信可以带表情包,口头要顺溜 |
| 风格 | 整体情绪基调 | 传统喜庆、轻松自然、LLM科技疯、商务得体 |
| 篇幅 | 控制信息密度 | 50字以内别啰嗦,200字可以讲故事 |
这套维度,后来成了我们整个数据集的基础骨架。
为什么这步很重要? 因为通用模型训练时,从来没学过"给老爸发祝福要用科技梗"这种知识。如果你不把这种"人情潜规则"显式地写进训练数据,它永远只会输出最安全、也是最平庸的话。
第二步:种子数据------最难的部分,往往要亲手写
确定了维度,下一个灵魂拷问是:数据从哪来?
我们翻遍了开源社区,确实有一些节日祝福数据集,但大多是"句子对"或者"关键词-祝福语"的简单映射。没有一个数据集会告诉你:"交往细节"这个字段应该怎么写,"LLM科技风"到底长什么样。
没办法,自己造吧。
我们团队四个人,花了两天时间,每人硬写了100多条高质量的"种子数据"。
写数据时的几条铁律:
- 细节必须真实:比如"一起通宵赶作业"可以,"关系很好"不行------模型学不会抽象形容词,它只能模仿具象表达。
- 风格要有区分度:写"商务得体风"时,想象对方是合作三年的甲方;写"轻松自然风"时,想象是大学睡在上铺的兄弟。
- 分寸感要明确:有些话朋友之间说叫幽默,对客户说叫冒犯。我们会刻意在数据里制造这种对比。
比如这两条数据,是并排喂给模型的:
- 朋友:祝咱们新年继续组队carry,PPT一稿过,外卖天天有折扣!
- 客户:新的一年,祝您财源滚滚来,生活乐呵呵,咱们的合作也马不停蹄向前奔~
看到了吗?同样是"轻松",对朋友可以玩梗,对客户必须用"财源滚滚"这种安全牌。这种微妙差异,必须靠海量对比数据让模型自己领悟。
第三步:数据繁殖------从100到3000的高效路径
只有400条种子数据,够吗?显然不够。
但我们也没打算手写到3000条。这里用到一个非常实用的技巧:用模型扩展模型。
流程是这样的:
- 人工写好100条高质量样本(每条包含:用户需求 + 理想回复)
- 把样本喂给一个较强大的模型(如GPT-4),让它模仿格式,生成新的"需求-回复"对
- 人工筛选、修正,保留合理的数据,剔除跑偏的
我们把这个过程叫**"数据繁殖"。最终,从400条种子数据,繁殖出了近4000条候选数据,经过两轮人工清洗,保留了3107条**用于训练。
这套方法的好处是:数据质量的下限由人工把控,数据规模的上限由算力支撑。
第四步:提示词模板------把"人情味"结构化
数据准备好了,怎么喂给模型?
直接扔一句"帮我写祝福语"肯定不行。我们需要把刚才那六个维度的信息,格式化成模型能看懂的语言。
我们设计的User Prompt模板长这样:
markdown
以下是用户的需求:
###
- 祝福对象的称呼:{称呼}
- 与祝福对象的关系:{关系}
- 交往细节或共同经历:{细节}
- 风格:{风格}
- 字数:{篇幅}
###
请你根据需求,编写一段{微信/口头}祝福语。
填上真实数据后,就是这个效果:
样例1:商务得体风
用户需求 :王总,客户,去年合作马术项目印象深刻... 模型输出:王总好呀~又是一年春来到!想起去年合作时您的专业和远见,真的让我受益匪浅。也还记得您分享的马术心得,佩服您的专注与热爱。在这奔腾向年的马年,祝您和公司事业一马当先、马到成功!
样例2:LLM科技疯
用户需求 :老爸,家人,总用老式打字机敲代码,最近迷大模型... 模型输出:老爸,马年到!愿您像Transformer一样注意力集中,在编码路上精准发力。愿咱们的讨论永远不用fine-tuning就能达成共识。祝您2026年参数调优顺利,算力满格!
看到区别了吗?同一套模板,填入不同的细节和风格,输出完全是两个人写出来的。
这就是结构化数据的威力:不给模型"自由发挥"的空间,而是给它一个清晰的创作框架。框架之内,随便飞;框架之外,不许跑。
到这里,你可能发现了:整个流程中最花时间的,其实是设计这个"输入格式"和整理那3000条数据 。一旦数据准备妥当,实际的微调环节反而很快。我们当时用 LLaMA-Factory Online,2张H800A显卡,跑了6个epoch,只花了30分钟。这个平台最方便的地方在于,它已经把LoRA、全量微调这些技术选项封装成了开关,你不需要懂底层原理,只需要上传数据、选模型、点开始。非常适合想快速验证"我这条路能不能走通"的实践者。
第五步:验收------主观感受才是金标准
模型训练完,怎么评估效果?
像祝福语这种生成类任务,BLEU值、ROUGE分数意义不大。写得再流畅,不得体也是白搭。
我们用的是人工盲测。
把同样的需求,分别发给:
- A. 未经微调的Qwen3-32B
- B. 微调后的Qwen3-32B
- C. 人类写作者(作为上限参考)
让评估者猜:哪条是AI写的?哪条更像是发给自己的?
结果很直观:
- 未微调模型:70%的句子能被一眼认出是AI。特点是"要素齐全、用词华丽、但感觉和谁都能发"。
- 微调模型:识别率降到30%以下。特别是处理"交往细节"时,能把"深夜改方案"对应到"梯度下降优化",能把"一起租房买房"对应到"从北五环到三环"这种具体意象。
用户的一句话反馈让我印象很深:
"这条祝福,像是知道我们过去一年发生了什么的人写的。"
你看,AI技术做到最后,拼的不是参数大小,不是推理速度,而是它有没有理解那些对你重要的人和事。
写在最后:AI不该替你社交,但可以帮你"想起来"
有朋友问我:你们搞这个「码上拜年」,是想让AI替人写祝福吗?
我说不是。
真正走心的祝福,从来不是"写"出来的,是"想起来"的。
当你面对几百个微信好友,手指划过屏幕却不知从何说起时,其实不是不会写,是那些共同经历沉到了记忆底层,需要有人帮你打捞。
AI在这里扮演的角色,不是作家,而是记忆的导盲犬。它提醒你:这个人陪你熬过加班,那个人和你一起吐槽过老板,老爸最近迷上了Transformer。
它替你组织语言,但替你不了真心。
希望在这个马年,你发出的每一句祝福,都不是"复制、粘贴、修改称呼",而是一段让屏幕那头的人觉得------"他还记得哎"------的专属记忆。
技术有温度,落笔需真心。