When Many-Shot Prompting Fails: An Empirical Study of LLM Code Translation

TL;DR

研究发现,代码翻译中多示例提示会降低功能正确性,最佳示例数为5-25。

cs.SE 🔴 高级 2025-10-19 7 次浏览
Amirkia Rafiei Oskooei Kaan Baturalp Cosdan Husamettin Isiktas Mehmet S. Aktas
LLM 代码翻译 多示例提示 功能正确性 软件工程

核心发现

方法论

研究采用大规模实验,评估从零示例到625示例的提示效果。使用Gemini模型家族进行90,000次翻译实验,分析静态和动态性能指标,特别关注功能正确性。

关键结果

  • 在Pass@1指标上,功能正确性在5-25示例时达到峰值,Gemini 1.5和2.0 Flash在25示例时达到61.8%。
  • 静态指标如BLEU和CodeBLEU在多示例下表现不一致,Gemini 2.0 Flash在125和25示例时达到峰值。
  • 多示例提示导致功能错误和运行时错误增加,降低了翻译的成功率。

研究意义

研究挑战了多示例提示在上下文学习中的普适性,强调了在代码翻译任务中,少量高质量示例的重要性。这对软件工程中有效利用LLM具有重要意义。

技术贡献

研究揭示了多示例提示的局限性,提出了在代码翻译中,少量示例的质量优于数量的观点,提供了新的提示策略优化方向。

新颖性

首次系统性地揭示了多示例提示在代码翻译中的“多示例悖论”,与其他自然语言任务的表现形成鲜明对比。

局限性

  • 研究仅限于Gemini模型家族,其他模型的表现尚不明确。
  • 随机选择的示例可能引入噪声,影响结果。

未来方向

未来研究可探索其他模型架构的表现,并优化示例选择策略以提高翻译质量。

AI 总览摘要

近年来,大型语言模型(LLM)的发展为上下文学习提供了新的可能性,尤其是在代码翻译等复杂任务中。传统观点认为,提供更多的示例可以提高模型性能。然而,本研究通过对90,000次代码翻译实验的分析,揭示了一个“多示例悖论”:在代码翻译任务中,功能正确性在提供5到25个示例时达到峰值,而更多的示例反而会降低性能。

研究使用了Gemini模型家族,评估了从零示例到625示例的提示效果。结果表明,虽然静态相似性指标在多示例下有所改善,但功能正确性却在多示例下显著下降。这一发现挑战了“更多即更好”的普遍假设,强调了在代码翻译中,少量高质量示例的重要性。

这一研究结果对软件工程领域具有重要意义,提示我们在利用LLM进行代码翻译时,应注重示例的质量而非数量。未来的研究可以进一步优化示例选择策略,并探索其他模型架构的表现,以提高翻译的功能正确性和经济性。

深度分析

研究背景

随着大型语言模型(LLM)的发展,上下文学习成为可能,尤其在代码翻译等复杂任务中。传统观点认为,提供更多示例可提高模型性能,但在代码翻译中,功能正确性比静态相似性更为重要。

核心问题

代码翻译需要深层次的语义理解,确保生成的代码不仅语法正确,还需功能等效。这一严格要求使得代码翻译成为上下文学习的一个挑战性测试平台。

核心创新

研究首次揭示了在代码翻译任务中的“多示例悖论”,即功能正确性在少量示例时达到峰值,而更多示例反而降低性能,挑战了“更多即更好”的假设。

方法详解

  • �� 使用Gemini模型家族进行90,000次翻译实验
  • �� 评估从零示例到625示例的提示效果
  • �� 分析静态和动态性能指标,特别关注功能正确性

实验设计

实验基于CodeTransOcean基准,涉及六种编程语言的30个翻译对。每个对随机抽取200个源代码片段,总计90,000次翻译实验。

结果分析

功能正确性在5-25示例时达到峰值,Pass@1指标显示在25示例时达到61.8%。多示例提示导致功能错误和运行时错误增加,降低了成功率。

应用场景

研究结果对软件工程中有效利用LLM具有重要意义,提示我们在代码翻译中应注重示例的质量而非数量。

局限与展望

研究仅限于Gemini模型家族,其他模型的表现尚不明确。随机选择的示例可能引入噪声,影响结果。

通俗解读 非专业人士也能看懂

想象你在厨房里做饭。你有一个食谱,它告诉你需要哪些材料和步骤。现在,想象一下,你有很多食谱,但每个食谱都略有不同。你可能会觉得有更多的选择是好事,但实际上,这可能会让你感到困惑,不知道该选择哪个食谱。类似地,在代码翻译中,提供太多示例可能会让模型困惑,反而降低了翻译的质量。

简单解释 像给14岁少年讲一样

想象你在玩一个游戏,游戏中有很多关卡。你需要选择合适的工具来过关。现在,如果有太多的工具选项,你可能会感到困惑,不知道该用哪个。类似地,在代码翻译中,提供太多的示例可能会让模型感到困惑,反而降低了翻译的质量。少量高质量的示例就像是游戏中最好的工具,帮助你顺利过关!

术语表

大语言模型 (LLM)

一种能够处理大量文本数据并生成自然语言的人工智能模型。

用于代码翻译中的上下文学习。

上下文学习 (ICL)

通过在提示中提供示例来帮助模型学习新任务的方法。

研究中评估了不同示例数量对翻译性能的影响。

多示例提示

在提示中提供大量示例以期提高模型性能的技术。

研究发现多示例提示在代码翻译中可能降低功能正确性。

功能正确性

生成代码在功能上与源代码等效的能力。

研究的核心评估指标之一。

Pass@1

衡量代码翻译成功编译的指标。

用于评估功能正确性。

开放问题 这项研究留下的未解疑问

  • 1 如何在不增加噪声的情况下优化示例选择策略?
  • 2 其他模型架构在多示例提示下的表现如何?

应用场景

近期应用

软件工程

在代码翻译中优化提示策略,提高功能正确性和经济性。

远期愿景

跨平台兼容性

通过改进代码翻译技术,实现更高效的跨平台软件开发。

原文摘要

Large Language Models (LLMs) with vast context windows offer new avenues for in-context learning (ICL), where providing many examples ("many-shot" prompting) is often assumed to enhance performance. We investigate this assumption for the complex task of code translation. Through a large-scale empirical study of over 90,000 translations, we systematically evaluate the impact of scaling in-context examples from zero-shot to many-shot configurations of up to 625 examples, with prompts spanning from approximately 100,000 to 800,000 tokens. Our findings reveal a "many-shot paradox": while static similarity metrics may modestly improve with more examples, functional correctness consistently peaks with few-shot prompting (5-25 examples). Providing substantially more examples often degrades this crucial functional performance. This study highlights that for code translation, the quality of a few well-chosen examples outweighs sheer quantity, challenging the universal efficacy of "more is better" for ICL and underscoring the task-dependent nature of optimal prompting strategies. Our results have significant implications for effectively leveraging LLMs in software engineering.

cs.SE cs.AI cs.CL cs.PL