通过检索增强生成实现少样本代码翻译
人工智能
2024-07-30 v1 软件工程
摘要
大型语言模型(LLMs)的出现显著推动了代码翻译领域的发展,使自动在不同编程语言之间进行翻译成为可能。然而,这些模型常因上下文理解不足而在处理复杂翻译任务时表现不佳。本文提出一种新方法,通过检索增强生成(RAG)实现代码翻译的少样本学习。我们利用现有代码翻译存储库,动态检索最相关的示例以指导模型翻译新的代码片段。基于 RAG 的方法通过提供可实时学习的上下文示例,显著提高了翻译质量。我们选择 RAG 而非传统微调方法,是因为它能够利用现有代码库或本地存储的语料库,允许在无需大量重新训练的情况下动态适应多样化的翻译任务。在 Starcoder、Llama3-70B Instruct、CodeLlama-34B Instruct、Granite-34B Code Instruct、Mixtral-8x22B 等开源 LLM 模型,以及 GPT-3.5 Turbo 和 GPT-4o 等商业 LLM 模型上进行了大规模实验,证明了我们方法相对于传统零-shot 方法的优越性,尤其在 Fortran 与 CPP 之间翻译方面。我们还探索了不同数量的 shots,即在推理期间提供的示例数量,具体为 1、2 和 3 个 shots,以及不同的嵌入模型,包括 Nomic-Embed、Starencoder 和 CodeBERT,以评估方法的鲁棒性和有效性。
关键词
引用
@article{arxiv.2407.19619,
title = {Enhancing Code Translation in Language Models with Few-Shot Learning via Retrieval-Augmented Generation},
author = {Manish Bhattarai and Javier E. Santos and Shawn Jones and Ayan Biswas and Boian Alexandrov and Daniel O'Malley},
journal= {arXiv preprint arXiv:2407.19619},
year = {2024}
}
备注
LLM for code translation