论文解读:When "A Helpful Assistant" Is Not Really Helpful

5 阅读8分钟

论文解读:When "A Helpful Assistant" Is Not Really Helpful

论文全称When "A Helpful Assistant" Is Not Really Helpful: Personas in System Prompts Do Not Improve Performances of Large Language Models

发表于:EMNLP 2024 Findings(2024年11月)

研究机构:Carnegie Mellon University、Stanford University、LG AI Research、University of Illinois Chicago、University of Michigan


一、研究背景与动机

商业 AI 系统(如 ChatGPT)通常在 系统 提示词 (System Prompt 中为 LLM 定义角色,例如默认的 "You are a helpful assistant"。在实践中,很多 Prompt 工程指南也建议给模型分配一个特定角色(persona),如"你是一个律师"、"你是一个医生",以期提升模型在特定任务上的表现。

然而,这种做法的有效性此前缺乏系统性验证。本研究的核心问题是:

在系统 提示词 中添加角色(persona),到底能不能提升 LLM 在客观事实类任务上的表现?


二、实验设计

本研究的实验规模相当庞大,涉及以下几个维度:

维度具体内容
角色数量162 个角色,覆盖 6 类社会关系(家庭、朋友、恋人、工作、学校、社交)和 8 个专业领域
角色类型112 个职业角色 + 50 个人际关系角色
模型4 大模型家族共 9 个模型:FLAN-T5-XXL (11B)、Llama-3-Instruct (8B & 70B)、Mistral-7B-Instruct、Qwen2.5-Instruct (3B~72B)
测试数据2,410 道来自 MMLU 数据集的事实性多选题,覆盖 26 个学科、8 大领域
提示模板4 种:无角色(对照组)、"You are a {role}"、"You are talking to a {role}"、以及两者各自的 "Imagine" 变体

三、核心发现

发现 1:添加角色总体上不提升性能,甚至可能降低性能

通过混合效应回归模型分析,与不添加任何角色的对照组相比:

  • 没有任何一个角色能够带来统计显著的性能提升
  • 大部分角色对模型准确率没有显著影响
  • 部分角色实际上会降低性能(如 ecologist 对 Mistral 的负面影响)
  • 这一规律在所有 6 个模型上一致成立
发现 2:提示框架方式有微小影响
  • 听众导向提示("You are talking to a {role}")略优于说话者导向提示("You are a {role}"),差异在统计上显著
  • 但效应量很小,实际影响有限
发现 3:角色的社会属性有一定影响,但效应量小
属性发现
性别性别中立角色 > 男性角色 > 女性角色(效应量小)
角色类别工作和学校相关角色 > 其他类型角色(如 AI、职业角色)
领域对齐领域匹配的角色(如律师回答法律问题)略优于不匹配的角色,但效应量仍然很小
发现 4:难以找到解释性能差异的根本机制

研究者检验了三个可能的机制,均未能有效解释角色对性能的影响:

潜在机制结论
角色 词频(Google Ngram)与准确率仅有弱相关
提示-问题 语义相似度相关性弱且不一致,最高仅 0.39(Qwen2.5-7B)
提示困惑度( Perplexity 相关方向因模型而异,无法统一解释
发现 5:自动搜索最佳角色极其困难

研究者设计了多种自动角色选择策略:

策略效果
随机选择基线
训练集 最佳角色仅略优于随机
相似度匹配仅略优于随机
RoBERTa 分类器预测仅略优于随机
每题最佳角色(理论上限)显著提升性能

关键结论:虽然理论上每个问题都存在某个最优角色,但实践中无法可靠地预测哪个角色最优,各种自动策略的表现与随机选择几乎无异。

发现 6:模型规模不影响角色敏感度

在 Qwen2.5 系列(3B → 72B)上的实验表明,角色对模型性能的影响不随模型规模增大而变化,这说明角色效应并非一个可以通过 scaling 解决的问题。


四、核心结论

在系统 提示词 中为 LLM 分配角色(persona),不仅不能可靠地提升模型在客观任务上的性能,反而可能造成轻微的性能损害。角色对性能的影响本质上是不可预测的。


五、实践启示

场景建议
追求客观任务准确率不建议在系统提示词中添加角色,直接提问即可
必须指定角色(如安全、风格需求)优先使用性别中立、工作相关的角色描述
领域对齐如果一定要加角色,选择与问题领域匹配的角色有微弱优势
提示框架"You are talking to a {role}" 略优于 "You are a {role}"

六、研究局限

  1. 模型覆盖:仅测试了开源模型,未涵盖 GPT-3.5/GPT-4 等闭源模型
  2. 任务类型:仅使用 MMLU 事实性问题,未涉及开放式问答或主观任务
  3. 角色范围:尽管 162 个角色已相当丰富,但无法穷尽所有可能的角色描述
  4. 计算成本:实验涉及 162 角色 × 4 模板 × 9 模型 × 2410 题,计算开销巨大,碳排放可观

七、总结

这篇论文用严谨的大规模实验挑战了一个广泛流传的 Prompt 工程"最佳实践"——即给 LLM 指定角色能提升性能。结果表明,这种做法在客观事实任务上不仅无效,还可能适得其反。对于从事 LLM 应用开发的工程师来说,这是一个值得重视的发现:与其花心思调整角色设定,不如把精力放在更有效的 Prompt 策略上(如 Chain-of-Thought、Few-shot 示例等)。

扩展

但是在工程实践中包括claude,chatgpt依旧会这么做,那么在实际工程落地中,到底应该怎么做呢?

为什么大厂"明知没用"还在用?

论文的结论有一个关键限定:在客观事实类问答任务( MMLU )上,persona 不提升准确率。但商业产品使用 System Prompt 中的角色设定,目的远不止于提升事实准确率

商业目的是否被论文否定说明
安全合规(拒绝有害请求)论文未涉及安全场景
输出风格控制(语气、格式、长度)论文只测量了多选题准确率
品牌一致性(产品人设)属于用户体验层面
行为边界约束(不做什么)属于 alignment 范畴
提升事实问答准确率论文核心结论

换句话说,ChatGPT 的 "You are a helpful assistant" 从来不是为了让它答题更准,而是为了定义产品行为边界和交互风格


工程落地的实操建议

1. System Prompt 中角色设定的正确用法

应该用 persona 做的事:

  • 约束行为边界:如 "你是一个客服助手,只回答与产品相关的问题,拒绝回答政治敏感话题"
  • 控制输出风格:如 "用简洁专业的语气回答,避免使用 emoji"
  • 定义能力范围:如 "你是一个 SQL 专家,用户给你自然语言,你输出 SQL"
  • 注入领域上下文:如 "你服务于电商平台,以下是我们的退货政策:……"

不应该指望 persona 做的事:

  • ❌ 期望 "你是一个数学教授" 就能让模型数学题做得更好
  • ❌ 期望 "你是一个资深律师" 就能提升法律问题的准确率
  • ❌ 用各种花哨角色做 prompt engineering 来提分

2. 想真正提升准确率,应该用什么?

论文揭示了 persona 在准确率上的无效性,但工程上有很多真正有效的手段:

策略有效性适用场景
Few-shot 示例★★★★★有标注样本时,直接在 prompt 中给出几个示例
Chain-of-Thought★★★★★推理类任务,加 "Let's think step by step"
RAG 检索增强生成 ★★★★★需要准确事实的场景,注入外部知识
结构化输出约束★★★★☆要求输出 JSON/表格等结构化格式
Tool Use / Function Calling★★★★☆需要精确计算、查询等操作
System Prompt 中写角色★★☆☆☆仅对风格/安全有效,对准确率几乎无效

3. 推荐的 System Prompt 结构

# 角色定义(控制风格和边界,不要期望提升准确率)
你是 XX 产品的智能助手,服务于 XX 场景。

# 行为约束(真正有价值的部分)
- 遵循以下规则:……
- 不得回答以下类型的问题:……

# 领域知识注入(比角色设定有效得多)
以下是你需要掌握的业务规则:
1. ……
2. ……

# 输出格式要求
请以 JSON 格式返回结果,包含以下字段:……

# Few-shot 示例(真正提升准确率的手段)
示例 1:用户输入 → 期望输出
示例 2:用户输入 → 期望输出

4. 一句话总结

Persona 是"化妆品",不是"药"。 用它来定义产品的"脸面"(风格、边界、安全),但不要指望它治病(提升准确率)。真正想提升性能,靠的是 Few-shot、CoT、RAG 和 Tool Use。


论文对你日常工作的启示

作为服务架构方向的工程师,如果你在做 LLM 应用落地,关键 takeaway 是:

  1. 不要在 prompt 调优上过度纠结角色描述的措辞——把时间花在构建更好的 RAG pipeline、设计更精准的 few-shot 示例上,性价比远高于反复调角色
  2. System Prompt 的核心价值是行为约束和安全护栏,而非性能提升
  3. 如果有人说"换个角色 prompt 准确率就上去了",大概率是随机波动——论文证明了这种效果在统计上不可靠且不可预测