Large Language Models for Code Generation from Multilingual Prompts: A Curated Benchmark and a Study on Code Quality
本文引入了一个精心策划的多语言基准测试,并进行了一项研究,证明了提示词中所使用的语言会显著影响大语言模型生成的代码的功能正确性、结构质量和词汇特征,揭示了英语提示词并不总能产生最佳结果,且这种影响在不同模型和编程语言之间存在差异。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
伟大的代码翻译实验
想象一下,你有一个超级聪明的机器人朋友,它几乎能建造任何东西,从一个简单的鸟屋到一个复杂的宇宙飞船。这个机器人被称为“大语言模型”(LLM),它阅读了互联网上几乎所有的文字,包括数百万行计算机代码。因为读得足够多,它非常擅长根据我们的指令编写新的代码。通常,我们用英语与这个机器人交流,因为它学习的大部分代码都是用英语编写的。但如果你要求这个机器人用西班牙语、印地语或中文来建造一艘宇宙飞船,会发生什么呢?机器人会感到困惑吗?宇宙飞船会散架吗?还是说它会造出完全相同的东西,只是换了一个口音?
这就是一项由研究小组开展的新研究背后的核心问题。他们想看看我们用来与这些 AI 机器人交流的语言,是否会改变它们编写的代码质量。在软件工程领域,“代码”是告诉计算机该做什么的一组指令。“正确性”意味着代码确实可以运行并通过所有测试,就像一座桥梁能够承载汽车而不坍塌。“质量”则是一个更广泛的概念;它意味着代码易于阅读、遵循社区规则(比如不在人行道上乱扔垃圾),并且没有可能在以后导致崩溃的隐藏陷ets(陷阱)。研究人员很好奇,如果用英语以外的语言请求建造一座桥梁,会让机器人造出一座摇摇欲坠的桥,还是说机器人在任何语言下都同样出色。
实验:一场多语言编程挑战
为了找出答案,研究人员组织了一场大规模的编程竞赛。他们从一个名为 CoderEval 的著名基准测试中提取了 460 个不同的编程任务——其中 230 个是 Python 任务,230 个是 Java 任务。这些不仅仅是简单的“打印你好”之类的任务;它们是现实世界的挑战,要求 AI 解决问题、处理数据并构建结构。
然后,他们做了一件聪明的事。他们没有仅仅用英语向 AI 提问,而是将这 460 个任务翻译成了四种其他语言:中文、印地语、西班牙语和意大利语。但他们并没有使用快速的机器翻译。他们聘请了精通计算机科学的母语专家对每一个翻译进行人工检查和修正。他们希望确保指令是完美且自然的,就像人类向朋友寻求帮助一样。
接着,他们将这些翻译后的指令输入到当今最强大的三个 AI 机器人中:GPT-4o mini、DeepSeek 和 Claude。他们要求每个机器人用五种语言(英语加上另外四种语言)解决同样的 460 个问题。总共生成了数千段代码来进行对比。
大惊喜:英语并不总是王者
结果令人有些震惊。普遍的观点认为,如果你用英语询问,你会得到最好的代码,因为那是 AI 学习最多的语言。但研究发现,这并不总是正确的。
事实上,对于 Python 任务,使用中文提问实际上比使用英语能得到更好的结果!由中文提示词生成的代码通过了更多的测试,运行也更加可靠。这就像请一位厨师做菜;有时,用另一种语言提供食谱会让厨师想到更好的烹饪方法。然而,这种“中文优势”并不适用于每一个机器人或每一类任务。对于 Java,结果则更加复杂,没有一种语言是明显的赢家。主要的启示是:向 AI 说英语并不保证能得到最好的代码,而使用另一种语言也不一定会让代码变差。
代码看起来不同,但它变差了吗?
研究人员还观察了代码的“质量”,而不仅仅是它是否能运行。他们检查了以下内容:
- 复杂度: 代码是纠缠不清的乱麻,还是笔直的一条线?
- 注释: 机器人是否解释了它正在做什么?
- 警告: 代码是否违反了规则或看起来很凌乱?
他们发现,用非英语语言生成的代码并不一定是“糟糕”的。它只是看起来不同。例如,由中文提示词生成的代码通常拥有更多的注释,仿佛机器人在努力表现得更加乐于助人。来自印地语提示词的代码有时会有更多的风格错误,比如缺失标点符号或奇怪的间距,但这些通常是容易修复的小问题。
一个有趣的发现是关于印地语的。当 AI 被要求用印地语编程时,它有时会产生一些带有风险的代码,即存在更多的潜在 Bug 或混乱的逻辑。但对于西班牙语和意大利语,生成的代码通常与英语版本一样好,甚至在避免某些错误方面表现得更好。
“混搭”问题
这里的情况变得有点混乱了。虽然代码的逻辑可能很棒,但代码内部的单词往往是令人困惑的混合体。研究人员发现,即使你用西班牙语或中文向 AI 提问,机器人也经常用英语来编写注释(解释代码的笔记)和变量名(数据的标签)。
这就像是请一位厨师用意大利语写一份食谱,但他却用英语写配料表,并用两种语言混合编写说明。研究人员发现 AI 是非常不一致的。有时它遵循你的语言,有时则不然。对于需要代码保持语言一致性以便团队协作的开发者来说,这是一个问题。研究表明,仅仅要求特定语言进行编程是不够的;你可能需要非常明确地告诉机器人,要将笔记和标签也保持在同一种语言中。
这对我们意味着什么?
这项研究的结论是,我们不需要害怕使用母语来与 AI 编程助手交流。你可以用西班牙语、中文或印地语请求代码,而不必担心机器人会失败。在某些情况下,比如 Python,你甚至可能会得到更好的结果!
然而,有两点需要注意:
- “风格”问题: 当用非英语语言编写时,代码可能会出现更多的细微格式错误(如缺失逗号或行过长)。但这些都可以通过自动化工具轻松修复。
- “语言混搭”问题: AI 可能不会保持你所要求的语言来进行注释和标签编写。如果你需要所有内容都处于同一种语言中,你可能需要仔细检查代码,或者给 AI 额外的指令。
总的来说,这项研究表明 AI 正在变得更加灵活。它可以理解并用多种语言进行构建,打破了过去必须使用英语才能获得优质代码的障碍。但像任何新工具一样,它也有自己的怪癖,我们需要学习如何更好地利用它们来获得最佳结果。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。