过去几年间,代码生成与相关技术领域取得了显著进展。特别是,预训练语言模型(Pretrained Language Models, PLMs)在代码检索、代码生成、代码摘要及代码补全等任务中表现出色。然而,尽管这些模型在处理代码方面展现出惊人的能力,它们仍受到输入数据的知识边界限制,导致生成的代码可能并不令人满意。
🧠 模仿程序员的思维:CONAN的诞生
如果我们观察现实中的软件开发场景,会发现即使是经验丰富的程序员,在面对陌生或复杂的任务时,也往往会借助外部资源,如StackOverflow或GitHub,查找相关文档或代码片段。这些程序员不仅查阅这些资源,还可能直接复用代码以加快开发进程。CONAN的设计灵感正是来源于此。它旨在模拟人类程序员在编写代码时的检索行为,通过检索相关代码片段和文档,提升代码生成的准确性和效率。
CONAN由两个核心组件构成:代码结构感知检索器(CONAN-R) 和 双视图代码表示的检索增强生成模型(CONAN-G)。CONAN-R负责代码和文档的高效检索,CONAN-G则通过双视图机制生成高质量代码,并融合检索到的代码片段和文档以增强生成的效果。