跳转到主要内容
Chinese, Simplified

category

GitHub Copilot引入了人工智能系统常见的几种风险,包括模型偏差风险、隐私问题、合规问题和环境影响。应对某些风险的一些缓解措施。其中包括阻止攻击性语言和个人识别信息的内容过滤器,购买碳抵消以实现碳中和,以及评估可访问性的内部测试。然而,该工具缺乏如何生成建议的可解释性、如何使用的可见性以及控件的可配置性。个人资料上次更新时间:2023年7月13日

产品描述

GitHub Copilot是一款人工智能驱动的配对程序员,旨在帮助开发人员更快、更轻松地编写代码。它使用注释和代码中的上下文来即时建议单个行和整个函数。GitHub Copilot由OpenAI Codex提供支持,这是一个由OpenAI创建的生成性预训练语言模型。它可以作为几种流行的集成开发环境(IDE)的扩展[1]。

 

GitHub Copilot的Codex模型是根据自然语言文本和来自公开来源的源代码进行训练的,包括GitHub上公共存储库中的代码。它的设计目的是在给定其可以访问的上下文的情况下生成尽可能好的代码,但它不会测试它建议的代码,因此代码可能并不总是有效,甚至没有意义。建议开发人员在将代码推向生产之前仔细测试、审查和审查代码[1]。截至2023年2月,GitHub开始依赖更新的“Codex”模型[12]。最初的法典模式和目前使用的模式之间的差异尚不清楚。

 

提供GitHub Copilot的公司GitHub是一个使用Git进行软件开发和版本控制的成熟平台。GitHub成立于2008年,2018年被微软收购,现已发展成为世界上最大的代码存储库之一,拥有数百万用户和存储库。该公司提供各种支持选项,包括文档、社区论坛和对企业客户的直接支持[1]。

个人资料上次更新时间:2023年7月13日

预期使用案例

GitHub Copilot旨在成为一名人工智能配对程序员,帮助开发人员更高效、更轻松地编写代码。它旨在在客户的组织中使用,以提高开发人员的生产力、满意度和整体代码质量[1]。

GitHub Copilot根据开发人员当前工作的上下文提供代码建议,包括注释和代码。它可以建议单独的代码行或整个函数,帮助开发人员浏览不熟悉的库或框架。开发人员可以节省时间,减少脑力劳动,并专注于更有意义的任务。GitHub Copilot并不是为了取代开发人员,而是为了增强他们的能力,使他们更有效率[1]。

 

风险和缓解总结

下表简要总结了GitHub Copilot产品中存在哪些常见的genAI驱动的风险,以及哪些风险已通过该工具提供的蓄意缓解措施得到解决(但不一定消除)。

有关每种风险的定义,请参阅下文。

滥用和误用

与人工智能系统被恶意或不负责任地使用的可能性有关,包括用于创建深度伪造、自动网络攻击或入侵监控系统。滥用特别指故意将人工智能用于有害目的。

任意代码生成

  • 由于GitHub Copilot能够生成任意代码,因此它可以用于生成网络攻击中使用的代码。例如,恶意用户可以使用Copilot生成用于编排机器人网络的代码。成功的网络攻击可能需要额外的黑客专业知识;单凭GitHub Copilot不太可能让恶意行为者实施网络攻击,但它可以降低不那么老练的黑客的门槛。

合规

涉及人工智能系统违反法律、法规和道德准则的风险(包括版权风险)。不合规可能导致法律处罚、声誉损害和用户信任的丧失。

侵犯版权

 

  • GitHub Copilot是根据公开的代码[1]进行培训的。GitHub的文档没有披露这些培训数据的组成。Copilot可能会根据用户提示提供(即复制)此代码,并且复制的代码可能不会被批准用于所有用途。例如,使用“copyleft”许可证发布的代码可能会出现在Copilot的培训数据中,GitHub不保证,如果Copilot工具复制了代码,它会包括适当的归因。使用复制代码的合法性受到正在进行的诉讼的制约[2]。

法规遵从性

 

  • 由于GitHub Copilot能够生成任意代码,因此它可能被用于构建违反法律法规的系统。例如,Copilot可用于生成软件应用程序,这些应用程序以违反应用程序部署所在司法管辖区法规的方式跟踪使用情况和用户参与度。这种风险通常取决于GitHub Copilot用户提示工具提供特定功能的代码。尽管如此,无意中生成具有非法功能的代码并非不可能。
  • GitHub不存储发送到Codex模型和从Codex模型返回的提示或模型响应。尽管如此,某些使用可能违反数据安全法。例如,Copilot的使用可能不符合需要政府安全许可的项目,即使与产品交换的内容是无害的。

GitHub Copilot采用了一种内容过滤器,旨在解决版权输入的风险。有关更多详细信息,请参阅下面的缓解部分。

环境和社会影响

人们担心人工智能可能会在社会中引发更广泛的变化,如劳动力转移、心理健康影响,或deepfakes等操纵技术的影响。它还包括人工智能对环境的影响,特别是训练复杂的人工智能模型对自然资源和碳排放造成的压力,与人工智能帮助缓解环境问题的潜力相平衡。

碳足迹

  • 根据基于Github Copilot的Codex模型的开发者OpenAI的说法,Codex是GPT-3模型120亿参数变体的微调版本。它是在2020年末或2021年初训练的。直接估计训练计算和碳足迹是不可能的[3]。作为参考,Meta的LLaMa-13B类似模型在2022年末或2023年初使用了约59兆瓦时的能源[4]进行了训练,大致相当于5个美国家庭的年消耗量[8]。由于元模型的训练得益于更高效的硬件(2年的硬件进步)、更高效的训练机制(由于在该领域获得了2年的专业知识,需要更少的实验),并且没有经过微调,Credo AI认为,Meta模型的指标应被视为Codex模型训练的排放和能量消耗的下限。
  • 使用Meta的LLaMA-13B模型作为参考,与Codex模型类似大小的模型可以在推断时在英伟达V100 GPU[4]上运行,每个实例的最大功率为300W[6]。无法对GitHub Copilot的持续碳足迹进行可靠的第三方评估。这样做需要任何给定时间的平均用户数数据和Microsoft Azure配置信息(即单个模型实例可以服务的用户数)。

软件开发人员中断

 

  • 对开发者的影响尚不确定。GitHub的研究[7]以及社交媒体上分享的轶事证据表明,Copilot在提高开发人员生产力方面是有效的。这可能会降低市场对熟练程序员的需求——如果现有程序员能够100%满足市场对编程任务的需求,任何效率的提高都会减少市场所需的程序员数量。或者,它可能会增加对编程的需求——随着效率的提高,更多的任务变得可行,从而导致对熟练程序员的需求净增加。
  • 该工具(以及类似的工具)有可能创建一个双层环境。如果GitHub[7]吹嘘的效率提升是真实的,那么市场对不使用和不熟练使用Copilot的程序员的需求可能会减少。
  • 使用GitHub Copilot可能会导致对该工具的依赖。GitHub Copilot的用户可能会发展“即时工程”技能,以获得更有用的模型输出,而不太强调练习某些与Copilot辅助工作流程无关的编程技能。

GitHub的母公司微软声称通过购买碳信用实现净零排放。有关更多详细信息,请参阅下面的缓解部分。

 

可解释性和透明度

指的是理解和解释人工智能系统的决策和行动的能力,以及对所使用的数据、所使用的算法和所做决策的开放性。缺乏这些要素可能会造成滥用、误解和缺乏问责制的风险。

模型输出

GitHub Copilot没有解释它是如何在用户提示下获得输出的。

培训和评估数据

关于用于训练Codex模型的数据的信息是有限的。数据来自“托管在GitHub上的5400万个公共软件存储库”,并根据文件大小进行过滤[3]。有关训练集中代码的许可证或质量的信息是有限的。

设计决策

Codex模型是在原始GPT-3模型[3]的基础上进行微调的。描述Codex模型的学术论文[3]详细描述了训练方法,并给出了理由。

