AI编程领域,近期可以说热闹非凡,有多来越多的人开始从Github Copilot转向Cursor(Karpathy大佬),就在Cursor的热度还未消退之时,又一顶流出炉,AI编程助手Replit Agent。

从Cursor到Replit Agent看AI编程技术之全面综述!

Replit Agent支持根据自然语言提示从零开始创建应用,从开发环境、编写代码、安装软件包、配置数据库、部署等全部自动化,经过网友测评: 

  • 2分钟,手机上创建一个APP 

  • 2分43秒,创建类似Wordle的游戏 

  • 4分钟,构建了一个用于提交漏洞的网站 

  • 5分钟,创建一个LLM应用并且部署到线上

那么要做好大模型AI编程,又该了解哪些技术尼,今天PaperAgent带来香港科技大学领衔发布的最新AI编程方面技术综述:A Survey on Large Language Models for Code Generation

近年来用于代码生成的大型语言模型(LLMs)的年代概述。时间线主要是根据发布日期建立的。公开可用模型检查点的模型以绿色突出显示。

从Cursor到Replit Agent看AI编程技术之全面综述!

提出了一个分类体系,用于对大模型在代码生成领域的最新进展进行系统化梳理和评估。这个分类体系涵盖了从数据管理到模型架构,再到性能评估和实际应用等多个方面:

用于代码生成的大型语言模型(LLMs)的分类体系

从Cursor到Replit Agent看AI编程技术之全面综述!

  1. 数据管理:包括数据筛选、清洗和预处理,以确保数据集的质量和适用性。
  2. 预训练:涉及使用大规模未标注代码数据集对模型进行预训练,以使其掌握编程语言的基本结构和语义。
  3. 模型架构:讨论了编码器-解码器和解码器-only模型架构在代码生成中的应用。
  4. 预训练任务:介绍了因果语言建模(CLM)和去噪自编码(DAE)等预训练任务,这些任务有助于模型学习代码的内在结构和逻辑。
  5. 指令调整:通过使用结构化的指令数据对模型进行微调,以提高其遵循自然语言指令的能力。
  6. 强化学习与反馈:利用编译器或解释器的反馈,通过强化学习进一步优化模型的代码生成能力。
  7. 提示工程:通过精心设计的提示来引导模型生成更准确和高质量的代码。
  8. 仓库级别和长文本:探讨了如何处理和生成整个代码仓库级别的任务,这要求模型能够理解和生成跨文件的代码。
  9. 检索增强:介绍了检索增强生成(RAG)方法,通过检索相关信息来增强模型的生成能力。
  10. 自主编码代理:讨论了基于LLMs的自主编码代理,这些代理能够执行复杂的编程任务。
  11. 评估:介绍了评估LLMs代码生成能力的指标和方法,包括自动评估指标和人类评估。
  12. 实际应用:展示了LLMs在实际软件开发中的应用案例,如代码辅助工具和自动化编程平台。

数据管理与处理方法

详细讨论了大型语言模型(LLMs)在代码生成任务中的数据管理与处理的重要性和方法。

描述用于代码生成的大型语言模型(LLMs)预训练阶段所使用的标准数据预处理工作流程的图表

从Cursor到Replit Agent看AI编程技术之全面综述!

  1. 数据的重要性:强调了高质量数据集对于训练有效LLMs的关键作用,特别是在代码生成领域,数据的规模和多样性直接影响模型的性能。
  2. 数据收集:介绍了从开源代码库如GitHub和Stack Overflow等平台收集数据的方法,这些平台提供了大量的编程语言数据。
  3. 数据预处理:讨论了数据预处理的重要性,包括数据清洗、去重、过滤和脱敏等步骤,以确保数据集的质量和安全性。
  4. 数据分类:将数据集分为预训练数据集、指令调整数据集和性能评估基准测试数据集,每个分类在LLM开发的不同阶段都扮演着特定的角色。
  5. 预训练数据集:详细介绍了用于预训练的一些大规模代码数据集,如CodeSearchNet、Google BigQuery、The Pile、CodeParrot、GitHub Code、ROOTS和The Stack等。
  6. 指令调整数据集:讨论了用于指令调整(instruction tuning)的数据集,这些数据集包含自然语言指令和相应的代码示例,用于提高模型遵循指令生成代码的能力。
  7. 基准测试数据集:介绍了用于评估LLMs代码生成能力的基准测试数据集,如HumanEval、MBPP、CoNaLa、Spider、CONCODE、ODEX、CoderEval、ReCode和StudentEval等。
  8. 数据合成:探讨了合成数据在解决数据稀缺性和隐私问题中的应用,以及如何通过数据合成技术生成高质量的训练数据。
  9. 数据挑战与机遇:指出了在数据管理与处理过程中面临的挑战,如确保数据的代表性、处理数据偏见和隐私问题,同时也提出了改进数据质量和利用合成数据的机遇。

用于评估代码生成的大型语言模型(LLMs)的常用基准测试的详细统计数据。标记为“#PL”的列表示每个数据集中包含的编程语言数量。为了简洁起见,我们列出了支持少于或包括五种编程语言(PLs)的基准测试的编程语言。对于支持六种或更多PLs的基准测试,我们仅提供支持的PLs的数量。

从Cursor到Replit Agent看AI编程技术之全面综述!

代码生成预训练

