GitHub 宣布智能助手 GitHub Copilot 完成测试,能够在编写代码时生成标准结构。 该系统是与 OpenAI 项目联合开发的,并使用 OpenAI Codex 机器学习平台,并在公共 GitHub 存储库中托管的大量源代码上进行训练。 该服务对流行开源项目的维护者和学生免费。 对于其他类别的用户,访问 GitHub Copilot 需要付费(每月 10 美元或每年 100 美元),但提供 60 天的免费试用访问。
使用各种框架的编程语言 Python、JavaScript、TypeScript、Ruby、Go、C# 和 C++ 支持代码生成。 模块可用于将 GitHub Copilot 与 Neovim、JetBrains IDE、Visual Studio 和 Visual Studio Code 开发环境集成。 从测试期间收集的遥测数据来看,该服务允许您生成相当高质量的代码 - 例如,GitHub Copilot 中提出的建议中有 26% 被开发人员按原样接受。
GitHub Copilot 与传统代码补全系统的不同之处在于,它能够生成相当复杂的代码块,甚至可以根据当前上下文合成现成的函数。 GitHub Copilot 适应开发人员编写代码的方式,并考虑到程序中使用的 API 和框架。 例如,如果评论中有一个 JSON 结构的示例,当您开始编写解析该结构的函数时,GitHub Copilot 将提供现成的代码,而在编写重复描述的例程列表时,它将生成剩余的代码职位。
GitHub Copilot 生成现成代码块的能力引发了与潜在违反 Copyleft 许可证相关的争议。 在形成机器学习模型时,使用了来自 GitHub 上开源项目存储库的真实源文本。 其中许多项目都是根据 Copyleft 许可证提供的,例如 GPL,它要求衍生作品的代码在兼容许可证下分发。 通过按照 Copilot 的建议插入现有代码,开发人员可能会无意中违反借用代码的项目的许可证。
目前尚不清楚机器学习系统生成的工作是否可以被视为衍生作品。 还出现了这样的问题:机器学习模型是否受版权保护,如果是,谁拥有这些权利,以及它们与模型所基于的代码的权利有何关系。
一方面,生成的块可以重复现有项目中的文本段落,但另一方面,系统重新创建代码的结构,而不是复制代码本身。 根据 GitHub 的一项研究,只有 1% 的情况下,Copilot 推荐可能包含来自现有项目的长度超过 150 个字符的代码片段。 在大多数情况下,当 Copilot 无法正确确定上下文或提供问题的标准解决方案时,就会发生重复。
为了防止替换现有代码,Copilot 中添加了一个特殊的过滤器,不允许与现有项目交叉。 设置时,开发者可以自行决定激活或禁用此过滤器。 除其他问题外,合成代码可能会重复用于训练模型的代码中存在的错误和漏洞。
来源: opennet.ru