人工智能 频道

凯捷软件主管对人工智能生成代码的评价:高可用,但有“太多未知数”

  凯捷软件公司首席软件官Jiani Zhang表示,虽然Capgemini的大多数客户都不乐意在生产中使用人工智能生成的代码,但该技术已经带来了开发人员和工程师可能尚未意识到的效率和生产力的巨大提高。

多样化的专业人士小组在现代办公室举行会议:集思广益,让IT程序员一起使用计算机,讨论策略,讨论规划。软件工程师开发鼓舞人心的应用程序程序

  凯捷工程公司由全球62,000多名工程师和科学家组成,他们的工作是为无数客户创造产品,从制造汽车、火车和飞机的工业公司到独立软件供应商。

  因此,当人工智能辅助代码生成工具在2022年开始充斥市场时,全球创新和工程咨询公司注意到了这一点。毕竟,Capgemini五分之一的业务涉及为面临数字转型计划需求的全球客户生产软件产品。

  根据Capgamini自己的调查数据,在未来12个月内,每10个组织中就有7个将使用生成人工智能(genAI)进行软件工程。今天,30%的组织正在尝试将其用于软件工程,另有42%的组织计划在一年内使用它。只有28%的组织完全远离技术。

  事实上,据Capgemini称,genAI已经协助编写近每八行代码中就有一行,预计在未来12个月内,这一比例将达到每五行代码中就有一行。

  三年前,张嘉年接任公司首席软件官。在那段时间里,她看到了genAI用于提高软件开发团队效率和生产力的爆炸性增长。但尽管在生产可用软件方面很出错,但张警告说,genAI的输出尚未准备好生产,甚至还没有准备好创建公民开发人员劳动力。开发人员和工程师在试行其使用时仍将面临一些问题,包括安全问题、知识产权问题和恶意软件的威胁。

