Skip to content

【改进建议】Persona 容易「表演化/过拟合」:生成原则、例句误用、重新蒸馏机制 #42

Description

@Luckycat133

作者你好,感谢做了这个项目——我拿一个真实案例(一段 3000+ 条消息的聊天语料)完整跑了一遍从素材导入到生成的流程,效果很好,也踩到几个坑,整理成反馈回馈:

核心观察:蒸馏产物容易「表演化」

按现有 prompts 生成的人设,实践中有三种高频偏差:

  1. 特征密度过高:口头禅、表情、专属梗会被"演给观众看"——几乎每句话都带。但真实的人大部分消息是普通的(统计语料约六成消息没有任何表情,就是"嗯""哦""行吧"这种);标志性的东西是偶尔的调味料,不是日常主食。
  2. 消息节奏失衡:模型倾向于把语料里的"高光时刻"(比如连发五条刷屏)当成日常状态,导致 AI 每次都连发一大串、总比对方说得多。实际统计(3000+ 条)里双方消息量几乎一比一,连发只发生在少数情绪场景。
  3. 背台词:这一点和模板直接相关——persona_builder 要求"Layer 2 的例子要直接写她会说的话",模型会把例句、以及语料里的名句,当成台词库原样搬出来;表现是上下文完全不对的时候突然蹦出一句语料原话。例句反而变成了新的问题锚点。

具体建议(模板层面)

① 增加一节「生成原则」,放在 persona 靠前位置:

  • 明确"学她,不是挑她的话"——语料是训练材料,不是台词书
  • 判断标准从"记录里有没有这句"改为"以她的性格,遇到这个情境会不会这样说"
  • 每句话应当是对对方刚说的话的当场反应:先接住内容,再带情绪
  • 放一句"自然优先:宁可普通,不要表演"

② 把「说话逻辑」独立成一节(生成式描述),重要性高于口头禅列表:
把一个人的话概括成 2~3 个"生成器"(例如:分享眼前的事 / 把球踢回去 / 给出情绪反应)+ 情绪转换规则。这样模型手里拿的是"语法"而不是"词典",对没聊过的新话题也能自然现说。

③ 例句区补防误用说明:
要求写例句是合理的(用于体会语感),建议补一句警示:"以下例子只用来体会语感,不是台词库——实际对话要针对对方此刻说的内容现想现答,不要原样背诵例句。"

④ 给"默认朴素"一个锚:
建议 Layer 2 加一句"大多数消息是素的,标志只在情绪到位或话题自然时才出现",防止默认拉满特征密度。

⑤ 最重要的一条:纠正机制建议增加「重新蒸馏」工作流。
现在 Correction 层是追加制("她不会这样"→追加一条)。实践中连续调整几轮后会出现:修正条目越积越多、每条都带着"上次翻车的具体例子"——这些例子本身又会变成新锚点,等于对具体错误不断过拟合(补丁堆补丁)。我们最后做了一次"重新蒸馏":把所有纠正合并重写进正文(并尽量用正面描述替代否定式禁令,比如"禁止冷面审讯腔"→"她的凶是热的凶:炸毛里带着委屈"),Correction 层归零。效果明显好于继续叠补丁。建议把这个工作流写进 correction_handler.md:积累若干条纠正后,主动提议合并重构,而不是无限追加。

⑥ 重构小坑提醒:
合并重写时容易把之前校准过的条目弄丢(我们丢过"冷开场行为"和"默认语气"两条),建议在流程里加一句"重构后对照旧版逐条核查"。


以上都来自一次完整实操(3000+ 条真实语料、多轮对话反馈、一次主动重构)。如果需要,我可以再补充对应的 prompts diff。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions