当前位置: 首页 > article >正文

AI编程工具的机遇与风险

                                               作者            吴国平  北京市隆安律师事务所

超过1万个程序员,77,000个项目使用了Copilot,55%的程序员选择Copilot。

程序员使用人工智能来协助编写代码时,最终作品的所有权就变成了一个灰色地带。传统的软件著作权法是在程序员是代码创作的唯一力量的时代制定的。如今,如果一段代码的将近一半数量是在人工智能编程帮助下诞生的,那么这段代码的著作权是否完全属于程序员?这种模糊性可能会导致潜在的纠纷和确定合法所有权的挑战。

AI编程工具的兴起

前不久,Apache 软件基金会 (ASF)修改了个人贡献者许可协议 (ICLA),将必须提交原创代码的要求进行了修改以适应AI编码在代码编写过程中的作用。开源社区的这一“妥协”,意味着AI编码工具已经被纳入主流开源社区。

Copilot 是一种专注于代码补全开发辅助的工具,直接集成在IDE中,适合日常编程任务。倾向于生成简短的代码段或补全单个函数,帮助开发者更快速地完成日常编程任务。

Codex 是一种更通用的AI编程工具,Codex是GPT-3的一个分支模型,专门针对代码生成进行了优化和训练。支持通过API调用和自然语言交互,适合更复杂的编程任务,能够根据描述生成完整的代码。能够生成更复杂的代码,包括解决多步骤问题、编写脚本、创建应用程序,甚至解释代码逻辑、与其他系统集成,帮助企业和开发者自动化编程流程。

华为的MindSpore是一个全栈AI计算框架,虽然其主要目的是支持从边缘设备到云端的AI模型训练和推理,但它的编程辅助功能和AI模型开发能力也具备一定潜力。华为的AI开发平台已经在国内得到广泛应用,尤其是在云计算和AI推理方面。但是,目前MindSpore主要是一个AI开发框架,是否有Copilot或Codex那样专门用于代码生成的功能仍待观察。

百度的飞桨(PaddlePaddle)是中国大陆目前较为成熟的AI框架之一,具有广泛的开发者社区和商业应用场景支持。尽管飞桨目前的主要应用还是在深度学习模型的训练和部署上,但其平台也具备一些代码辅助功能。与Copilot和Codex相比,在代码生成和编程辅助方面的应用场景不多,更倾向于提供AI模型训练环境。

腾讯的AI Lab与优图实验室也在开发AI编程辅助工具。虽然他们的核心研究集中在AI模型、图像识别和自然语言处理领域,但AI编程工具的探索也正在进行,主要通过大模型在代码补全、智能编辑等方面进行初步应用。

科大讯飞近年来也在AI编程工具方面开展了一些研究。其AI开发平台支持语言模型生成代码,2023年底科大讯飞发布了讯飞星火智能编程助手iFlyCode,但是这类工具的功能仍在发展中,在代码生成和编程辅助工具方面,整体成熟度尚不如国际工具。

中国的AI编程工具发展差距

相对于由强大的语言模型驱动的Copilot和Codex,中国大陆虽然也在开发大型语言模型,但在规模、精度和实用性上尚有差距,同时在开发者社区和全球生态中的影响力较弱。另外一方面,国外AI编程工具依靠大量的用户反馈,能够不断改进代码生成效果。而中国大陆的AI编程工具在用户基数、反馈机制和代码库的广度方面尚不足,限制了工具的迭代速度和精准度。

据笔者所知,国内大型的软件企业通常对核心软件开发项目的开发环境进行严格的保密控制,但是也有部分企业为员工开通了VPN专线用于国外辅助工具的访问,只有在开发模块合并后才限制外部访问环境。文首Github公布的AI编程工具的程序员数量和人工智能编程的代码比例,是否包含国内的数据不得而知,但是不可否认的是AI编程工具在国内的适用比例在逐步增加。

AI编程工具与数据的国家主权

AI编程的训练数据是来源于网络,按照通常的说法,网络是没有国界的,但是从国家或政权的角度来看,数据主权是一个越来越重要的议题。每个国家都希望能够控制其境内产生的数据,尤其是在涉及个人信息、国家安全等方面。而当外国企业,尤其是大型科技公司,未经明确许可或支付相应费用就抓取和利用这些数据,这种行为从一些国家的角度可能会被视为“数据掠夺”。

大型科技公司利用本国的数据训练AI模型,通过这些模型获得商业利润,但这些利润不会直接反馈到数据的来源国。本国的数据资源被这些外国公司无偿获取,实际上是在间接“输出”数据价值,而本国和其公民却未获得合理的回报。

从另外一个角度,AI编程技术的快速发展使得数据成为外国企业的竞争力,从而在新技术领域建立主导地位,反过来收取本国人员的使用或者授权费用,从而越发造就了技术和经济上的不平衡,甚至是新型的资源剥削。

AI编程技术的迅猛发展促使人们对数据价值的重新认识,各国积累数据的价值可能远远被低估。数据主权的概念正在崛起,一旦对数据的利用技术被超越,则很难再通过国际间的协议或国内立法去平衡发展的差距。

英国关于AI编程工具立法尝试

英国立法机构致力于推动“信任和透明度”的机制,“以便版权持有人能够更好地了解他们制作的内容是否被用作人工智能模型的输入”。英国政府希望与版权持有人和人工智能开发人员密切合作,以实现这一目标。但是以上立法计划被搁置,英国上议院通信和数字委员会发布的一份报告中表示,关于该法典制定的讨论不应该“无限期地”进行下去,如果这一进程在今年春天之前不能得到解决,政府“必须提出选择并准备好最终解决争端,包括在必要时进行立法修改”。

英国立法机构的初衷在于要求人工智能运营人“明确他们的网络爬虫是否用于获取生成式人工智能训练的数据或其他目的”,并建立“一种让权利人检查训练数据的机制”。

从本文作者的角度,英国立法机构的逻辑是从知情—度量—分取收益为切入点的,但是第一步的“知情”目前就步履维艰,但更重要的是后一步的“度量”,如果不能从技术角度来“度量”源数据对AI开发工具的贡献度,则很难实现“分取利益”,这也是英国立法遇阻的真正原因。

AI编程工具对软件公司的威胁—抄袭

对于程序员或者软件公司,无论AI代码在整个项目中占有多大的比例,程序员都不会向公司声明自己的工作中包含了部分AI生成的代码,现有的代码工作平台也不会记录或者标记AI生成部分,后续代码如何流动、被修改,甚至与其他代码组合,都无法追溯其来源。

尽管软件公司内部会利用市面上有一些工具检测代码的相似性,这些工具主要用于检测代码抄袭。然而,这类工具通常依赖于已有的数据库来对比代码片段。然而,AI生成的代码并不是直接复制,而是经过一定程度的变化和演绎生成的,也可能仅仅保持了逻辑或功能上的相似性。这会给软件公司的风险评估带来风险。

GitHub等开源平台上的开源代码数量庞大,AI系统在训练时可能会参考这些代码。AI生成的代码可能会不可避免地与开源代码产生某种程度的相似性,这是否构成抄袭,有待在具体的案例中进行评估。

Copilot 声明生成的代码绝不是从任何代码仓中拷贝和粘贴过来的,但是根据一些社区程序员反馈的信息,AI编程工具可能会生成包含一些与开源代码完全匹配的代码块(例如stack Overflow的代码)。在Copilot的官网上,我们也可以看到Copilot也承认输出的代码有可能与训练的代码一致,但是Copilot强调这样的机率很小(原文表述为in rare instances), Copilot更进一步解释了机率的含义(less than 1% based on GitHubs research),在缺乏相关外部审计数据的情况下,在相关训练模型和代码数量有限的情况下这一机率可能会放大数倍,软件公司不能想当然忽略这一部分风险。

微软在2023年针对AI编程的版权侵权忧虑,承诺对Copilot 服务及其生成的输出承担版权索赔的风险,这听起来无疑是一个好消息,但是Copilot的上述承诺前提是客户必须按照服务条款的内容,使用其内置于产品中的护栏和内容过滤器。详见以下链接:Microsoft announces new Copilot Copyright Commitment for customers - Microsoft On the Issues。

当然,从律师的角度,Copilot的上述承诺更确信了之前的怀疑——不使用额外过滤器(可能涉及企业版本或者更高付费)的情况下,侵权的风险是客观存在的,而且这样的版权风险还必须由使用AI编程工具的软件公司自己承担。

AI编程工具目前主要的功能是代码生成补全、代码维护和代码改写,以下我们以C语言为示例,考察代码改写功能在版权侵权方面的影响,以下截图为Github上直接复制的语句(项目地址:GitHub - clibs/flag: Command-line options library in ANSI C):

以下截图为利用AI编程工具进行改写的程序段:

通过对比我们发现,技术编程工具改写的这一段代码,主要调整了代码结构、变量命名和输出信息,但逻辑语序是保持一致的,flag 被改为 cmd_flags,输出的帮助信息略作修改,将 "Usage: program [options]" 改为 "Program Usage: program [command-options]"。尽管改写后的程序名称、格式、输出文本等都发生了变化,但是在版权侵权诉讼中,两者被判定抄袭的风险还是非常大的。

AI编程工具风险—许可证穿透

AI编程工具的训练数据大多来源于开源项目,开源项目在各自规定范围内使用的许可证进行分发。但是,如果一个在各种开源项目上训练过的人工智能工具生成了一段代码,那么原始许可证的效力是否还能得到延续?

