来自 Amir Kiarafiei 等人的论文《When Many-Shot Prompting Fails: An Empirical Study of LLM Code Translation》 将在 ICSE 2026 的 ReCode Workshop 上发表。这篇论文揭示了一个有趣的”Many-Shot 悖论”:在代码翻译等语义复杂的任务中,更多示例≠更好结果,反而 5-25 个 Few-Shot 示例效果最佳。研究团队通过 90,000+ 次翻译实验,涵盖 6 种语言、30 种语言对,为我们提供了宝贵的实证数据。
1. 论文概览
这篇论文的核心是研究 LLM 在代码翻译任务中,示例数量(Few-Shot vs Many-Shot)对性能的影响。传统直觉认为”示例越多,效果越好”,但论文通过大规模实证研究推翻了这一假设,提出了”Many-Shot 悖论”——在语义复杂的代码翻译任务中,过多的示例反而会导致性能下降。
2. 核心问题
论文要解决的核心问题是:在 LLM 代码翻译任务中,示例数量与性能之间的关系是什么? 具体包括:
- Few-Shot(少量示例)和 Many-Shot(大量示例)哪个效果更好?
- 示例数量的最佳范围是多少?
- 为什么过多的示例反而会导致性能下降?
3. 核心技术
论文采用了大规模实证研究的方法:
- 实验规模:90,000+ 次翻译实验
- 语言覆盖:6 种编程语言(Python, Java, JavaScript, C++, Go, Rust)
- 语言对:30 种不同的翻译方向
- 模型:使用主流的 LLM 进行测试
- 评估指标:代码正确性、可读性、编译通过率等多个维度
4. 核心发现
论文的核心发现可以概括为”Many-Shot 悖论”:
- 5-25 个 Few-Shot 示例效果最佳:在这个范围内,LLM 的代码翻译性能达到峰值
- 超过 25 个示例后性能开始下降:Many-Shot 反而不如 Few-Shot
- 语义复杂度是关键:在代码翻译这种语义复杂的任务中,过多的示例会导致 LLM”困惑”,反而影响性能
5. 数据亮点
- 90,000+ 次翻译实验:规模之大,保证了结论的可靠性
- 6 种语言,30 种语言对:覆盖了主流的编程语言和翻译方向
- 性能峰值区间明确:5-25 个示例的效果最佳,这个范围具有很强的实践指导意义
- 悖论现象可重复:在不同模型、不同语言对上都观察到了类似的现象
6. 一句话总结
在 LLM 代码翻译等语义复杂任务中,5-25 个 Few-Shot 示例效果最佳,过多的 Many-Shot 反而会导致性能下降——这就是”Many-Shot 悖论”。
7. 研究意义
这篇论文的研究意义在于:
- 推翻了传统直觉:”示例越多越好”并不适用于所有场景
- 提供了实证指导:5-25 个示例的最佳范围,为开发者提供了明确的参考
- 揭示了 LLM 的局限性:帮助我们更好地理解 LLM 的工作原理和适用场景
- 为后续研究奠定基础:为 Prompt Engineering、LLM 优化等方向提供了新的思路
8. 给开发者的建议
基于论文的发现,给开发者的建议是:
- 在代码翻译等语义复杂任务中,使用 5-25 个 Few-Shot 示例:这是性能最佳的区间
- 不要盲目追求 Many-Shot:过多的示例反而会适得其反
- 根据具体任务调整示例数量:不同任务的最佳示例数量可能不同,需要通过实验验证
- 关注示例质量:除了数量,示例的质量也很重要,选择代表性强、多样性好的示例