从事IT工作的女性

  嘉吉米尼工程公司首席软件官JIANI ZHANG

  也就是说,张已经接受了人工智能生成的软件工具来执行一些低风险的任务,这为她的团队创造了显著的效率。Computerworld与张谈论了Capgemini Engineering对人工智能的使用;以下是那次采访的摘录。

  你在Capgemini的责任是什么?“我照顾产品中的软件。该软件非常普遍,您实际上需要不同类别的软件和不同的开发方式。而且,你可以想象,现在在移动软件[出门]方面有巨大的推动力。”

  您使用人工智能生成软件的旅程是如何开始的?“最初,我们考虑的是生成性人工智能,重点关注某种创造性元素。因此,很多人都在谈论构建软件、写故事、构建网站、生成图片和创造一般新事物。如果你能生成图片,为什么你不能生成代码?如果你能写故事,为什么不写用户故事或构建软件的要求。这就是正在发生的转变的心态,我认为现实是它是市场驱动的动态的结合。每个人都在走向想要建立数字业务。您现在正在有效地与许多科技公司竞争,以聘请开发人员来构建这些新的数字平台。

  “因此,许多公司都在想,'例如,我不能雇佣湾区的这些大型科技公司。那么,我该怎么办呢?他们转向人工智能......来处理[他们]没有人才库或资源来实际构建这些数字事物的事实。这就是为什么我认为现在只是一场完美的风暴。缺乏资源,人们真的想建立数字业务,突然间,使用生成性人工智能生成代码的想法实际上可以弥补人才的缺乏。因此,[他们]可以推进这些项目。我认为这就是为什么如此强调[genAI软件增强]并希望朝着这个方向发展的原因。”

  您是如何使用人工智能来提高软件开发和工程效率的?“我会把软件开发生命周期几乎分阶段进行。有一个预编码阶段。这是您编写需求的阶段。你正在生成用户故事,你创造了史诗。您的团队对他们将在这个地区建造什么进行了大量规划。我们可以看到生成性人工智能具有附加优势,只是为您生成一个故事。您可以使用它生成需求。所以,它帮助你写东西,这就是生成人工智能擅长做的事情,对吗?你可以给它一些你想去哪里的提示,它可以为你生成这些故事。

  “第二个元素是[软件]构建阶段,即编码。这是人们对此非常紧张的阶段,这是有充分理由的,因为生成人工智能的代码生成方面仍然几乎有点像巫术。我们不太确定它是如何生成的。然后有很多关于安全的担忧,比如这是从哪里产生的?因为,正如我们所知,人工智能仍在从其他东西中学习。你必须问[是否]我生成的代码会被其他人使用?因此,人们对使用它很感兴趣,但对实际做它的生成方面却有很多犹豫。

  “然后你有后编码阶段,从部署到测试,等等。对于那个阶段,我认为不仅有生成性人工智能,而且一般人工智能也有很多机会,这都集中在智能测试上。那么,例如,你如何生成正确的测试用例?你怎么知道你在测试正确的事情?我们经常从许多客户那里看到,多年来,他们只是为该阶段添加了越来越多的测试,因此它变得越来越大。但是,实际上没有人进去清理那个阶段。所以,你正在进行无数次测试。然后你仍然有一堆缺陷,因为没有人真正清理他们试图检测的缺陷测试。因此,其中许多使用生成的人工智能来更好地策划。具体来说,它可以执行大量的测试优先级。您可以查看正在使用和未使用的测试模式。而且,人们不太担心出了什么问题。我认为人工智能工具在该领域产生了非常大的影响。

  “你可以看到人工智能在不同领域扮演着不同的角色。我认为前部的风险更小,更容易做。也许它不像整个代码生成元素那样多,但同样,对生成的代码感到满意,对此犹豫不决。”

  在使用AI代码生成工具之前,确保您现有的代码库是干净的或没有错误的有多重要?“我认为这取决于你从什么开始。使用任何类型的人工智能技术,您都是从某种结构,某种数据开始的。你有一些带标签的数据,你有一些未带标签的数据,人工智能引擎只是试图确定模式和概率。所以,当你说你想生成代码时,那么你根据什么新代码呢?

  “如果你要创建一个大型语言模型或任何类型的模型,你的起点是什么?如果您的起点只是您的代码库,那么是的,您遇到的所有残留问题都很可能会被继承,因为它正在对不良数据进行训练。想一想,你应该如何编码。很多人认为,“我不会傲慢地认为我的代码是最好的。”

  “更通用的方法是利用具有更多代码集的更大模型。但是,您拥有的代码越多,您就越深入地陷入了安全问题。比如所有这些代码从何而来?我是否在为别人更大的代码集做出贡献?真正可怕的是,如果你不太了解代码集,里面有特洛伊木马吗?所以,它有很多动态。

  “我们面临的许多客户都喜欢这些技术。这太好了,因为它声称有机会解决一个问题,即人才短缺,以便在没有这个问题的情况下真正建立数字业务。但后来他们真的受到了挑战。我相信人工智能的结果吗?我是否有足够大的代码库,我很乐意使用,而不仅仅是想象一些模型会来自以太来做到这一点。”

  您如何解决上一个问题——使用庞大的LLM代码库还是坚持使用更小、更专有的内部代码和数据?“我认为这取决于客户的敏感性。我认为很多人都在玩代码生成元素。我认为他们中的很多人没有将[AI]代码生成投入生产,因为正如我所说,该领域有如此多的未知数。

  “我们发现,更多的客户已经发现了更多的预编码阶段,他们也非常关注后码阶段,因为两者的风险都相对较低,收益很大,特别是在类似测试领域,因为这是一个非常众所周知的做法。里面有这么多数据,你可以快速清理它,并获得一些价值。所以,我认为这是一种悬挂很低的水果。然后在前端,你知道很多人不喜欢写用户故事,或者要求写得不好,因此可以减少的工作量是有意义的。”

  您在genAI代码生成时遇到了什么问题?“虽然它是最高值[等式的一部分]......,但它也是关于生成一致的代码。但这就是问题所在。因为生成性人工智能不是规范性的。所以,当你告诉它时,'我想要两只耳朵和一条摇摇的尾巴,它实际上不会每次都给你一只拉布拉多猎犬。有时它会给你一个哈士奇。它只是在看什么适合那个[LLM]。所以......当你更改一个参数时,它可以生成全新的代码。然后,全新的代码意味着您必须重做所有集成、部署以及所有由它产生的东西。

  “还有一种情况是,即使您能够包含您的代码集,构建具有高度策划的、良好的工程实践[和]软件实践的LLM,并用您自己的数据集进行补充——并生成您信任的代码——您仍然无法控制每次更改时生成的代码是否是相同的代码。我认为该行业仍在努力弄清楚这些元素,精炼和重新精炼,看看你如何保持一致性。”

  你最喜欢的人工智能代码增强平台是什么?“我认为这是多种多样的。我认为这个市场的挑战在于它非常动态;他们不断添加新功能集,新功能集相互重叠。因此,很难确定哪一个是最好的。我认为现在有一些正在引领,但与此同时,环境的动态[是],你可以看到在未来八周内引入的全新的东西。所以,它非常多样。我不会说现在有最爱。我认为在这一点上,每个人都在学习。”

  您如何处理genAI引入的代码错误?您使用什么工具来发现和纠正这些错误(如果有的话)?“我认为这会进入你的测试问题。正如我所说,从根本上讲,我们必须考虑到一个一致性问题,因为每次我们生成代码时,它都可能以不同的方式生成。完善您的测试集并将其用作智能测试方式,是确保您抓住这些问题的真正关键领域。我个人认为他们在那里,因为软件开发生命周期太广泛了。

  “这都是关于人们想要将后编码阶段的重点放在哪里。该测试阶段是实际获得任何权利的关键因素。...这是一个您可以快速利用人工智能技术并将风险引入生产代码的领域。事实上,它所做的只是改善它。[genAI]正在帮助您更聪明地运行这些测试集。然后,这些测试集也将对您生成的代码非常有利,因为现在您知道您的受众也在测试什么。

  “因此,如果生成的代码是坏的,你会在这些缺陷中抓住它。研究这个特定领域是值得付出很多努力的,因为正如我所说,这是一个低风险的元素。有很多人工智能工具可以用于此。

  “而且,并非所有东西都必须是生成的人工智能,对吗?你知道,人工智能和机器学习[]已经在这里呆了相当长一段时间,已经做了很多工作来完善[它们]。因此,这些旧工具有很多好处和改进。市场有这种感觉,他们需要采用人工智能,但人工智能的采用并不是最顺利的。然后[开发人员]在说。“让我们跳过,让我们开始使用生成性人工智能。”现实是,你实际上可以基于12个月前才上市的技术来修复很多这些东西。我认为这肯定有好处。”

  你尝试过哪些生成性人工智能工具,你看到了什么样的成功?“我们几乎都试过了。这是简短的答案。它们都非常有益。我认为现实是,正如我之前所说,当今genAI工具的格局在不同云服务提供商之间具有相当的可比性。我不认为一个领先者和一个非领先的。我觉得他们都能做一件相当好的事情。

  “我认为挑战是与可用的东西保持同步,因为他们不断发布新功能。这是令人鼓舞的,但同时你必须找到一种方法,以有意义的方式实施和使用该技术。在这一点上,他们推出这些功能的速度与行业采用的速度是很快的。我认为比实际采用的功能要多得多。

  “我们有Capgemini研究所,通过该研究所,我们与高管进行了大量民意调查,我们发现大约30%的组织正在试验genAI。在接下来的12个月里,可能还有42%的人会玩它。但这也意味着,从采用的角度来看,那些在软件工程中实际使用它的人,我认为只有不到三分之一真正从根本上影响他们与发电机的生产流程。因此,我认为市场仍处于实验阶段。这就是为什么所有工具在它能做什么和不能做什么方面都非常可比。

  “再说一遍,这并不是关于一个平台的功能集是否比另一个平台更大。我认为它更多的是将其应用于解决产生影响的业务问题。”

  您是否使用人工智能或生成性人工智能进行任何软件开发?暂时忘记开发前和后开发。你真的用它来生成你使用的代码吗?“我们愿意。即使对我们来说,它也处于实验阶段。但我们自己在改进生成性人工智能引擎方面投入了大量工作,以便我们能够生成一致的代码。我们实际上已经在这三个阶段(预代码建模、代码开发、后代码测试)与客户进行了相当多的实验和概念验证。就像我说的,前期和后期比较容易,因为风险较小。

  “现在,客户端是否足够舒适,以便[AI]生成的代码进入生产,情况就不同了。因此,我们正在做的概念证明不一定是生产。我认为......将其投入生产仍然是行业在接受方面必须努力完成的事情。”

  您的人工智能工具生成的代码有多准确?或者,换句话说,该代码多久可用一次?我从其他专家那里听说,准确率从50%到80%不等,甚至更高。你发现了什么?“老实说,我认为代码非常可用。我认为它实际上是一个相当高的百分比,因为生成的代码没有错。我认为生成的代码的问题不在于它是否写得正确。我认为它写得正确。正如我所说,问题在于代码是如何生成的,其中是否存在一些人们不知道的先天或嵌入式缺陷。然后你知道另一个问题是,生成的代码来自哪里,以及您创建的生成的代码现在是否提供更大的池,这安全吗?

  “所以想象一下,如果我是一家工业公司,我想创建这个解决方案,我生成一些代码[其基础]来自我的竞争对手。我怎么知道这是我的IP还是他们的IP?或者,如果我创建了它,它是否以某种方式通过以太迁移到其他人生成完全相同的代码?因此,从这个意义上说,除非你有一个非常私有化的genAI系统,否则它会变得非常棘手。”

  即使代码本身因任何原因无法使用,人工智能生成的代码仍然有用吗?“这是真的。有很多代码在开始时可能无法使用。就像任何学习系统一样,你需要给它更多的提示,以便根据你的需要来定制它。因此,如果你考虑基本工程,你首先要定义一些整数。如果genAI可以做到这一点,您现在已经节省了一些时间,不必输入所有定义的参数和整数参数以及所有这些东西,因为这些都可以预先生成。

  “如果它不起作用,你可以给它一个额外的提示,说,'好吧,实际上我正在寻找一组不同的周期或不同类型的运行时间',然后你也可以调整该代码。因此,而不是你从头开始,就像写论文一样,你可以让别人写一个大纲,你总是可以使用一些介绍,结尾,其中一些不是内容的实际内容。你也可以继续用生成的人工智能来完善内容的肉。所以肯定的,这帮了大忙。它节省了您从头开始写它的时间。”

  AI或genAI是否允许您创建公民开发人员劳动力?“我认为现在还为时过早。人工智能允许您自己的团队更快地完成一些他们不一定想做的事情,或者从开发人员生成测试用例或编写用户故事等角度来减少劳作。它非常擅长从框架角度生成代码大纲。但要独立生成代码,我认为我们仍然相对早期。”

  人工智能代码生成在提高效率和提高生产力方面有多有效?“生产力,绝对的。我认为这是开发人员体验中一个非常强大的元素。概念是,如果你雇佣一些真正优秀的软件开发人员,他们想构建功能、新代码和类似的东西,他们不喜欢做更多的预代码责任。因此,如果你能为他们解决更多的辛劳,摆脱更多平凡的重复性的事情,那么他们就可以专注于更多的价值创造元素。

  “因此,对于生产力来说,我认为这是一个很大的提升,但这不是关于开发更多的代码。我经常认为这是关于开发更好的代码。因此,与其说我一天中花了几个小时只是写一个基本结构,不如说是为我预先生成的。现在我可以考虑如何优化运行时。我如何优化消费或存储或其他什么?

  我从工程师和开发人员那里听到的其他用途之一是,genAI通常甚至不用于生成新代码,但它最常用于更新旧代码。你也看到了那个用例吗?“我认为所有genAI工具都会生成新代码,但区别在于您刚刚强调的一个非常重要的用例:旧代码迁移元素。

  我们还发现,许多客户有很多系统非常过时——他们的系统已经20年,也许30年了。里面可能有没有人再理解的专有代码,他们已经失去了那套技能。您可以使用人工智能辅助代码生成和您自己的团队来创建一个了解旧代码的知识库,这样您现在就可以摄取旧代码并了解元模型是什么——您正在尝试做什么?正确的输入和输出是什么?从那里,您实际上可以用一种实际上可以维护的新语言生成新代码。这对客户来说是一个巨大的好处。

  因此,这是人工智能技术的一个伟大应用,它仍在生成您的代码,它实际上并没有改变旧代码。您不希望它更改旧代码,因为它仍然无法管理。因此,您想要的是让它了解您试图做的事情的概念,以便您可以实际生成更易于维护的新代码。

  对于那些正在考虑使用人工智能生成代码的人来说,你还有其他提示吗?“我认为这是一段美好的时光,因为这项技术超级令人兴奋。人们有很多不同的选择可以玩,我认为有很多低垂的水果。我觉得生成性人工智能也是一个巨大的好处,因为它向人们介绍或重新引入了人工智能实际上是可以实现的。

  很多人认为人工智能就像金字塔技术的顶端。他们认为,我会到达那里,但前提是我清理了所有数据,并正确提取了所有数据。然后,如果我完成所有这些步骤,我就可以使用人工智能。但通用人工智能的普遍性和吸引力在于,它甚至在此之前就可以实现。

  在软件开发的各个阶段,现在有很多低风险领域可以尝试使用人工智能。它不仅能提升工作效率,还能为项目带来更大价值。人工智能虽不能完全取代开发者,但可作为增强团队能力的工具,减轻开发者负担,让其更专注于创新和解决复杂问题。现在是引入人工智能到软件开发的好时机,其潜力值得进一步挖掘。

0
相关文章