公平与偏见

源于人工智能系统做出系统性地对某些群体或个人不利的决策的潜力。偏见可能源于训练数据、算法设计或部署实践,导致不公平的结果和可能的法律后果。

语言

  • “鉴于公共来源主要是英语,GitHub Copilot在开发者提供的自然语言提示不是英语和/或语法不正确的情况下可能效果不佳。因此,非英语使用者可能会体验到较低的服务质量。”[1]

可访问性

  • 在撰写本文时,GitHub Copilot没有任何旨在提高广大用户可访问性的广告功能。

冒犯性输出或有偏见的语言

  • GitHub Copilot的输出是其训练数据的函数。由于它是在数百万个公共GitHub存储库上训练的,没有(公开的)攻击性语言过滤,因此Copilot可能会以生成的代码注释或变量名的形式输出攻击性语言。

GitHub在Copilot产品文档中宣传,他们正在与残疾开发者合作,以确保无障碍。有关更多详细信息,请参阅下面的缓解部分。

GitHub Copilot采用了一种内容过滤器,旨在解决输出攻击性语言的风险。有关更多详细信息,请参阅下面的缓解部分。

 

长期和存在风险

考虑未来先进的人工智能系统对人类文明构成的推测性风险,无论是由于滥用,还是由于其目标与人类价值观相一致的挑战。不适用

 

性能和稳健性

