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

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

ccwgpt 2025-03-10 13:35 41 浏览 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的未来可能性。

相关推荐

如何使用PIL生成验证码?(pi验证教程)

web项目中遇到使用验证码的情况有很多,进行介绍下使用PIL生成验证码的方法。安装开始安装PIL的过程确实麻烦各种问题层出不绝,不过不断深入后就没有这方面的困扰了:windows安装:直接安装Pil...

Python必学!3步解锁asyncio异步编程 性能直接狂飙10倍!

还在用传统同步代码被IO阻塞卡到崩溃?别当“代码苦行僧”了!Python的asyncio模块堪称异步编程的“开挂神器”,处理高并发任务就像开了涡轮增压!不管是网络爬虫、API接口开发还是文件批量处理,...

Tornado6+APScheduler/Celery打造并发异步动态定时任务轮询服务

定时任务的典型落地场景在各行业中都很普遍,比如支付系统中,支付过程中因为网络或者其他因素导致出现掉单、卡单的情况,账单变成了“单边账”,这种情况对于支付用户来说,毫无疑问是灾难级别的体验,明明自己付了...

Python学习怎么入门?附真实学习方法

Python技术在企业中应用的越来越广泛,因此企业对于Python方面专业人才的需求也越来越大,那对于之前对Python没有任何了解和接触的人而言,想要从零开始学习并不是一件容易的事情,接下来小U就为...

PySpider框架的使用(pyspider 教程)

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

大学计算机专业 学习Python学习路线图(最新版)

这是我刚开始学习python时的一套学习路线,从入门到上手。(不敢说精通,哈哈~)希望对大家有帮助哈~大家需要高清得完整python学习路线可以【文末有获取方式】【文末有获取方式】一、Python入门...

阿里巴巴打造的400集Python视频合集免费学起来,学完万物皆可爬

第一阶段Python入门章节1:Python入门章节2:编程基本概念章节3:序列章节4:控制语句章节5:函数章节6:面向对象编程第二阶段Python深入与提高章节1:异常处理章节2:游戏开发-坦克大...

Nginx Gunicorn在服务器中分别起什么作用

大部分人在gunicorn前面部署一层nginx的时候也的确没有想过为什么,他们只是觉得这样显得他们比较专业,而且幻想着加了一层nginx反向代理之后性能会有提升,恕我直言,请你们带上脑子,一个单纯的...

Python培训怎么学?Python基础技术总结!值得一看

Python培训如今越来越被更多人所接受,相比自学参加Python培训的好处也是显而易见,但Python毕竟属于后端编程开发的主流语言,其知识机构还是比较庞大的,那Python培训怎么学?以及Pyth...

使用Tornado部署Flask项目(tornado async)

Tornado不仅仅是一个WEB框架,也可以是一个WEB服务器。在Tornado中我们可以使用wsgi模块下的WSGIContainer类运行其他WSGI应用如:Fask,Bottle,Djang...

Python Web框架哪个好用?(python3 web框架)

  问:PythonWeb框架哪个好用?  答:  1.Django  Django是Python世界中最出名、最成熟的Web框架。Django功能全面,各模块之间结合紧密,(不讲其他的)Djang...

Vue3.0+Tornado6.1发布订阅模式打造异步非阻塞实时=通信聊天系统

“表达欲”是人类成长史上的强大“源动力”,恩格斯早就直截了当地指出,处在蒙昧时代即低级阶段的人类,“以果实、坚果、根作为食物;音节清晰的语言的产生是这一时期的主要成就”。而在网络时代人们的表达欲往往更...

Python开源项目合集(第三方平台)(python第三方开发工具)

wechat-python-sdk-wechat-python-sdk微信公众平台Python开发包http://wechat-python-sdk.readthedocs.org/,非官方...

IT界10倍高效学习法!用这种方式,一年学完清华大学四年的课程

有没有在某一个瞬间,让你放弃学编程刚开始学python时,我找了几十本国内外的python编程书籍学习后,我还是似懂非懂,那些书里面到处都是抽象的概念,复杂的逻辑,这样的书,对于专业开发者来说,在平常...

如何将Python算法模型注册成Spark UDF函数实现全景模型部署

背景Background对于算法业务团队来说,将训练好的模型部署成服务的业务场景是非常常见的。通常会应用于三个场景:部署到流式程序里,比如风控需要通过流式处理来实时监控。部署到批任务中部署成API服...

取消回复欢迎 发表评论: