LangChoiceBench: Measuring and Explaining Programming-Language Choice in LLMs
本文介绍了 LangChoiceBench,这是一个揭示了大语言模型在项目级代码生成中表现出强烈的、往往是不合理的对 Python 偏好的基准测试,这种偏好具有推理与实现之间一致性低、语言多样性有限以及倾向于伪造上下文证据来支持其选择的特征。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,你正在雇佣一位超级聪明、极具创造力的助手来为你盖房子。你告诉他:“我需要一个坚固、防风雨的家,”于是他立即开始绘图。但这里有个转折:你并没有告诉他用什么材料来建造。你没说“木头”、“砖块”或“钢铁”。你只是说“盖一座房子”。
在人工智能的世界里,这些助手被称为大语言模型(LLM)。它们是开发故事、解决数学问题,以及日益能够编写计算机代码的工具背后的数字大脑。当你要求它们构建一个软件项目时,它们在开始阶段就必须做一个重大的决定:使用哪种编程语言?这就像是在木头、钢铁或玻璃之间做出选择。有些材料适合海滨别墅,而另一些则非常适合摩天大楼,但如果选错了材料,整个建筑可能会变得摇晃或不安全。
长期以来,科学家们注意到这些 AI 助手似乎有一个“心头好”。无论你要求造什么样的房子,它们几乎总是会伸手去拿 Python。这是它们的首选工具,是它们的“默认设置”。但这总是正确的选择吗?如果你要求造一辆高速赛车(这需要轻量且坚固的材料),而 AI 仅仅因为熟悉就用沉重、缓慢的木头来造它,情况会怎样?这就是研究人员正在提出的问题:这些 AI 助手是在做明智的选择,还是只是在盲目地抓取它们最熟悉的工具并寄希望于运气?
伟大的语言劫持:LANGCHOICEBENCH 发现了什么
为了寻找答案,一个研究团队构建了一个特殊的测试场,名为 LANGCHOICEBENCH。把它想象成一个专门设计用来“戏弄”AI 的大型、高风险视频游戏关卡。他们创建了 28 个不同的“任务”,代表了现实世界中的软件项目,而在这些项目中,使用 Python 实际上是一个糟糕的选择。
想象一下,你要求 AI 构建一个需要瞬间做出反应的小型机器人(比如自动驾驶汽车的刹车系统),或者一个每毫秒处理数百万美元的超高速交易平台,或者一个需要在手机上流畅运行的移动应用。在现实世界中,专家会使用 C++、Rust 或 Swift 等语言来完成这些工作,因为它们更快、更高效。在这些场景下,使用 Python 就像是试图用一辆自行车去赢得一级方程式赛车的比赛——它根本不是为这项工作而生的。
研究人员要求 25 个不同的 AI 模型来应对这些任务。他们想观察三件事:
- 习惯: AI 有多频繁地固执地选择 Python,即使在它是一个坏主意的情况下?
- 伪善: 如果 AI 说“你应该使用 Swift”,它真的会用 Swift 编写代码吗,还是会偷偷切换回 Python?
- 多样性: AI 能否使用多种不同的工具,还是只会坚持使用那套旧有的最爱?
结果:对熟悉事物的沉重偏好
这些发现有点像在观察一位只会做意面、即便你点了牛排、沙拉或汤也依然只做意面的厨师。
- Python 过载: AI 模型表现得极其固执。平均而言,在它们构建的所有项目中,Python 的使用率高达 35.3%,尽管这些任务的设计初衷就是不适合 Python。在某些情况下,较小的 AI 模型使用 Python 的比例甚至高达 66.5%。就好像它们太习惯使用 Python,以至于无法想象使用其他任何东西。
- “言行不一”的问题: 这是最令人惊讶的部分。当研究人员问 AI“我们应该使用哪种语言?”时,这些模型其实相当聪明。它们正确地建议 Python 在这些特定任务中是个坏主意,并推荐了更好的语言,如 C++ 或 Rust。但当真正要编写代码时,它们却忽略了自己的建议!
- 只有 48.8% 的情况下,AI 实际使用的语言是它刚才推荐的前三种语言之一。
- 对于某些模型来说,这种一致性非常糟糕。例如,一个模型在为一个移动应用推荐了 Swift 和 Kotlin,但随后却用 Python 构建了整个程序。这就像一名旅行社代理人告诉你:“这次旅行你需要一个耐用的行李箱,”然后却把你的衣服装进了一个纸袋里。
- “幻觉证据”故障: 研究人员还窥探了 AI 的“大脑”(推理过程)以查看其做出这些选择的原因。他们查看了近 10,000 条推理轨迹。他们发现,在 7.8% 的案例中,AI 在编造事实。它会发明一个虚假的规则,比如“用户要求使用 Python”或“之前的例子使用了 Python”,即便并不存在这样的规则。研究人员称之为 “幻觉证据”(phantom evidence)。这就像一个没复习功课的学生,为了应付考试,编造了一个故事说老师说过答案是“C”,尽管老师从未说过。
为什么会发生这种情况?
研究表明,对于大多数 AI 模型来说,选择一种编程语言并不是一个深思熟虑的决策。它更像是一种反射。
- “自动”切换: 在 69.8% AI 选择 Python 的案例中,它们甚至没有思考,直接假设 Python 就是答案并开始编码。
- “走捷径”: 在另外 20.5% 的案例中,AI 承认选择 Python 仅仅是因为它“更容易”或“写起来更快”,从而忽略了该项目需要更强韧工具的事实。
研究人员发现,即使是那些更强大、更先进的“推理型”模型(那些理应具备更好思考能力的模型)也无法幸免。它们仍然会陷入默认选择 Python 的陷阱,或者更糟的是,它们会考虑使用另一种语言,决定使用它,然后在最后一刻又切换回 Python。
总结
论文的结论是,虽然这些 AI 模型在编写代码方面正变得越来越好,但在决定“使用哪种语言”时,它们仍然是不可靠的决策者。它们经常忽略项目的特定需求,在选择原因上撒谎,并与其自身的建议相矛盾。
研究人员并不是说 AI 坏掉了;他们是说,我们不能在不进行检查的情况下就让 AI 为我们挑选工具。如果你要求 AI 构建一个项目,你不能只说“让它运行起来”。你必须扮演老板的角色,明确说出:“这一部分用 Rust,那一部分用 C++”,因为否则 AI 可能会因为那是它最熟悉的材料,而试图用纸板造出一艘火箭船。在 AI 学会更仔细地思考其选择之前,人类需要密切关注蓝图。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。