作者|沙丘智库研究团队
来源|沙丘社区(www.shaqiu.cn)
以下内容节选自沙丘智库《AI Agent将给软件工程带来哪些新机遇与挑战?》:
随着人工智能技术的飞速发展,大模型正在成为推动软件行业进步的重要力量。
大模型驱动的软件工程将经历三个阶段的发展:
第一阶段,大模型作为助手辅助人完成任务;
第二阶段,将某些任务拆分出来由大模型独立完成,大模型以单Agent的方式与人配合;
第三阶段,大模型以Multi-Agents的方式进行协同,与人协同共生,人的作用更多是提出需求、验证结果,大量的开发、验证、测试、与业务系统的交流等工作由Agent深度参与。
当前,大模型驱动的软件工程正处于第一阶段(即Copilot阶段),开发人员正在使用编码助手、测试助手等工具作为Copilot辅助执行开发测试任务。
市场上已经出现了一些AI Agent产品,国外包括Cognition Labs的Devin、普林斯顿NLP实验室推出的开源SWE-Agent等,国内阿里巴巴通义灵码也正在打造单库问答 Agent(基于单库RAG技术,以及固定步骤实现对单库范围内的简单编码任务)。但这些AI Agent产品仍存在技术上的局限性,且尚未在应用中得到验证。
随着AI Agent能力的不断提高,预计在不久之后,开发人员将能够把更多简单重复的任务交由AI Agent自主完成。
01
AI Agent可以增强开发人员的体验
02
AI Agent可提升业务价值
AI Agent的影响将超越开发人员,使企业能够以同样的人力和资源提供更多的业务价值。将AI Agent集成到软件工程工作流可以产生的业务价值包括:
· 提高效率。随着开发人员将繁琐的任务交由AI Agent独立完成,人类员工可以更快地交付创新的软件产品,缩短产品上市时间可为企业带来竞争优势;
· 提高质量。随着AI Agent自主优化代码、检测错误和自动测试,开发人员可以交付更可靠、更安全的软件,这种可靠性对于保持客户信任和满意度至关重要;
· 为数据驱动型决策提供信息。AI Agent可以提供有助于优化资源分配的预测分析和洞察力,使企业更加灵活,进一步增强竞争力。
以上这些价值都可以直接转化为企业的成本节约或更高的盈利能力。
当在工作流中使用multi-agent时,业务价值将进一步提升。在multi-agent工作流中,每个AI Agent都参与特定的任务,如系统设计、代码开发、代码审查、代码验证或测试工程。以自动化生成代码的理想multi-agent工作流为例:
Agent 1由大模型驱动,主要负责代码生成和代码优化两种任务:
· 在代码生成阶段,人类开发人员会要求Agent 1生成代码片段,完成特定任务;
· Agent 1采用思维链方式模拟典型的编码过程,将任务分解为更小、更易于管理的步骤。思维链过程包含四个步骤,第一,问题理解和澄清;第二,算法和方法选择;第三,创建伪代码;第四,代码生成;
· Agent 1生成的代码片段可能不正确,包含各种类型的错误(如语法和运行错误),导致负责测试设计的Agent提供的测试用例失败。在这种情况下,Agent 1会根据其他Agent的反馈意见,优化代码片段;
· 优化过程会持续进行,Agent 1会根据其他Agent的反馈不断优化代码,直到代码成功通过所有测试用例。
Agent 2也由大模型驱动,目标是测试代码,并向Agent 1提供可靠的反馈,以支持优化代码。Agent 2主要的任务包括生成基本测试用例、覆盖边缘测试用例、覆盖大规模输入。
Agent3 通过代码脚本与本地环境和其他两个Agent交互实现。Agent 3在代码生成过程的最后阶段发挥着关键作用:
· 在收到Agent 1生成的代码片段和Agent 2生成的测试用例后,Agent 3在本地环境中验证这些代码片段和测试用例;
· Agent 3密切监控来自执行环境(即终端)的返回信息,包括分析输出并确定代码片段是否成功通过所有测试用例。如果所有测试用例都通过了,Agent 3就会将代码返回给人类开发人员。
虽然AI Agent可以提高软件交付和开发质量,但这些Agent通常只能执行简单的逻辑,它们提供的信息可能并不详细或全面。如果没有明确、详细的要求,Agent很难自主设计任务的执行思路。目前,AI Agent更适合原型系统,而非复杂的现实世界应用。
03
AI Agent将带来新的挑战和风险
随着越来越多的企业采用AI Agent,将面临两大挑战:
· 开发新的技能:培养开发人员的AI原生思维,包括使用AI工具和技术来提高生产率、自动化日常任务,以及专注于战略性、高层次问题的解决和创新;
· 降低安全风险:采取行动以应对AI Agent带来的安全威胁。
(1)开发人员需要学习新的技能
随着AI技术的发展,AI Agent将能够自动执行越来越多的常规软件工程任务,比如编码、测试等。如果开发人员继续依赖手动编码和传统的测试方法,他们可能会发现自己的专业技能变得不再适用,因为这些工作可以被AI Agent更高效地完成。
AI Agent不会取代人类开发人员,但学会如何与AI Agent协作的开发人员将取代不会协作的开发人员。为了避免因为技术进步而失去工作并保持在就业市场的竞争力,开发人员必须通过学习新技能和适应新技术来更新自己的技能集。
(2)开发人员需要缓解新的安全威胁
AI Agent发起和参与的所有事件和交互构成了一个威胁面,这个威胁面可能对人类或系统操作者来说是不可见的。威胁面的扩大使得监控和保护AI Agent变得更加困难,增加了意外漏洞和安全漏洞的潜在风险。开发人员需要缓解AI Agent带来的新的安全威胁,包括:
· 数据泄露:AI Agent参与的所有环节都可能暴露或泄露数据;
· 系统资源过度消耗:Agent执行和交互可能导致系统资源的过度消耗,从而引发服务拒绝或经济损失;
· 未经授权或恶意的活动:由故意或错误引导的AI Agent执行的未经授权或恶意的活动;
· 安全漏洞:AI Agent未经授权、无意或恶意的编码逻辑错误导致的安全漏洞;
· 供应链风险:使用从第三方网站下载的库或代码用于Agent的供应链风险。
更多研究:
*更多生成式AI研究可前往“沙丘智库”小程序查阅
*有任何需求可咨询客服微信:zimu738