百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

AI编码工具未能代替码农:大模型的局限性揭秘

ccwgpt 2025-03-10 13:35 35 浏览 0 评论

随着ChatGPT和Github Copilot等AI编码工具的兴起,Stack Overflow近日因流量减少宣布裁员近三分之一。这引发了一个争议的问题:ChatGPT这类AI编码工具,真的要颠覆整个行业了吗?然而,普林斯顿和芝加哥大学的最新研究LLM目前没那么容易代替码农。

据报告,GPT-4在面对选取的GitHub问题时的成功率为0%,而表现最佳的模型Claude 2的成功率也仅为1.96%。

那么,我们真的需要为编程工作的未来担忧吗?目前看来,程序员的职位并未受到真正的威胁。

Stack Overflow应对AI编程工具挑战

受到ChatGPT及其GPT-4驱动的Github Copilot等AI编程工具的冲击,曾是开发者首选的代码辅助网站Stack Overflow近期流量明显减少。尽管去年该公司员工人数翻倍至540人,但自去年11月OpenAI发布ChatGPT以来,开发者逐渐转向使用AI工具以获取更实时、准确的代码建议。今天,Stack Overflow的CEO Prashanth Chandrasekar宣布,由于宏观经济压力和转型盈利需求,公司裁员超过100人,占总员工数的28%。

随着ChatGPT等大语言模型的兴起,Stack Overflow和类似的代码辅助网站受到冲击。尽管这些模型大部分依赖于从这些网站获取的数据,却未有所回馈。这带来了一个紧迫问题:如果数据源耗尽,如何为新AI模型供应训练数据?

面对AI的挑战,Stack Overflow采取了两大策略:

自主研发:推出自家AI编码工具。

与科技巨头合作:与OpenAI等公司合作,因其构建AI模型时需用到Stack Overflow数据。为防止未授权数据爬取,OpenAI正在研发网络爬虫控制。Stack Overflow CEO明确,想用其数据训练模型的都需付费,强调知识库网站在AI模型进化中的不可或缺角色。

大语言模型真能取代码农?

普林斯顿和芝加哥大学的团队使用SWE-bench框架,对大语言模型在解决2294个GitHub问题的能力进行评估。结果显示,即使是GPT-4和Claude 2这样的领先模型,成功率都不超过5%。具体来说,GPT-4的成功率为0%,而Claude 2为1.96%。

研究显示,使用BM-25检索技术时,Claude 2生成的代码补丁中,仅23%能应用到代码仓库,且仅1%真正解决问题。此外,对于12个主流Python库,模型表现存在差异。这一发现对于那些将GPT-4视为“编程神器”的人来说,无疑是一个巨大的打击。这也提醒了人们,不能单纯依赖高分榜单来判断AI的实际能力。

研究为“程序员是否会因AI失业”争议提供了新证据。有评论指出:“新的评估数据集SWE-bench比之前的HumEval更有说服力,大模型不到4%的成功率,难道说明它们距离真正自主还远?”而SWE-bench的评估准确性是否经得起推敲,又将成为业界新焦点。

SWE-bench重塑编码模型的评测标准

在最近的研究中发现,许多当前用于评估大型编码模型能力的基准测试已经不再适用,因为它们往往无法真实地反映模型的实际表现。以HumanEval为例,其中的挑战性问题过于简单,导致大模型只需短短几行代码便可解决。但实际的软件工程过程并不那么简单,它需在海量代码中寻错或理解复杂函数关系。

基于此,普林斯顿和芝大的研究团队提出了一个新的基准测试——SWE-bench。其独特之处在于直接与GitHub上的实际问题以及相关的合并请求解决方案连接,从而提供实际Python代码任务。模型的主要任务是为提交到GitHub仓库的问题找到答案,这通常涉及到错误报告或功能请求。

此外,SWE-bench要求模型为每个问题生成一个修复补丁,并详细描述其对现有代码库所做的修改。接着,利用仓库内置的测试框架SWE-bench来验证这些更改的代码库。