AI生成的代码可能会“重现”一些开源代码段,这种风险在前文的分析和对比中已经讨论过,但用户并不知道这些代码的来源,更不知道这些代码段对应的许可证信息。如果生成代码与开源代码高度相似,且违反了开源许可证的规定,例如没有遵循GPL许可证的要求(如公开衍生代码),这可能是目前AI编程工具最大的风险。

即使生成代码与原始开源代码不完全相同,只要相似性足够高,仍然可能被视为衍生作品,从而受到GPL等开源许可证的约束。

相较于GPL许可证,MIT和Apache允许用户自由使用、修改和分发代码,甚至可以将其用于商业项目。然而,这并不意味着AI工具可以自由地利用这些代码。AI工具在生成代码时,如果使用了这些开源代码,并且没有对原代码做出明显改进或标识其来源,仍然可能触及贡献者的权益,特别是如果这些代码用于商业目的。

目前,AI编程工具并不能完全“屏蔽”GPL等开源许可证的穿透性。虽然AI编程工具生成的代码是通过模型学习的结果,但如果这些代码源于或高度类似于GPL许可的代码(衍生作品),则仍然可能被视为受GPL约束,进而对新开发者产生约束力。因此,AI编程工具作为中介,并不能改变开源许可证的约束力,新开发者在使用AI生成代码时必须对其潜在的法律责任保持高度警惕,尤其是在使用闭源或商业项目时。

从技术层面Copilot在2024年7月推出150个字符为单位的检索许可证测试版本,可以检索并标识生成代码的许可证,但是其匹配标准、基础数据库范围尚未公开,而且如此巨大的检索量需要耗费大量的服务器算力,后期的收费金额能否匹配用户的消费能力等商业化因素尚未可知。

目前GitHub Copilot、OpenAI Codex 以及其他类似的AI编程工具,都对AI生成代码的归属和使用权限做了一定的规定。尽管Copilot在用户协议中没有明确表述生成代码的归属,但是其在官网声明不会对生成的代码主张所有权。Codex在用户协议中明确:“我们特此向您转让我们对输出的所有权利、所有权和利益(如有)”,类似的AI编程生成工具(如Tabnine、Replit Ghostwriter等)也有类似的使用协议。

因此在确认AI编程工具生成的代码著作权归属时,似乎可以将AI工具的开发者排除在外了,但是这并不意味着使用者可以想当然成为输出代码的所有权人,OpenAI Codex的使用协议(Terms of use)中列名的禁止行为包括“表示输出为人为生成, 而实际并非如此”。(Represent that Output was human-generated when it was not)。在司法体系进行考量时必须尊重上述禁止性条款,这也是使用者将AI编程输出代码进行商业化使用的重要风险。

AI编程工具的自动生成代码功能,可以提高代码质量、减少调试时间,根据开发社区的反馈,AI编程工具在不同的行业领域可以提升编码效率20%--30%(定制化或复杂项目除外),在相同的商业环境下,采用AI编程工具无疑具有更高的竞争力。但是,软件公司在使用AI编程工具进行商业项目、闭源项目生成代码时,确实存在本文所述的各种风险。这些风险主要集中在AI生成代码与开源代码的相似性、开源许可证的穿透性、AI生成代码的独创性问题,以及对开源贡献者权利的侵害等方面。AI编程工具的用户需要对使用的AI编程工具保持高度警惕,在相关工具的采用、项目实施过程中咨询律师意见,确保在法律框架内进行开发和使用。

文章如有任何疏漏,请反馈给作者  hanswu@188.com


http://www.kler.cn/news/340042.html

相关文章:

  • Linux中设置cd命令后直接显示当前目录下的所有文件
  • 深入浅出React Hooks:打造高效、灵活的函数式组件
  • 电源管理芯片PMIC
  • Open3D实现点云数据的序列化与网络传输
  • 宠物健康监测仪健康守护者
  • Spring源码学习:SpringMVC(4)DispatcherServlet请求入口分析
  • 【Linux的那些事】shell命名及Linux权限的理解
  • 前端vue-配置请求拦截器
  • 容器化技术:Docker的基本概念和使用
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第04套
  • Vue2 ant-design table由于表格渲染太多数据导致渲染慢问题
  • AI开发者工具的双子星:Cursor与ChatGPT Canvas的区别
  • 三步轻松打造专业的可视化看板,提升工作效率全靠这个工具!
  • C语言复习题
  • Unity中实现预制体自动巡逻与攻击敌人的完整实现指南
  • 基于贝叶斯决策的 CAD 程序设计方案
  • [ComfyUI]超级简单的 Flux 扩图方案,简单但好用!
  • nginx做负载均衡的策略有哪些和模块
  • 新一轮 Web3 游戏季,Final Glory成捕获全新市场红利的入口
  • 基于卷积神经网络的书法字体识别系统,resnet50,mobilenet模型【pytorch框架+python】