Personality-Guided Code Generation Using Large Language Models¶
会议: ACL 2025
arXiv: 2411.00006
代码: GitHub
领域: nlp_generation
关键词: code generation, personality, MBTI, prompt engineering, role-playing
一句话总结¶
让 GPT-4o 为每个编程任务生成适配的 MBTI 人格类型和描述,再让 LLM 以该人格角色扮演程序员生成代码,在 28 个 LLM-数据集组合中 23 个取得 pass rate 提升,最高达 12.9%,且可与 CoT 等策略叠加使用。
研究背景与动机¶
- 领域现状:LLM 驱动的代码生成是活跃研究方向,常用 prompt 让 LLM 扮演"程序员"角色来生成代码。
- 现有痛点:现有角色扮演只是泛泛地让 LLM 当"程序员",没有细化到具体的人格特质;而软件工程研究表明,任务与人格的匹配以及团队人格多样性能提升开发质量。
- 核心矛盾:LLM 扮演的"程序员"缺乏针对不同任务特点的人格适配。
- 本文要解决什么? 给 LLM 分配与任务匹配的 MBTI 人格能否提升代码生成准确率?哪些因素影响效果?
- 切入角度:借鉴软件工程中任务-人格匹配和团队人格多样性的经验,对每个编程任务自动生成适配的 MBTI 人格。
- 核心 idea 一句话:为每个编程任务定制 MBTI 人格,让 LLM 以多样化的人格角色生成代码。
方法详解¶
整体框架¶
两阶段 pipeline:(1) Personality Generation——用 GPT-4o 根据任务描述生成适合的 MBTI 类型及详细人格描述;(2) Code Generation——将生成的人格描述嵌入 prompt,让目标 LLM 以该人格角色编写代码。
关键设计¶
- 任务适配的人格生成:
- 做什么:GPT-4o 分析编程任务后输出最合适的 MBTI 类型和详细描述
- 核心思路:不同编程任务可能适合不同性格倾向(如逻辑密集型适合 INTJ/INTP,需要创意的适合 ENFP 等)
-
设计动机:统一的人格不如多样化适配——实验显示任意固定 MBTI 类型效果接近直接 prompt(~68%),而多样化适配可达 80.8%
-
详细人格描述 prompt(Full Prompt):
- 做什么:在 prompt 中不仅指定 MBTI 类型,还给出针对该任务的详细人格描述
- 核心思路:帮助 LLM 更好地理解和扮演角色
-
设计动机:实验证明 Full Prompt 比仅标注 MBTI 类型(Short Prompt)平均高 3.94%
-
与其他策略组合:
- 做什么:将人格引导与 CoT、few-shot 等策略叠加
- 核心思路:CoT + Personality 在 5/7 个 LLM 上优于单独任一策略
- 设计动机:人格引导是正交于推理策略的维度,可叠加增强
实验关键数据¶
主实验¶
| LLM | MBPP Sanitized 提升 | 平均提升 | 说明 |
|---|---|---|---|
| GPT-4o mini | +12.9% | +4.9% | 最大单项提升 |
| Qwen-Long | +12.4% | +6.5% | 最大平均提升 |
| Llama3.1 | +11.2% | +5.3% | 中等模型获益显著 |
| GPT-4o | +6.1% | +1.2% | 强模型获益较小 |
| DeepSeek-Coder V2 | +10.8% | +0.6% | 两个数据集下降 |
消融实验¶
| 配置 | Qwen-Long MBPP Pass Rate | 说明 |
|---|---|---|
| Direct | 68.4% | 基线 |
| 任意固定 MBTI | 65.7%-68.4% | 与基线无差 |
| Diverse MBTI (full) | 80.8% | +12.4% |
| Short Prompt (仅类型) | 73.3% | -7.5% vs full |
| 通用模板描述 | 65.5% | 远不如任务适配描述 |
关键发现¶
- 中等性能模型获益最大,极强(GPT-4o)和极弱(CodeLlama)模型获益有限
- 中等难度数据集提升最大;HumanEval+(太易)和 APPS(太难)效果不稳定
- 人格多样性是关键因素:HumanEval+ 78% 任务被分配 INTJ,多样性低,提升也低
- 不同 MBTI 类型解决的任务有互补性(INTJ vs ISTJ 各有 4.5% 独有可解题目)
- CoT + Personality 组合最优,Qwen-Long 提升达 13.8%
亮点与洞察¶
- 将软件工程中的人格-任务匹配理论引入 LLM prompt 设计,思路有启发性
- 关键发现是"多样性"而非"某个特定人格"带来提升——暗示 LLM 的 role-playing prompt 需要与任务特点动态匹配而非静态设定
- 方法极其轻量,只需在 prompt 前加一段人格描述,零额外训练
局限性 / 可改进方向¶
- 人格生成依赖 GPT-4o,引入额外 API 调用成本
- MBTI 本身在心理学界有争议,不是公认最科学的人格框架
- 仅在 Python 函数级代码生成上验证,未覆盖更复杂的软件工程任务
- 为什么人格引导有效的深层机制不清楚(可能只是一种更丰富的 prompt 形式)
相关工作与启发¶
- vs 直接 role-playing: 简单的"你是程序员"不够,需要针对任务定制人格
- vs CoT: 人格引导与 CoT 正交,组合效果更好
- vs few-shot: 人格引导在所有 7 个 LLM 上均优于 3-shot
评分¶
- 新颖性: ⭐⭐⭐ 将 MBTI 引入代码生成是有趣的尝试,但本质上是一种 prompt engineering
- 实验充分度: ⭐⭐⭐⭐⭐ 7 个 LLM、4 个数据集、5 个 RQ,消融非常全面
- 写作质量: ⭐⭐⭐⭐ 结构清晰,RQ 驱动的实证研究范式
- 价值: ⭐⭐⭐ 实用性一般(效果不够稳定),但实验发现有参考价值