SWE-bench:精细筛选确保任务实例的高质量

研究者为了找到高质量的大规模任务实例,他们通过了以下三个细致的筛选阶段:

1、仓库选择和数据搜集:

首先初步选取了12个流行的开源Python代码库,从中收集约90,000个拉取请求(PR)。

研究人员会优先选择流行的仓库,因为它们往往维护得更好,具有明确的贡献者指南和高测试覆盖率。每个PR都与一个特定的代码库,即PR合并之前的仓库状态。

2、基于属性的筛选:

在创建候选任务的方法是选择满足以下标准的PR:

(1)解决了GitHub上的某个问题。

(2)修改了仓库的测试文件,这暗示了用户可能附带了测试以核实问题的解决情况。

3、基于执行的过滤:

对每个候选任务,执行PR的测试内容,并对比应用PR前后的测试结果。研究者会剔除没有经历“失败到通过测试”的任务实例。此外,还会过滤可能导致安装或运行错误的实例。

经过上述三阶段筛选,从原始的90,000个PR中,成功挑选出2,294个高质量任务实例,组成了SWE-bench。

研究者指出,被选中的代码库都规模庞大,包含数千个文件,并且相关的拉取请求通常涉及多个文件的修改。相较于现有的LM编程基准,SWE-bench展现出多重优势,包括:

  • 利用真实的用户提交问题和解决方案。
  • 提供来自12个资源库的多样化编码问题。
  • 强大的基于执行的评估框架。
  • 能够利用新实例持续更新,且只需最少的人工干预。

LLM在代码修复任务中的表现:如何衡量其效果?

研究团队为大模型提供了问题描述和代码库。具体来说,大模型需针对描述修改代码以达到解决问题的目的。在实际操作中,这些代码的修改被形式化为“补丁文件”,它明确指出为解决问题需要更改代码库中的哪些部分。

那么,如何判断LLM的修复方案是否有效?

为此,研究者利用unix的补丁程序工具,将这些生成的补丁应用到代码库中。接着,他们会执行相关的单元测试和系统测试以验证这些修改。只有当补丁成功且所有测试均通过时,方案才被视为有效。作为基准的关键指标,研究者关注的是成功解决任务实例的百分比。

SWE-bench:构建独特的数据集

与传统的NLP基准不同,通常只聚焦于短输入和专为基准设计的“人为”问题,SWE-bench基准测试带来了全新的视角。此基准考虑了真实的软件工程任务,其每个任务均涉及复杂的代码库和相关问题描述。解决这些问题需要的不仅仅是代码生成能力,还需具备资深软件工程师的专业技巧,这是传统基准所忽视的。

令人印象深刻的是,SWE-bench的数据采集流程适用于GitHub上的任何Python存储库,大大减少了人工干预的需要。这意味着研究者可以不断地为SWE-bench添加新任务,确保语言模型在尚未接触过的问题上得到评估。这就保证训练的语料库中没有包含具体解决方案,

研究者将关注在其基准的多样性,包括长输入、稳健的评估机制、跨上下文的代码编辑以及解决方案的广泛覆盖。

CodeLlama模型在SWE-bench中的调优

为了在SWE-bench评估框架中检验开放和专有模型的表现,研究者尝试使用现有的CodeLlama微调模型。但他们发现,这些模型往往无法根据指令生成整个代码库的编辑,而是倾向于输出占位符或不相关的代码段。为此,团队对70亿参数的CodeLlama-Python模型和130亿参数的CodeLlama-Python模型进行了监督微调(SFT)。经过这一步调整,新的模型已经转化为专门的代码库编辑器,能够在普通消费电子产品上运行并有效处理GitHub上的问题。

大模型在代码编辑领域的挑战

在最近的一项评估中,研究者对多种大型模型,如GPT-3.5、GPT-4、Cluade 2及其微调版本进行了详细测试。令人惊讶的是,大多数模型的表现都不尽如人意。结果显示,这些模型在复杂问题上遭遇困境。如,Claude 2和GPT-4仅解决了4.8%和1.7%的任务,并且在使用BM25后,Claude 2的表现下滑到1.96%。