与人工智能准确实现其预期目的的能力以及对扰动、异常输入或不利情况的弹性有关。性能故障是人工智能系统执行其功能的基础。稳健性的失败可能会导致严重后果,尤其是在关键应用程序中。

  • GitHub Copilot可能会输出包含错误或安全漏洞的代码[1]。GitHub的文档没有评估该模型在常见编程任务上的性能,也没有评估其对各种提示策略的稳健性。GitHub对用户体验进行了研究,发现大约46%的模型建议完成被开发人员接受[12]。有关更多详细信息,请参阅[正式评估](#正式评估)部分。
  • OpenAI独立于GitHub评估了Codex模型。他们报告了28.81%pass@k在现实编程问题基准HumanEval上,k=1的性能。pass@k性能任务模型响应于用户提示生成k个独立输出,并评估k个输出中的任何一个是否通过了与问题相关联的预定义单元测试。如果用户只提示模型一次(无论结果如何,都选择接受或拒绝建议并继续前进),这28.81%的成功率可能足以代表现实世界的性能[3]。这些评估可能无法反映截至2023年2月的最新法典模型[12]。

隐私

指人工智能通过个人收集的数据、处理数据的方式或得出的结论侵犯个人隐私权的风险。

  • GitHub Copilot可能会从其培训数据中输出姓名、联系信息或其他个人身份信息[1]。例如,训练数据中编码在代码注释中的识别信息可以由模型再现。这种现象的频率尚不清楚——GitHub将其描述为“非常罕见”。
  • GitHub Copilot for Business不记录用户提示或模型输出。敏感数据通过与产品的直接交互“泄露”到GitHub或其模型提供商OpenAI的风险有限。

GitHub Copilot采用了一种内容过滤器,旨在解决输出PII的风险。有关更多详细信息,请参阅下面的缓解部分。

 

安全

包含人工智能系统中可能危及其完整性、可用性或机密性的潜在漏洞。安全漏洞可能导致重大伤害,从错误的决策到侵犯隐私。

 

易受攻击的代码生成

  • GitHub Copilot可能输出包含漏洞的代码。GitHub没有提供这种情况发生频率的估计,并将验证代码安全的责任交给了用户[1]。

其他安全

 

  • 由于GitHub Copilot for Business既不存储用户提示,也不模拟输出,因此使用该服务的风险与使用非人工智能互联网连接应用程序不相上下。Copilot的源代码(包括旨在与第三方IDE接口的扩展)可能包含漏洞,这可能会导致用户的安全暴露。

**截至2023年2月Copilot[12]的更新,该产品使用基于LLM的漏洞扫描仪来识别生成代码中的一些安全漏洞。我们将在[缓解措施](#缓解措施)一节中进一步讨论这一缓解措施**

 

缓解措施

在本节中,我们将讨论产品内置的缓解措施(无论是否默认启用)。我们还评论了由采购组织管理其员工使用该工具的可行性。

内容过滤

内容过滤器GitHub Copilot有一个内容过滤器来解决genAI系统的几个常见风险。该过滤器在GitHub Copilot常见问题解答页面[1]中进行了描述。其功能如下:

 

  • 它“屏蔽了提示中的冒犯性语言,避免在敏感上下文中综合建议”。没有提供有关此功能的有效性、性能或稳健性的详细信息。该功能在默认情况下似乎已启用,并且从可用文档中看,该功能不可配置[1]。
  • 它“根据GitHub上的公共代码,检查代码建议及其周围约150个字符的代码。如果匹配或接近匹配,建议将不会显示给[用户]。”GitHub没有提供有关该功能的有效性、性能或稳健性的详细信息。此功能可为组织客户配置。没有记录该功能是否在组织帐户中默认启用[9]。
  • 它“在以标准格式显示时阻止电子邮件”。根据GitHub的说法,“如果你足够努力,仍然有可能让模型建议这类内容。”没有提供有关该功能的有效性、性能或稳健性的详细信息。该功能在默认情况下似乎已启用,并且从可用文档中看,该功能不可配置[1]。

碳中和

碳中和微软,GitHub的母公司,声称是碳中和的[10]。他们通过购买碳信用和抵消来实现这一目标。他们公开承诺到2030年实现净零排放。由于GitHub作为微软子公司的地位,很可能所有与GitHub Copilot相关的系统(包括Codex模型)都部署在微软的Azure云平台上,从而被纳入微软更广泛的碳核算。

无障碍

无障碍测试GitHub正在“对GitHub Copilot的残疾开发者易用性进行内部测试”[1]。该公司鼓励发现可用性问题的用户联系专门的电子邮件地址。没有提供有关这些测试状态的详细信息。

漏洞过滤

漏洞过滤器截至2023年2月Copilot更新,该服务包括一个“漏洞预防系统”,该系统使用大型语言模型来分析生成的代码,目的是识别和阻止常见的安全漏洞,如SQL注入、路径注入和硬编码凭据[12]。Credo AI无法找到有关这一缓解措施的性能或有效性的详细信息。漏洞过滤器不太可能识别和阻止所有可能的安全漏洞。

治理能力

对于一个组织来说,管理其人工智能系统的开发或使用,有两个功能是关键:组织观察员工使用模式的能力,以及组织实施和配置控制措施以降低风险的能力。Credo AI在这两个维度上评估系统。

GitHub Copilot不为其Copilot for Business客户提供使用可见性。企业没有机制来观察基本法典模型的投入或产出,也不能查看使用情况的统计摘要。

GitHub Copilot提供了有限的控件可配置性(见上文)。GitHub Copilot不允许企业实施和配置自己(或第三方)的技术控制来管理风险。

 

正式评估和认证

评估

GitHub Copilot和Codex模型的开发人员各自进行了研究,以评估使用该工具的性能和功效[7,3]。

GitHub的研究重点是开发人员使用该工具的体验。主要结果来自一项发给参加GitHub技术预览的开发者的调查。该调查有大约2000名受访者(11.7%的回答率),可能存在显著的回答偏差。调查发现,“60-75%”的用户对自己的工作感到更满足,在一项针对95名开发人员的对照研究中,发现Copilot将执行特定任务的速度提高了55%[7]。

最近,更新后的Codex模型使Copilot生成的开发人员代码文件的比例增加了19个百分点:从27%增加到46%。目前尚不清楚该统计数据是指完全由Copilot生成的文件,还是仅指包含Copilot产生代码的文件[12]。2023年2月的更新还引入了一种独立于Codex的新模型,以预测用户是否会接受特定建议。GitHub声称,该模型将不需要的建议率提高了4.5%[12]。

OpenAI的研究提出了一个新的基准HumanEval,它由164个新的编程问题组成,专门针对可能出现在其训练数据中的问题来测试模型,因为这些问题存在于互联网上。编程问题伴随着单元测试,以实现自动、客观的评估,而不是人工判断。当为每个问题生成单个输出时,该模型实现了28.8%的通过率。当允许每个问题生成100个输出,并且如果任何一个输出是正确的,则该模型被视为“正确的”时,该模型的通过率为72.3%。OpenAI认为这是写测试调试过程的代表,但他们主张使用输出排名来选择单个最佳输出——根据这一指标,该模型的通过率为44.5%[3]。

已经进行了几项独立研究来评估GitHub Copilot的性能和疗效。其中,Credo AI评估的构成高质量学术研究的相对较少。一篇论文[11]试图严格评估Copilot在基本编程问题(排序、搜索等)上的正确性,并将Copilot解决方案与编程任务的人工解决方案的基准数据集进行比较。作者发现,基于人类对正确性的判断,Copilot产生了正确的解决方案,从一些排序和图形算法的0%的时间(在提示样本中)到其他一些搜索算法的100%的时间。他们发现,随着时间的推移,该模型不一致,在30天的窗口期内重复试验,但这可能是由于基础法典模型的温度设置造成的。作者没有报告基本算法任务的总体正确率。基准测试解决方案数据集包含几个编程问题的正确解决方案和错误解决方案。作者报告了一个正确率,即基准测试中给定任务的正确解决方案的比例,并将其与Copilot的性能进行比较。Copilot在3/5任务上优于基准,基于pass@1精确作者建议,Copilot最好由“专家开发人员”使用,可能不适合新手,因为他们可能无法检测到有缺陷或非最佳解决方案。

所获证书

Credo AI已确定以下与我们客户的隐私、安全和合规要求相关的法规和标准。GitHub公布的合规性详细信息如下。有关更多详细信息,请参阅https://github.com/security

结论

GitHub Copilot是一款基于人工智能的工具,旨在帮助软件开发人员编写代码。它由OpenAI的Codex模型提供动力,这是一个在数百万行开源代码上训练的预训练语言模型。Copilot根据开发人员当前正在编写的代码的上下文提供代码建议和完成。它旨在提高开发人员的生产力、满意度和代码质量。然而,它也引入了人工智能系统常见的几种风险,包括模型偏差风险、隐私问题、合规问题和环境影响。

GitHub和OpenAI已经实施了一些缓解措施来应对某些风险。其中包括阻止攻击性语言和个人识别信息的内容过滤器,购买碳抵消以实现碳中和,以及评估可访问性的内部测试。然而,该工具缺乏如何生成建议的可解释性、如何使用的可见性以及控件的可配置性。对该工具的正式评估发现,它可以提高开发人员的速度和满意度,但它很难处理一些复杂的编程任务,从而在评估中获得广泛的正确性结果。

尽管GitHub Copilot是一个有用的生产力工具,但它引入了需要治理来解决的风险。缺乏可见性和可配置性给旨在管理工具风险并确保合规和合乎道德使用的组织带来了挑战。对该工具的能力、局限性和最佳监督实践进行进一步研究,将有利于用户和利益相关者。有了适当的治理,Copilot可以成为一种资产,但如果没有它,它就有可能成为一种负债。

 

参考

笔记

斜体表示Credo AI对关键概念的定义。

人工智能披露:“产品描述”、“预期用例”和“结论”部分是在聊天调整的大型语言模型的帮助下生成的。对于前两个部分,Credo AI将官方产品文档提供给OpenAI的ChatGPT,并提示模型生成包含相关信息的文本。对于后一部分,Credo AI提供了该风险简介的其余部分作为背景参考信息,并促使Anthropic的Claude聊天机器人总结信息。对最终文本的准确性和适用性进行了审查,并由Credo AI进行了人工编辑。

原文地址
https://www.credo.ai/ai-vendor-directory/github-copilot
本文地址
Article

微信

知识星球

微信公众号

视频号