Single-Language Evidence Is Insufficient for Automated Logging: A Multilingual Benchmark and Empirical Study with LLMs
本文介绍了 MultiLogBench,这是一个涵盖六种编程语言和 63,965 个代码实例的综合多语言基准测试,其结果表明,由于模型性能存在显著的跨语言差异以及面向维护的验证至关重要,因此关于自动化日志记录的稳健论断需要超越单一语言数据集进行评估。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象你是一位主厨,正试图教机器人如何为一道菜撰写食谱。机器人不仅要知道列出哪些食材,还要知道在烹饪过程的哪个环节写下备注、提及哪个特定品牌的量杯,以及如何描述味道,才能让阅读者理解。
本文讲述了一组研究人员的故事,他们决定测试他们的“食谱编写机器人”(实际上是先进的人工智能模型)是否真的聪明,还是仅仅擅长模仿某一种特定的“厨房”。
以下是他们发现的故事,简化分解如下:
问题:“单一语言”陷阱
多年来,研究人员通过向这些 AI 机器人展示用Java(一种非常流行的编程语言)编写的代码,并要求它们添加“日志语句”来进行测试。将日志语句想象成开发者留在代码中的便利贴,上面写着:“嘿,如果这部分出错了,请检查这个变量!”
研究人员意识到,他们只是在一种特定的厨房(Java)中测试机器人。他们问道:如果我们教机器人如何在 Java 厨房里写备注,它会自动知道如何在 Python 厨房、C++ 厨房或 Go 厨房里写备注吗?
实验:构建"MultiLogBench"
为了找出答案,团队建立了一个名为MultiLogBench的全新大型测试场。他们不只建造了一个厨房,而是建造了六个不同的厨房(Java、Python、Go、C++、JavaScript 和 C#)。
他们通过两种方式测试机器人:
- “冻结照片”测试:他们向机器人展示一道完成的菜肴(一段代码),并问道:“如果你是主厨,你会把便利贴放在哪里?”这就像看着一顿已完成饭菜的照片,猜测盐是在哪里加入的。
- “现场烹饪”测试:他们观察厨师们实际烹饪的过程,并仅在厨师决定在食谱中途添加备注时才添加一条备注。这更难,因为它模仿了现实生活,其中决策是在变化中发生的。
他们还增加了一个“转折”测试:他们取相同的食谱,稍微更改字体或单词顺序(不改变含义),以查看机器人是仅仅记住了文本,还是真正理解了烹饪过程。
重大发现
1. “一刀切”的神话是假的
机器人在每个厨房中的表现并不相同。
- 有些机器人在Java厨房中写备注表现出色,但在**C++**厨房中却感到困惑。
- 有些在Python中表现优异,但在JavaScript中却表现糟糕。
- 教训:仅仅因为一个机器人在一种语言中写备注是“最佳”的,并不意味着它是整体最佳的。你不能仅凭一次测试就挑选机器人;你必须在计划使用该机器人的特定厨房中进行测试。
2. 最难的部分:选择正确的工具
研究人员发现,机器人通常擅长弄清楚说什么(信息内容)以及在哪里放置备注。最让它们崩溃的是选择正确的工具。
- 在 Java 厨房中,你使用一个名为
logger.info()的特定工具。 - 在 C# 厨房中,你可能会使用
Logger.LogDebug()。 - 机器人经常能正确写出信息,却使用了错误的语言工具。这就像机器人知道你需要“测量面粉”,但当食谱明确要求使用“量杯”时,它却抓起了“茶匙”。这是跨不同语言失败的最大来源。
3. “循环”和“嵌套”的困惑
当备注需要放在循环(重复动作,如搅拌锅 100 次)内部或嵌套函数(大食谱中的小食谱)内部时,机器人最挣扎。
- 类比:想象一个机器人试图在你旋转旋转木马时写备注。它感到头晕,不知道备注应该是关于整个旅程,还是仅仅关于当前的马匹。在代码中,这意味着机器人会困惑是否应该记录循环的开始、结束,还是中间每一步。
4. 现实生活比照片更难
当研究人员从“冻结照片”测试转向“现场烹饪”测试时,机器人的表现变差了。
- 在现实世界中,代码是混乱且不断变化的。那些在“冻结照片”测试中看起来完美的机器人,在面对代码实时更新的混乱现实时却跌跌撞撞。
- 然而,即使在这个混乱的现实世界测试中,主要教训依然成立:不同的语言仍然需要不同的技能。
5. 它们不仅仅是在作弊
研究人员担心机器人可能只是记住了训练数据中的确切文本(作弊)。为了测试这一点,他们稍微重写了代码(更改字体、添加额外的括号),但保持了含义不变。
- 结果:机器人没有崩溃。它们的性能基本保持不变。这证明它们实际上是在思考代码,而不仅仅是复述记忆的答案。
最终结论
该论文得出结论:你不能仅通过在一种语言中测试来判断机器人编写代码备注的能力。
如果你想构建一个帮助开发者编写更好日志的工具,你不能仅仅在 Java 上训练它并期望它在所有地方都能工作。你必须在所有你关心的语言中测试它,因为“厨房规则”会随着语言的不同而变化。最适合一项工作的机器人可能是另一项工作的最差选择,而最难的部分不是写出句子,而是知道针对那种特定语言该使用哪个具体工具。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。