(1)不同资源库的效果:

所有模型在不同代码库中呈现相似趋势。但各模型所解决的任务实例不总是相同。如,Claude 2和SWE-Llama 13b在oracle环境下分别解决了110个和91个问题。

(2)上下文长度的影响:

模型在长代码预训练时表现受限,难以处理长上下文。增加BM25上下文大小后,尽管召回率提高,但总体性能下降。

(3)问题创建日期的影响:

以2023年为分界,除GPT-4外,模型在此日期前后的表现无显著差异。

另外研究还发现,微调模型对上下文敏感,更擅长生成补丁而非整个文件。大模型更偏向生成简短、简单的代码。

以上数据图片均参考论文:https://arxiv.org/abs/2310.06770

LLM模型助力,未来工作流加速

尽管目前的通才模型存在上下文长度限制,但其潜力不容小觑。预见到未来,特训的LLM将展现更强的专业性。这并不意味着模型会取代程序员,反而可以加速他们的工作流,从而助力团队更快地实现目标。

关于企元大数据

广州企元大数据科技有限公司,专注于人工智能企业应用,为企业提供内部专属的人工智能模型开发、生成式AI开发以及全面的人工智能咨询服务。我们的产品 AIW全智通,凭借其独特的认知引擎,不仅为中小企业提供了经济、定制化的AI解决方案,还确保了其输出的可管理性与准确性,完全满足企业的业务策略和道德规范。AIW开发底座版(AI PaaS),利用核心的封装式AI模块化技术,为企业提供了与现有业务系统兼容的AI增强解决方案。它的模块化和标准化设计,以及为企业现有系统增加AI功能的能力,都使得企业可以低成本、高效率地进行数字化升级。

关于汇思人机资本

汇思软件(上海)有限公司(简称:Cyberwisdom Group)是一家领先的企业级人工智能、数字学习解决方案和人才持续专业发展管理提供商,基于一套平台、内容、技术和方法论构建,我们的服务包括学习管理系统(LMS)、企业人工智能管理平台、企业Metaverse设计、定制课件设计、现成的电子学习内容和数字化劳动力业务流程外包管理。

汇思在香港、广州、深圳、上海、北京、中山、新加坡和吉隆坡均设有分支机构,汇思超过 200人强大研发团队,拥有自主研发的一系列企业级人才发展学习方案,包括wizBank7.0学习管理系统以及企业全栈人工智能管理平台 TalentBot AI PAAS 2.0。作为领先的企业人工智能及人机发展解决方案供应商,汇思不仅提供平台技术,并且拥有亚太地区庞大的定制课程设计开发团队,超过2000门自主版权的通用课件,游戏化学习,学习支持与推广服务等。

汇思深度企业人工智能咨询 Deep Enterprise AI Consulting基于多年来的”人机发展“的成熟经验,深厚技术和影响力,团队的定位是给予”企业人机学习及发展无限的可能性”

我们的目标是帮助您解锁AI的潜力,提升业务效率和客户体验。欢迎与我们联系,共同探讨AI的未来可能性。

相关推荐

定时任务工具,《此刻我要...》软件体验

之前果核给大家介绍过一款小众但实用的软件——小说规则下载器,可以把网页里的小说章节按照规则下载到本地,非常适合喜欢阅读小说的朋友。有意思的是,软件作者当时看到果核写的体验内容后,给反推荐到他的帖子里去...

前端定时任务的神库:Node-cron,让你的项目更高效!

在前端开发中,定时任务是一个常见的需求。无论是定时刷新数据、轮询接口,还是发送提醒,都需要一个可靠且灵活的定时任务解决方案。今天,我要向大家介绍一个强大的工具——Node-cron,它不仅能解决定时任...

Shutter Pro!一款多功能定时执行任务工具

