[代码评估-Arxiv]Comparing large language models and humanprogrammers for generating programming code
全文总结
这篇论文对七种大型语言模型进行了系统性地评估,并深入探讨了多种提示策略在不同编程语言环境下以及在各种任务难度梯度下对模型性能的具体影响。
研究背景
- 背景介绍: 这篇文章的研究背景是大型语言模型(LLMs)如GPT-4、Gemini、Claude和Llama的出现和发展,这些模型有望在计算机编程、教育、生物医学研究等多个领域带来革命性的变化。LLMs通过提示策略可以完成各种复杂的任务,显著提高了各个领域的包容性,特别是在计算机编程领域。
- 研究内容: 该问题的研究内容包括:评估七种LLMs在生成编程代码方面的性能,探讨不同提示策略对LLMs编码性能的影响,直接比较LLMs与人类程序员的编程能力,评估LLMs在不同编程语言之间生成和翻译代码的能力,以及考察LLMs的计算效率和从过去错误中学习的能力。
- 文献综述: 该问题的相关工作有:现有研究主要依赖于简单的提示策略,缺乏对LLMs与人类程序员编程能力的严格比较,且大多数研究集中在Python编程语言上,忽略了其他广泛使用的语言。此外,现有研究主要关注代码生成的准确性,忽视了代码执行时间和LLMs从编码错误中学习的能力。
研究方法
这篇论文探讨了多样化的提示策略以评估LLMs在编程任务求解方面的能力。详细而言,在具体实施上:
- 重复反馈(动态)策略 : 在训练过程中将完整的编程任务连同示例测试用例反复提供给LLM,并忽略所有错误消息。
- 无示例重复反馈(动态)策略: 与上述相同但不包含示例测试用例。
- 多方案生成反馈(动态)评估模式: 完整的编程任务提供给LLM,并要求其在同一运行时生成五种不同的解决方案。
- 动态代码评估模式: 将完整的编程任务提供给LLM,在其输出后由LeetCode系统自动进行验证。如果结果不正确,则LLM将返回前一次尝试的错误信息作为输入重新运行。
- 基于代码解释器的动态反馈模式: 特定适用于GPT-4模型,在其输出中使用代码解释器(CI)对示例测试用例进行评估,并在此基础上指导后续的所有尝试。
- 语言转换优化模式(针对Python3): 特定适用于GPT-4模型,在完成某一个Python3代码开发后将其自动转换为Java、JavaScript或C++语言实现。
实验设计
- 数据收集工作: 系统性地从LeetCode和GeeksforGeeks平台选取了共计100个标准程序设计题库以及15个高级应用开发案例作为研究对象。
- 实验方案设计中: 采用六种不同的提示策略组合对GPT-4进行性能测试,并确保每种提示策略均被允许最多五次尝试解决同一类型的任务。
- 在筛选阶段: 经过严格的评估流程后,最终选取了来自LeetCode的25道典型编程竞赛题以及GeeksforGeeks的5道具有代表性的算法案例。
- 模型参数设置上: 在实验过程中,默认采用了基于GPT-4的小规模预训练模型(gpt-4-0613)展开查询运算。
结果与分析
- GPT-4的表现: GPT-4在使用最优提示策略时,五次尝试的成功率显著高于标准提示策略。具体来说,反馈CI提示策略在Python3编程任务上的五次尝试成功率为86%、58%和15%,分别对应简单、中等和困难任务。
- 与其他LLMs的比较: GPT-4在使用相同提示策略时,五次尝试的成功率显著高于其他LLMs。例如,Gemini Ultra在中等任务上的五次尝试成功率比GPT-4低36%。
- 与人类程序员的比较: 在LeetCode和GeeksforGeeks比赛中,GPT-4在大多数比赛中排名在前90%。在18个比赛中,GPT-4排名在前100名内。
- 从错误中学习: GPT-4在使用反馈提示和反馈CI提示策略时,五次尝试的成功率显著高于一次尝试的成功率。反馈CI提示策略在中等和困难任务上的五次尝试成功率分别比一次尝试高0.25和0.18个百分点。
- 跨语言翻译: GPT-4在使用Python3翻译策略时,成功率高且在不同目标语言之间的成功率几乎相同。即使原始Python3代码在某些中等任务中不正确,GPT-4仍能生成正确解决任务的代码。
- 计算效率: GPT-4生成的代码运行时间和内存使用与人类程序员相当。优化后,运行时间和内存使用略有改善。
结论
这篇研究显示GPT-4是生成编程代码效果最佳的人工智能模型。研究发现GPT-4的性能高度依赖于提示策略设计,在利用其代码解析功能测试示例时展现出显著优势,并从中吸取了上一次失败的经验。在LeetCode和GeeksforGeeks等编程竞赛中GPT-4的编码能力远超大多数人类程序员的能力水平;相比之下其他生成模型的表现与普通人类程序员相当接近。该系统展现出高度一致性和稳定性地维持着代码转换能力并能可靠地将代码从一种语言转换到另一种语言
该研究展示了GPT-4在辅助生成编程代码方面具有显著效能,并明确了其在不同层次程序员之间的适用性与作用机制。该系统创新性地引入了人机协作模式,并提升了生成编程代码过程的效率与可接受性。
核心速览
研究背景
- 研究问题 :这篇文章要解决的问题是比较大型语言模型(LLMs)和人类程序员在生成编程代码方面的性能。
- 研究难点 :该问题的研究难点包括:探索不同的提示策略对LLMs编程能力的影响、比较LLMs与人类程序员的编程能力、评估LLMs在不同编程语言之间的翻译能力以及分析LLMs从错误中学习的能力。
- 相关工作 :该问题的研究相关工作有:HumanEval、MBPP、APPS、CoNaLA和CodeContests等基准数据集的设计,以及直接使用LeetCode和GeeksforGeeks等编程练习网站的任务进行性能评估。
研究方法
该论文探讨了基于综合评价体系对不同类型的大型语言模型进行训练以具备编写自动化脚本的能力的具体提示策略。具体而言,
提示策略设计 :开发了六个用于评估LLMs在解决编程问题方面的能力的提示策略主要包括重复提示、无示例的重复提示、多路提示、反馈机制相关的指导性信息提供以及Python3翻译相关的反馈CI指示。

多路提示 :LLMs被要求同时生成五个不同的解决方案。
反馈提示:由LLMs生成的代码随后经LeetCode评估,在出现错误时则会将错误信息作为输入反馈回LLMs中。
反馈CI提示:专为GPT-4设计,请GPT-4运用代码解释器(CI)来验证示例测试用例,并在后续尝试中持续采用CI评估所有测试用例。
Python3翻译提示
Python3翻译提示
实验设计
该系统通过从LeetCode和GeeksforGeeks这两个资源库中获取了大量编程题目。
在所选的25个LeetCode竞赛中进行了系统性的整理和筛选工作,并成功整理出100道高质量的编程题;与此同时,在另外五个由GeeksforGeeks提供的竞赛资源中也进行了人工整理工作,并筛选出15道具有代表性的题目。
每个提示策略最多允许五次尝试解决每个任务。具体而言,在使用OpenAI Playground提供的在线网关时会运行GPT-4查询功能;而对于其他LLM工具,则会通过相应的官方平台执行相关查询操作。
结果与分析
多种提示策略的表现:通过实验结果表明,在多数场景下生成式增强(CI)提示策略均展现出色效果;该方法显著提升了大模型系统(如GPT-4)的编程能力;例如,在难度适中的任务中进行测试时发现:与重复性增强提示方法相比,在同类测试中生成式增强(CI)提示方案的成功率达到约48%以上的提升。

不同LLMs之间的比较:GPT-4在所有提示策略下整体上表现出色且超出其他LLMs,在中等难度和复杂任务方面尤其突出。例如,在中等难度任务方面,Gemini Ultra的成功率较GPT-4低达36%。
与人类程序员的对比:在LeetCode及GeeksforGeeks等竞赛平台上进行测试后发现,在大多数比赛中GPT-4的表现均领先于90%以上的人类参赛者,并显示出其编程能力胜过大多数参赛者的水平。

培养从错误中学习的能力

跨语言翻译能力:GPT-4在准确率上显著超越了现有的工具包,在将Python3代码分别转换为Java、JavaScript以及C++的过程中表现异常出色,并且其准确率达到99.9%以上。

计算性能:GPT-4生成的代码在运行时间和内存使用方面表现不相上下,并且经过优化后有所提升。
总体结论
这篇论文全面分析了当前主流的大规模语言模型(LLMs)在代码生成任务中的性能表现,并重点研究了GPT-4这一特定模型的表现特点。研究表明,在多种不同的提示策略下(prompting strategies),GPT-4展现出明显强于其他LLMs的代码生成能力(code generation ability),并能够在与人类程序员的竞争中展现出卓越的能力(superior programming capability)。此外,在多模态处理(multimodal processing)能力和从错误案例中学习(error learning)等方面也显示出出色的能力(outstanding capability)。这些研究结果表明,在代码生成与软件开发辅助领域(software development assistance)中存在一种潜在的强大工具(powerful tool),这将有助于推动未来的程序开发流程更加高效与包容(efficient and inclusive programming workflow)
论文评价
优点与创新
- 系统性比较:论文对七种主流大型语言模型(LLMs)进行了系统评估,在代码生成能力方面进行了深入研究。
- 最佳提示方案:研究结果表明,在多数编程竞赛场景下使用最佳提示方案可以使GPT-4的人工智能水平超越85%的专业程序员。
- 强大的跨语言处理:该模型展现了卓越的多语言互操作能力,在不同编程语言间的转换准确率极高。
- 基于错误的信息进行优化:通过分析历史犯错记录并结合修正建议进行持续改进后,GPT-4在解决复杂问题时表现出色。
- 系统性对比分析:通过对LLMs与专业程序员两组样本的数据统计,本研究提供了更为全面的能力评估视角。
- 计算效率上与人类水平相当,并在某些领域有进一步优化的空间。
不足与反思
- 任务范围的局限性:本研究主要关注生成编程代码这一特定领域,并未涵盖软件工程的其他关键部分。
- 提示和测试基础设施的需求:这些大语言模型基于详尽的编程任务描述以及完整的测试数据集来进行生成代码的有效验证。这可能需要投入额外的时间与专业知识来撰写合适的提示并建立软件测试框架。
关键问题及回答
问题1:在研究中,GPT-4使用了哪些具体的提示策略,这些策略的效果如何?
重复提示 :持续重复相同的编程任务及示例测试用例直至系统忽略错误反馈。
2. 无示例的重复提示 :类似于上述提示但未包含具体示例测试内容。
3. 多路提示 :要求LLM一次性生成多个互不相同且完整有效的解决方案。
4. 反馈提示 :LLM需完成完整编程任务后由LeetCode系统进行评测;若方案失败则会收到上一次提交的错误信息。
5. 反馈CI提示 :专指GPT-4这类AI模型,在每次迭代尝试后会利用代码解释器检查所有测试情况;并基于连续集成技术评估新增失败测试用例。
6. Python3翻译 :针对特定需求的GPT-4模型不仅支持上述功能还具备自动将编写好的Python3代码转换为Java、JavaScript或C++的能力。
结果分析
问题2:在与其他大型语言模型的比较中,GPT-4的表现如何?
- 总体表现:最突出的表现是GPT-4在所有提示策略下的性能均显著超越其他大型语言模型(LLMs),尤其是在涉及中等复杂性和高度复杂性的任一侧板测试上展现出卓越的能力。例如,在涉及中等复杂性的任一侧板测试上(如关于某种主题的深入讨论),GPT-4表现出色的概率高达58%,而其竞争对手Gemini Ultra在同一类型测试中的成功率仅为36%,显示出显著差距。
- 基础能力测试:当前主流LLMs在基础能力测试中的平均成功率表明各模型之间的竞争激烈程度较高。
- 深入分析发现:在复杂场景下(如涉及困难提示策略的任务),GPT-4的表现尤为突出。例如,在涉及高度复杂性的任一侧板测试上(如关于某种主题的深入讨论),其表现出色的概率仅为15%,而其他主流模型的成功率普遍处于10%-20%区间以内。
结果显示,在生成代码方面表现卓越的GPT-4不仅展现出色的能力,在多种提示策略中显著优于其他主流的大语言模型。
问题3:GPT-4在跨语言翻译和从错误中学习的能力如何?
- 跨语言翻译能力 :GPT-4在使用反馈CI提示策略时,能够将Python3代码准确翻译成Java、JavaScript和C++,成功率接近100%。即使在原始Python3代码存在一些错误的情况下,GPT-4仍能生成能正确解决任务的代码。
- 从错误中学习能力 :GPT-4在使用反馈提示策略时,表现出强大的从错误消息中学习的能力。例如,对于中等难度的任务,反馈CI提示策略的五次尝试成功率比单次尝试提高了120%。GPT-4在使用反馈CI提示策略时,能够迭代修复其编码错误,表现出显著的持续改进能力。
这些结果表明,在生成代码方面GPT-4表现卓越,并且在跨语言翻译以及从错误中学习的能力上展现出卓越的能力


