TransAgent: Enhancing LLM-Based Code Translation via Fine-Grained Execution Alignment
本文提出了 TransAgent,一种通过源语言与目标代码间的细粒度执行对齐来定位并消除错误的多智能体系统,显著提升了基于大语言模型的代码翻译准确性与程序修复性能。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
这篇文章介绍了一个名为 TransAgent 的新系统,它的核心任务是把一种编程语言的代码“翻译”成另一种语言(比如把 Python 代码变成 Java 代码),同时保证功能完全不变。
为了让你更容易理解,我们可以把这件事想象成**“跨国翻译小说”**。
1. 背景:为什么现有的翻译不够好?
想象一下,你有一本用中文写的精彩小说(源程序),你想把它翻译成英文(目标程序),让不懂中文的读者也能看懂。
- 老方法(传统编译器): 就像请了一个只会查字典的机器人。它把每个词都翻对了,但整句话读起来生硬、不通顺,甚至逻辑全错。而且,它需要人类专家写成千上万条翻译规则,太累了,效果还不好。
- 新方法(大语言模型 LLM): 就像请了一位才华横溢的翻译家(AI)。他懂很多语言,能写出很流畅的句子。但是,这位翻译家偶尔会犯两个错误:
- 语法错误: 比如英文里少了一个句号,或者动词变位错了(就像代码编译不过去)。
- 语义错误(更隐蔽): 比如原文说“把苹果放进篮子”,翻译家翻成了“把苹果放进冰箱”。虽然句子通顺,但意思全变了(程序能运行,但结果不对)。
之前的 AI 翻译系统(如 UniTrans)就像是一个**“盲猜修正者”**。当发现翻译后的英文读起来不对劲时,它只能看着整本书猜:“哎呀,这里好像不对,我改改看。”因为它看不到书里具体的逻辑细节,所以改得往往不够精准,甚至越改越错。
2. TransAgent 的绝招:四位一体的“超级翻译团队”
TransAgent 不再依赖一个 AI 单打独斗,而是组建了一个四人特工小组,分工明确,像侦探一样层层排查问题。
第一关:初稿翻译官 (Initial Code Translator)
- 角色: 负责把中文小说先翻成英文初稿,并先试着写几个“测试题”(比如:如果输入“苹果”,输出应该是“篮子”)。
- 作用: 快速生成一个大概能用的版本。
第二关:语法纠错员 (Syntax Error Fixer)
- 角色: 专门挑刺的编辑。
- 绝招: 如果英文里出现了语法错误(比如少个逗号),编译器会报错。这个纠错员会把晦涩的报错信息(比如
Error: expected ';')翻译成人类能懂的建议(“这里少个分号”),然后让 AI 修正。 - 比喻: 就像老师把红笔圈出的错别字,翻译成具体的修改建议,让学生知道怎么改。
第三关:结构对齐师 (Code Aligner) —— 这是最核心的创新!
- 角色: 负责“对表”的侦探。
- 痛点: 中文的一行话,翻译成英文可能变成三行;或者中文的“如果...就...",在英文里可能变成了“循环..."。直接一行对一行(像以前的方法)经常对不上,导致后面找不到错误在哪。
- 绝招: 它不看单行字,而是看**“逻辑块”**。
- 它把中文故事里的“主角出门、买票、上车”看作一个完整的动作块。
- 然后让 AI 去找英文故事里对应的“出门、买票、上车”那个动作块。
- 比喻: 就像把两本书都切成一个个“场景片段”(比如“战斗场景”、“对话场景”),而不是切成单个句子。这样不管语言怎么变,只要场景对上了,就能精准定位。
第四关:语义排雷兵 (Semantic Error Fixer) —— 真正的杀手锏
- 角色: 拿着放大镜的质检员。
- 绝招: 既然已经通过“结构对齐师”把中文的“场景 A"和英文的“场景 A"对应上了,排雷兵就同时运行这两个场景。
- 它看中文场景里,变量
x的值是 10。 - 它看英文场景里,对应的变量
x的值变成了 5。 - 发现差异! 它立刻锁定:“就是这里!英文版本算错了!”
- 然后,它把这个具体的差异告诉 AI 翻译家:“你看,这里应该是 10 却变成了 5,请修正这个逻辑。”
- 它看中文场景里,变量
- 比喻: 以前的方法是让翻译家自己猜哪里错了;现在的做法是,拿着两本书的“运行录像”对比,直接指着录像说:“看,这一秒,中文里他在笑,英文里他在哭,这里肯定翻错了!”
3. 效果如何?
作者们找来了很多最新的编程题目(为了避开 AI 以前背过的答案,防止作弊),进行了测试:
- 准确率大提升: 相比之前的顶尖方法,TransAgent 的翻译准确率提高了 33.3%。
- 修错能力强: 如果翻译错了,TransAgent 修好的成功率比另一个著名的修错工具(Agentless)高了 56.7%。
- 通用性强: 不管用什么底层的 AI 模型(比如 Llama, ChatGLM 等),加上 TransAgent 这套流程,效果都会变好。
4. 总结
TransAgent 就像给 AI 翻译家配了一套**“精密仪器”**:
- 它不再盲目地猜哪里错了。
- 它通过**“分块对齐”(把故事切成场景)和“运行对比”**(看两个版本的实际表现)来精准定位错误。
- 它把模糊的“这里不对”变成了具体的“第 3 个场景里的变量值不对”。
这就好比以前修车是凭感觉敲敲打打,现在 TransAgent 是拿着X 光片和发动机数据对比图,精准地告诉修车师傅:“就是这根螺丝松了,拧紧它。”
这项技术让 AI 在代码翻译领域变得更加可靠,对于软件维护、系统升级(比如把老旧的 Java 系统升级到 Python)有着巨大的实用价值。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。