这是一款可以在电脑上定时执行多种任务的小工具,使用它可以根据时间,电量等来设定一些定时任务,像定时打开程序、打开文件,定时关机重启,以及定时弹窗提醒等都可以轻松做到。这是个即开即用的小工具,无需安装,...

深度解析 Redis 缓存击穿及解决方案

在当今互联网大厂的后端开发体系中,Redis缓存占据着极为关键的地位。其凭借高性能、丰富的数据类型以及原子性操作等显著优势,助力众多高并发系统从容应对海量用户的访问冲击,已然成为后端开发从业者不可或...

从零搭建体育比分网站完整步骤(比较好的体育比分软件)

搭建一个体育比分网站是一个涉及前端、后端、数据源、部署和维护的完整项目。以下是从零开始搭建的详细流程:一、明确项目需求1.功能需求:实时比分展示(如足球、篮球、网球等)支持多个联赛和赛事历史数据查询比...

告别复杂命令行:GoCron 图形界面让定时任务触手可及

如果你是运维人员或者经常接触一些定时任务的配置,那么你一定希望有一款图形界面来帮助你方便的轻松配置定时任务,而GoCron就是这样一款软件,让你的配置可视化。什么是GoCron从名字你就可以大概猜到,...

Java任务管理框架核心技术解析与分布式高并发实战指南

在当今数字化时代,Java任务管理框架在众多应用场景中发挥着关键作用。随着业务规模的不断扩大,面对分布式高并发的复杂环境,掌握其核心技术并进行实战显得尤为重要。Java任务管理框架的核心技术涵盖多个方...

链表和结构体实现:MCU软件定时器(链表在单片机中的应用)

在一般的嵌入式产品设计中,介于成本、功耗等,所选型的MCU基本都是资源受限的,而里面的定时器的数量更是有限。在我们软件设计中往往有多种定时需求,例如脉冲输出、按键检测、LCD切屏延时等等,我们不可能...

SpringBoot定时任务(springboot定时任务每小时执行一次)

前言在我们开发中,经常碰到在某个时间点去执行某些操作,而我们不能人为的干预执行,这个时候就需要我们使用定时任务去完成该任务,下面我们来介绍下载springBoot中定时任务实现的方式。定时任务实现方式...

定时任务新玩法!systemd timer 完整实战详解

原文链接:「链接」Hello,大家好啊!今天给大家带来一篇使用systemdtimer实现定时任务调度的详细实战文章。相比传统的crontab,systemdtimer更加现代化、结构清晰...

Celery与Django:打造高效DevOps的定时任务与异步处理神器

本文详细介绍了Celery这一强大的异步任务队列系统,以及如何在Django框架中应用它来实现定时任务和异步处理,从而提高运维开发(DevOps)的效率和应用性能。下面我们先认识一下Cele...

订单超时自动取消的7种方案,我用这种!

前言在电商、外卖、票务等系统中,订单超时未支付自动取消是一个常见的需求。这个功能乍一看很简单,甚至很多初学者会觉得:"不就是加个定时器么?"但真到了实际工作中,细节的复杂程度往往会超...

裸机下多任务框架设计与实现(gd32裸机配置lwip 网络ping不通)

在嵌入式系统中,特别是在没有操作系统支持的裸机环境下,实现多任务执行是一个常见的挑战。本文将详细介绍一种基于定时器的多任务框架设计,通过全局时钟和状态机机制,实现任务的非阻塞调度,确保任务执行中不会出...

亿级高性能通知系统构建,小白也能拿来即用

作者介绍赵培龙,采货侠JAVA开发工程师分享概要一、服务划分二、系统设计1、首次消息发送2、重试消息发送三、稳定性的保障1、流量突增2、问题服务的资源隔离3、第三方服务的保护4、中间件的容错5、完善...

运维实战:深度拆解Systemd定时任务原理,90%的人不知道的玩法

运维实战:深度拆解Systemd定时任务原理,90%的人不知道的高效玩法一、Systemd定时任务的核心原理Systemd定时任务是Linux系统中替代传统cron的现代化解决方案,通过...

取消回复欢迎 发表评论: