SalesForce AI推出CodeChain:一种通过一系列自我修订具有代表性子模块的模块化代码生成的创新人工智能框架

SalesForce AI推出CodeChain:一种创新的人工智能框架,通过一系列具有代表性子模块的模块化代码生成自我修订

人工智能研究的一个主要目标是开发能够提供有用的计算机程序来解决具有挑战性的问题的AI系统。近年来在这方面已取得了很大的进展,特别是在大规模预训练的大型语言模型(LLM)取得了显著成功后。这些模型最初是为了自然语言理解而创建的,但现在已扩展到包括生成和理解代码和文本的能力。由于这一发展,已经在从自然语言问题描述中生成代码方面取得了显著进展。

LLM在处理简单的编程任务方面已经证明了自己的能力,正如它们在MBPP和HumanEval等基准测试中取得的成就所显示的那样。然而,当试图解决更加困难和竞争性的编程任务时,这些模型遇到了很大的困难。它们将代码解决方案提供为单块而不是将其分解为逻辑子任务和可重用的子模块的方法是导致困难的主要原因之一。另一方面,在面对复杂问题时,熟练的人类程序员本能地编写模块化和抽象的代码。通过重用先前创建的模块,他们有效地扩展了自己的当前专业知识。

在最近的一项研究中,Salesforce Research的一支研究团队引入了CodeChain,这是一个创新的框架,用于弥合LLM和人类开发者之间的差距。通过先前迭代中开发的代表性子模块驱动的自我修正的序列,该框架旨在改进模块化代码的开发过程。CodeChain告诉LLM以思维链的方式编写模块化的代码。它的目的是激励模型从逻辑的子任务和子模块的角度来解决问题。

CodeChain的基础是一系列的自我修订。它包含两个迭代阶段,具体如下。

  1. 子模块提取和聚类:在这个阶段,通过分析LLM生成的代码来找到子模块。然后,这些子模块被整理成聚类。从每个聚类中选择代表性的子模块。这些表示被认为更具普适性和可重用性。
  1. 提示增强和再生成:通过整合前一阶段选择的模块实现来增强和重新生成初始的思维链提示。之后,告诉LLM再次产生新的模块化解决方案。这样,模型可以有效地扩展从先前迭代中获取的信息和理解。

CodeChain对代码生成具有重大影响。该团队分享了这样一种观点,即通过推动LLM构建并重用先前创建的经过验证的子模块,生成的解决方案的模块化和准确性得到了极大改善。该框架在APPS上达到了35%的相对pass@1改进,在CodeContests上达到了惊人的76%改进。这些增益体现在各种LLM中,包括像WizardCoder和来自OpenAI的开源LLM模型。已经进行了全面消融研究,以更深入地了解为何CodeChain在提高LLM生成代码的水平和模块化方面如此成功。这些研究考察了提示技术、使用的聚类数量、LLM模型的规模以及所产生程序的品质等方面。从这些研究中获得的理解明确了CodeChain成功的原因。

总之,CodeChain是大型语言模型代码生成领域的一项革命性发展。它通过促进模块化和利用先前创建的子模块进行自我修订,从而弥合了LLM和经验丰富的人类程序员之间的差距。