强调了预训练在培养LLMs代码生成能力中的核心作用,并讨论了预训练过程中的关键要素和面临的挑战。

  1. 预训练的重要性:预训练是LLMs开发的关键步骤,它允许模型在大量未标注的代码数据上学习编程语言的基本结构、语法和语义。
  2. 预训练数据集:为了有效地预训练LLMs,需要使用大规模、多样化的代码数据集。这些数据集可能包括开源代码库、编程书籍、在线论坛和问答网站的内容。
  3. 预训练任务
  • 因果语言建模(CLM):在解码器-only模型中,CLM任务涉及基于前面的tokens预测下一个token,这有助于模型理解代码的顺序和逻辑。
  • 去噪自编码(DAE):在编码器-解码器模型中,DAE任务涉及对输入序列进行掩码或扰动,然后训练模型来预测或恢复原始序列,这有助于模型学习代码的深层结构和语义。
  1. 预训练模型架构:讨论了不同的模型架构,包括编码器-解码器模型和解码器-only模型,以及它们在代码生成中的适用性。
  2. 预训练的挑战:指出了预训练过程中的一些挑战,如数据质量、数据多样性和计算资源的需求。
  3. 预训练的影响:强调了预训练对提高LLMs在代码生成任务上的性能的重要性,包括代码的准确性、可读性和风格一致性。

用于代码生成的decoder-only架构的大型语言模型(LLMs)概览

从Cursor到Replit Agent看AI编程技术之全面综述!

RAG用于代码生成 

探讨了检索增强生成(Retrieval-Augmented Generation, RAG)在大型语言模型(LLMs)中的应用,特别是在代码生成任务中。

检索增强型代码生成(RACG)的工作流程图示。接收到查询(指令)后,检索器从大规模向量数据库中选择相关上下文。随后,检索到的上下文与查询合并,并将此组合输入输入到生成器(LLM)中,以产生目标代码解决方案。

从Cursor到Replit Agent看AI编程技术之全面综述!

  1. 检索增强生成(RAG):介绍了RAG的概念,即模型在响应查询时,首先从大量文档中检索相关信息,然后将检索到的信息与原始查询结合,以提高响应的质量和准确性。
  2. 代码生成中的RAG:讨论了RAG在代码生成中的应用,指出LLMs在处理代码生成任务时,可以通过检索外部数据库中的相关知识来克服知识过时和生成不准确的问题。
  3. RAG框架组件:描述了RAG框架的主要组成部分,包括向量数据库、检索器、重排器和生成器,并提到了实现RAG的工具,如LangChain和LLamaIndex。
  4. RAG在代码生成的挑战:包括检索信息的质量、检索信息与查询的有效整合、过度依赖检索信息可能导致的不准确响应,以及检索额外信息对LLMs上下文窗口大小的需求。
  5. RAG在代码生成的应用案例:提到了一些尝试将RAG应用于代码生成的研究工作,如使用图神经网络(HGNN)来增强代码摘要生成,以及通过检索源代码数据库中的代码片段来辅助代码生成。
  6. 未来研究方向:包括改进检索信息的质量、优化检索信息与查询的整合方法、减少对检索信息的依赖,以及开发更有效的上下文管理策略。

自主编码Agents

讨论了基于大型语言模型(LLMs)构建的自主编码智能体(Autonomous Coding Agents),这些智能体在软件开发和代码生成领域展现出了类似智能体的特性。

一个由LLM驱动的自主Agent系统的一般架构。规划:Agent将大型任务分解为更小、可管理的子目标,或进行自我批评和对过去行为的自我反思,以从错误中学习并提高未来的表现。记忆:这个组件使代理能够存储和检索过去的信息。工具:Agent被训练以调用外部函数或API。行动:Agent执行行动,无论是否使用工具,以与环境互动。灰色虚线代表系统内的数据流。

从Cursor到Replit Agent看AI编程技术之全面综述!

  1. 自主编码智能体的定义:自主编码智能体是指利用LLMs作为核心计算引擎的系统,这些系统能够自主地制定和执行问题解决计划,通过调用工具或API与环境进行交互。
  2. 智能体架构:介绍了自主编码智能体的典型架构,通常包括LLM基础的智能体、记忆模块、规划组件和工具使用模块。这些组件协同工作,使智能体能够在软件工程任务中实现高度自动化。
  3. 智能体的应用案例
  • AgentCoder:一个由多个专业化智能体组成的框架,包括负责代码生成的编程智能体、负责生成单元测试用例的测试设计智能体,以及执行代码并提供反馈的测试执行智能体。
  • CodeAct:通过可执行的Python代码整合LLM智能体动作,与生成JSON或文本格式的智能体不同。
  • AutoCodeRover:旨在自动解决GitHub问题以改进程序。
  • Devin 和 OpenDevin:AI软件工程师智能体,能够处理软件工程任务,如解决GitHub问题。
  1. 智能体的挑战:指出了在实现完全自动化的软件工程师智能体方面仍需克服的挑战,包括提示设计、上下文长度、智能体数量和工具集的优化。
  2. 未来研究方向:提高智能体的推理能力、增强与人类开发者的交互、以及开发能够处理更复杂编程问题的智能体。

文章来自于“PaperAgent”,作者“PaperAgent”。

从Cursor到Replit Agent看AI编程技术之全面综述!

关联网址

关联标签

文章目录

发评论,每天都得现金奖励!超多礼品等你来拿

后,在评论区留言并审核通过后,即可获得现金奖励,奖励规则可见: 查看奖励规则
暂无评论...