AI Agent将给软件工程带来哪些新机遇与挑战?

文摘   科技   2024-11-25 07:30   浙江  

作者|沙丘智库研究团队

来源|沙丘社区(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可以增强开发人员的体验

开发者体验对于开发人员来说至关重要,直接影响开发人员的满意度和忠诚度,从而影响软件工程的效率和质量。AI Agent可以通过改善开发人员旅程和优化创造性工作来增强开发者体验。
一方面,AI Agent可以改善开发人员旅程:
· 简化新员工入职体验:以自动化文档为例,技术写作Agent可以自动创建和更新全面的技术文档,包括API参考资料、系统架构和使用示例。这些技术文档对于帮助新入职的开发人员快速了解项目至关重要。
· 自助式DevOps工作流:以自动化部署和监控为例,AI Agent可以管理部署管道,自动处理故障回滚并持续监控应用性能,这将减少开发人员和DevOps工程师的人工工作量。
· 加速反馈回路:以CI/CD为例,AI Agent可识别CI/CD流程中的低效环节,如冗长的构建时间或不稳定的测试,并提出改进建议,快速提供代码变更反馈,从而加快迭代速度。
另一方面,AI Agent可以优化创造性工作:
· 有时间专注于深度工作:以任务自动化为例,AI Agent可以执行格式化代码、合并拉取请求和运行常规测试等重复性任务,从而让开发人员能够专注于项目中更具挑战性和创造性的工作。
· 协作式工作环境:以知识共享为例,AI Agent可以从一个集中的资源库中整理和共享相关的代码片段、文档和最佳实践,使团队成员更轻松地获取所需的信息并不断学习。
· 自动完成重复性任务:以自动化测试为例,从单元测试到集成测试,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的供应链风险。

更多研究:

2024中国人工智能编码助手市场指南
2024中国AI驱动的智能测试工具市场指南
中国工商银行智能研发体系建设实践
中国邮储银行研发测试大模型实践
...


*更多生成式AI研究可前往“沙丘智库”小程序查阅

*有任何需求可咨询客服微信:zimu738




沙丘社区
数字化研究与服务机构
 最新文章