作者:Mary Branscombe
开发商继续两者兼而有之好奇和怀疑了解 AI 编码工具,但也准备好使用它们。加特纳说14% 的企业开发者三分之一的开发人员已经在使用人工智能编码助手Docker 的 2024 年人工智能趋势报告正在使用人工智能进行编码,43%的编码员(特别是前端、全栈和云基础设施开发人员)Stack Overflow 2023 开发者调查已经在使用人工智能工具。
许多使用人工智能进行编码的开发人员从 ChatGPT 复制并粘贴(其优点是免费)。说到集成代码助手,虽然许多其他助理从那时起,GitHub Copilot(清晰的Gartner 近期魔力象限中的领导者) 曾是最受欢迎的去年 Stack Overflow 调查中的工具。
第二受欢迎的是可以被认为是原始人工智能代码助手的 Tabnine。它比 GitHub Copilot 早大约四年,每月拥有超过 100 万活跃用户,并承诺了企业所说的他们看重的一些东西:隐私和保密。
您可以将 Tabnine 作为服务部署在您自己的云租户或您自己的基础设施上,在您自己的代码库上对其进行训练(Copilot 可以使用这些代码库作为上下文,但不会对其进行训练或微调)并让它使用信息从开发人员的 IDE 添加上下文(包括当前选择的代码、当前和其他打开的文件连接的存储库、对话历史记录、Git 历史记录、导入的库、项目元数据以及编译、语法和运行时错误等详细信息)。您还可以在多个 IDE 和不同的源代码管理平台中使用它。
组织可以选择 Tabnine 使用哪种大型语言模型(选项GitHub Copilot 有最近介绍的)。这包括该公司仅使用经过许可的开源代码进行自我训练的模型。
指出,这些都是企业表示关心的事情彼得·瓜根蒂,塔布宁总裁。– 他们关心隐私,因为他们担心对其系统的访问会被用来对付他们。或者至少,他们允许供应商泄露真正关键的客户和员工见解及其代码,而当这种情况发生时,他们就会失去对此的控制。”
“企业利益相关者要求以负责任的方式使用人工智能代码助手,”Gartner 在其报告中指出AI 代码助理研究的关键能力。同样,首席信息官在调查中说版权和许可侵权问题甚至可能阻止他们采用生成式人工智能代码助手,或者至少使他们无法使用花钱保护自己来自索赔。但在实践中,这些良好的意图似乎让位于表现。
“当我们创建法学硕士时,我们只接受许可的开源代码的培训,”Guagenti 说道。– 我们知道我们正在做的事情会逊色于其他事情,但我们认为对于我们正在做的事情来说这是正确的事情,并且我们可以使用私有技术来缩小其能力上的差距访问客户代码。
– 每个人都认为法学硕士是国王,但他们—不是。其实,他们—它们只是房子的地基。”
– Peter Guagenti,Tabnine 总裁
他声称,使用客户自己的代码库作为上下文并微调模型可以很好地提高性能,至少对于大型工程团队来说是这样。
– 每个人都认为法学硕士是国王,但事实并非如此。事实上,它们只是房子的地基。事实上,人工智能代码助理的价值不在于法学硕士本身所做的事情,而在于其应用的背景,”他说。
让代码库了解开发人员 IDE 中打开的内容,可以将程序员接受 Tabnine 助手建议的速度提高 40%。他指出,通常情况下,客户会因为隐私问题而选择 Tabnine,但由于版权问题,受保护的模型往往是他们首先询问的问题。
– 我们的受保护模型的最新版本的性能与 GPT 3.5 一样好,尽管它是在相当小的数据集上进行训练的,而且我们实际上可以告诉您 – 它—一切都允许。 –但 GitHub Copilot 现在使用
通用技术4(和 GPT-4o 用于聊天和拉取请求摘要)。– 他们将 Tabnine 和受保护模型的性能与 Claude 或命令 R+或者其他非常强壮的人之一,他们接受过一切他们能刮擦的训练。”
Guagenti 将受保护模型的性能描述为“十分之七”。 - 克劳德和其他人的得分是十分之八半,如果你真的突破了界限的话,可能是十分之九,但是并不是一个巨大的差异。但是,即使是性能上的微小差异也往往比潜在的道德问题更重要。– 当他们看到差异时,我会告诉你,令人惊讶的数字会说, – 啊,实际上,我们不—不再关心许可证合规性。 –
这种实用主义(也出现在 LinearB 的研究中他认为,(尤其是在组织部署了 genAI 编码工具之后)不应责怪组织,因为这些问题涉及社会认为什么是可以接受的,而 IT 团队则被要求以最实惠的价格提供高生产力和高性能价格可能。
“选择这些工具和使用这些工具的内部动机与我们谈论人工智能道德时所面临的情况不一致,这与之前的任何其他技术没有什么不同。”
这种差异并不令人意外凯特·霍尔特霍夫RedMonk 的高级分析师,它强调需要了解这些工具如何影响开发人员工作流程及其生成的代码。
– 我们—当谈到代码助手时,我们仍然处于产品开发的“把意大利面条扔到墙上,看看什么能粘住”的阶段。
– RedMonk 高级分析师 Kate Holterhoff
“人工智能代码助手供应商预期开发人员想要的内容与从业者实际使用的内容之间存在真正的脱节,”她解释道。– 我们—当谈到代码助手时,我们仍然处于产品开发的“把意大利面条扔到墙上,看看什么能粘住”的阶段,这就是为什么它—关注在线论坛和会议走廊等渠道中表达的真实开发者情绪非常重要。”让AI编码助手更成功
组织希望对自己的代码进行培训以获得最相关的建议,但这几乎肯定包括您不想复制的遗留编码实践,因此您必须选择代码库中能够按照您想要的新代码方式工作的部分去工作。
——[想象]我—在一个组织中,我有 3000 万行代码, – 假设埃兰·亚哈夫Tabnine 联合创始人兼首席技术官。– 其中 700 万是我不希望任何人看到的遗留代码。我不想让你连接到那个,我不想训练那个;我不想让你连接到那个。我不想让[代码助理]知道它们的存在,除非可能是作为一个反面例子。”
他警告说,对于大多数组织来说,遗留代码、过时的库、过时的工件和已弃用的编码模式的示例可能比您希望助手建议的代码类型要多得多。代码不仅比几代员工的寿命更长——公司里没有人知道 20 年前的代码是做什么的——而且它是否—如果员工或生成人工智能盲目地复制最多的例子,很容易最终得到他所说的“新遗产”。
“新遗留代码是公司的新人通过查看遗留代码并模仿其中出现的内容来创建新的遗留代码,”Yahav 解释道。– 架构师或开发工程师经理试图消除某些库或某些 API 或某种做事方式,但因为人们看到它突然出现,无论是通过人工智能还是搜索,并不断模仿,他们正在创造新的遗产. –
如果开发人员不知道要使用哪个版本的库(因为团队还没有策略或精心策划的工件存储库),他们可能会选择其他代码中已有的版本他们一起工作,训练和微调人工智能模型也是如此。– 如果你使用人工智能助手并将其连接到所有遗留信息,那么每当人们询问如何做某事时,他们总是会得到旧的答案,因为那有最多的例子。除非你小心翼翼地被遗留下来的木星级引力所吸引。”
即使这不会引入在新版本的工件中修复的漏洞,或者意味着您违反了编写原始代码时不存在的法规,您最终也可能会混合使用新旧方法,并且得到与两者都不一致的东西。
新近度可以是一个信号,但最安全的选择是在开发团队已经熟悉的相对较新的代码上进行培训并获得 AI 帮助,这样他们就知道如何评估建议,然后继续进行他所说的工作 –遗产和旧代码的摇摇欲坠的领域——
采用在您自己的代码上进行训练的人工智能助手可以让对该代码进行更改以使其作为训练数据变得更好是值得的,因为人工智能的投资回报更加明显(特别是如果您在工具中跟踪一整套工程指标)喜欢法罗斯或者线性B)。
一些 Tabnine 客户已经完成了重要的代码重构和文档方面的大量工作,以使代码帮助更好地工作。
“保持秩序并不是一个优先事项,但现在它会进入另一个流程 [AI 助手],并且变得更加优先。”
– Tabnine 联合创始人兼首席技术官 Eran Yahav
“帮助人工智能的同时也帮助了人类,所以这不仅仅是为 Tabnine 完成的工作,”Yahav 指出,“它的工作已经完成,因为我们进来时竖起了一面镜子,反映了代码库的状态。代码质量不仅仅意味着错误更少:它还意味着提高开发人员生产力,因为它更容易使用,但通常会优先考虑将代码发布出去。
他很清楚,这并不是批评现有代码或编写代码的开发人员,而是批评优先级、截止日期和可用资源。– 代码不干净的原因并不是因为人们愚蠢或懒惰,而是因为他们必须发布它并且它有效。使其井然有序并不是一个优先事项,但现在它会进入另一个流程,并且变得更加优先。”
文档是经常资源不足且通常过时的领域之一:开发人员可能会抱怨文档缺失,但很少将其视为优先事项,并且交付文档通常不会得到足够多的认可例如编写代码或修复错误。借助 AI,您可以清楚地看到添加文档的价值。
——我—Yahav 说:“我们看到人们开始向零文档的关键组件添加文档。”– 这对人工智能有帮助,但也有助于任何冒险进入这个项目并试图了解什么的人—事情还在继续。通过添加这些文档,宇宙[对人类]变得更好,但这不是动机。如果检索系统对什么内容有额外的解释,它会做得更好—正在发生的事情无法从代码中推断出来,只有编写这段代码的人才知道。”文档需要解释特定设计选择的基本原理,而不是代码的作用。
文档需要解释特定设计选择的基本原理,而不是代码的作用。
– 人工智能知道代码的作用:但做出这个设计决策的原因是一些额外的信息,可以帮助使用人工智能的人全面了解这个东西是什么或者为什么它看起来像这样。 –
Yahav 建议,该文档中的信息变得更有价值,因为它可能会间接地出现在不同的上下文中,更多的人会发现它有用,而不仅仅是寻找如何做某事的开发人员。
以 JIRA(或任何工作管理系统)为例,其中问题作为要完成的工作的隐式合同。– 人们 [在 JIRA 中] 编写的问题通常不是很复杂。显然,开发人员讨厌编写它们,而产品经理(取决于组织的规模)也讨厌编写它们,因为它确定了功能,然后开发人员说,“嘿,这比你告诉的要多得多”票上有我,我不会那样做。”每个人都讨厌 JIRA 问题的合同。”
塔布宁罐头自动生成代码以匹配 JIRA 问题例如故事、错误或任务(或者验证代码是否确实捕获了问题中的需求,如果没有,则建议代码改进),使用问题中的文本作为生成的代码的上下文。– 这是开发者第一次真正在为人工智能提供足够信息的问题上拥有既得利益。票证中包含的信息越多,人工智能就越能为您提供帮助。这会改变人们使用该系统的方式,因为现在有明显的动机来确保系统的准确性和全面性。Ø
Guagenti 很快指出,这种“问题到代码”自动化并不是试图取代开发人员,并将其描述为适合简单的用例,例如简单的 React 应用程序。– 它不会为您提供 DoorDash;它不会给你真正创新的东西。”
是的,人工智能代码助手已经可以为他们非常适合的任务提供他所说的“荒谬”的改进。– 他们现在花费的时间是以前的 20%;如果你做得好的话,某些任务有 80% 的自动化因素,90% 的自动化因素。”—这意味着您需要更少的开发人员;这意味着开发人员可以将时间花在更重要的事情上(并花时间学习如何充分利用他们使用的人工智能编码工具)。
这Gartner 发现使用代码助手的好处与基本生产力一样重要的是开发人员体验:减少任务切换和维护流程状态,通过帮助扩大单元测试覆盖范围来提高代码质量和可维护性,编写更一致的代码注释和更清晰的拉取请求 - 这反过来又可以减少技术债务和让开发者将更多的时间花在高价值的工作上。
– 任何认为软件开发人员将完全消失的人都是在自欺欺人。”
– 瓜根蒂
Guagenti 表示,人工智能“只是推动技能设置,让我们能够制作更大、更复杂、更有趣的应用程序。”充分利用人工智能代码助手的组织和团队将通过以下方式做到这一点:投资于他们的开发商。– 我们—我们会期望他们更有创造力、更有创新性、更有能力、花更少的时间在黑客活动上。”
– 任何认为软件开发人员将完全消失的人都是在自欺欺人。有很多很多事情我们可以完全自动化,但仍然需要有人来设计系统。仍然需要有人接受用户需求或业务需求,并将其转化为实际解决该问题的愿景。”
YOUTUBE.COM/THENEWSTACK
科技发展日新月异,不要错过任何一集。订阅我们的 YouTube频道可播放我们所有的播客、采访、演示等。