:AI自动写代码,人工智能究竟还能取代什么?
前言
在AI绘画掀起一阵热潮之后,AI写代码又逐渐进入了我们的视野,似乎这一步我们还没想到就迅速到来了,难道说AI在取代画家之后,还要取代程序员吗?相信我们都曾幻想过这一天,在编写那些重复且无聊的代码时,虽然能够复制粘贴,但是或多或少确实有过“如果有人能帮我写完就好了”的想法,而这一点几乎已经被实现了;但是正如我们所预想的,随着的出现,就伴随着一系列问题涌现而来,训练数据的版权问题和生成代码的安全问题就是其中的两个关键。本文就将带领大家来领略AI代码的热潮。
文章目录
什么是 概念与背景
在一些集成开发环境中编程中,给出完整的方法或者算法建议;提供样板代码和辅助单元测试在一些较为简单直观的循环节或其他重复性较强的代码中,甚至能够自动写出完整可用的代码块 背后的原理
Codex was on code and , so it works for both and human . The sends your and code to the , and it on , as in below i.e., file both in the file you are , as well as or files a . It may also the URLs of or file paths to . The and code along with are then used by Codex to and lines and whole .
Codex 是在公开可用的源代码和自然语言上进行训练,所以它对编程和人类语言都适用。 扩展将你的评论和代码发送到 服务,它依赖于上下文,如下面的隐私描述,即你正在编辑的文件中的文件内容,以及项目中的邻近或相关文件。它还可能收集存储库的 URL 或文件路径,以确定相关的背景。然后, Codex 使用注释、代码以及上下文来合成和建议个别行和整个功能。
qquad并且它尤其擅长书写 、Go、Ruby、、等语言,在书写代码时通过IDE中的插件和模型通信,然后根据内容辅助完成代码,交互流程如下:
编程器向 服务发送上下文信息,包括注释、代码等信息; 服务使用 Codex模型,它基于数亿公开源代码及自然语言进行训练,然后向 编程器提供建议,最后返回匹配的单个代码行或者整个方法; 编程器不断向 服务提供改善建议;
如何使用AI写代码 方法使用
实例分析
第一步:创建一个.ts文件,然后引入一个名为fetch-h2的Node.js包;第二步:书写相关注释,尽可能详细的说明方法的目标和限制要求,以上图为例,功能为判断一句话包含的情感究竟是正面评价还是反面评价,限制为使用Web服务完成第三步:书写相关声明(包含方法的参数和返回值类型)
同样,在给出函数参数及返回值后,通过书写注释就可以自动完成目标代码:解析实例消费数据,返回日期、数值和单位,同时忽略开头是#的代码行,将时间通过库解析;其中可怕的是,它能够自行智能分析给定数据格式,运用空格分开,并将数值自动转为float格式,最终数据组合成元组返回;
这一部分有些惊人,这意味着AI需要不仅理解我们的目标,还要能够准确的分析出其中的特征;
这里似乎是更加智能的完全生成,但是可能也是安全性、正确性最难保证的一部分;
在如此强大的功能下,确实不禁让我们感到兴奋和一种恐惧,但是同样,我们也要清楚的认识到,AI代码,现在更多的还是去代替那些重复性、较为低级的部分,如果真的有一天,AI能够自行书写高级、充满创新目标的代码,那么我们可能就需要考虑一些其他的生存问题了。
随之而来的问题 训练数据的版权 事实上在未经许可的情况下使用了开源代码,一定程度导致了对于开源社区的抹杀;上的部分代码是根据一些开源许可进行发布的,例如MIT、GPL、 等开源许可证,但是在训练使用代码时,并没有给出相应的版权信息 遵守开源许可证规定的义务使用受「许可证例外」约束的代码,在版权法约束下合理使用 生成代码的安全/正确性
qquad我们上面提到的 甚至已经委托律师事务所发起诉讼,要求赔偿过90亿美元的法定赔偿金,认为它们违反了以下内容:
违反许可证版权要求违反 的服务条款和隐私政策违反DMCA 1202,禁止删除版权管理信息违反加州消费者隐私法,以及引起相关法律索赔的其他法律。
总结
新的工具出现,我们自然是要首先探索它的无限可能性,尽可能地为人类工作做出更加有益的效果,但是从的诞生及使用来看,AI辅助编程仍然有着很长的路要走,不仅是在于代码生成的准确性和更少的注释,更多的问题也是关于知识产权、隐私安全的领域。