大模型驱动软件开发的一些误区和思考
内容提要
本文是作者在SDCon 2024全球软件研发技术大会上的主题演讲的节选,讨论了大模型对软件开发智能化的影响。作者指出了大模型在企业级项目中的不足和代码领域的训练不足等误区,并提出了关注抽象能力、演化能力、协作能力和工具能力等核心能力。最后,作者列举了十个基础建设方面的重要方向,希望能给读者带来启发。
延伸解读
企业级项目中的大模型局限
文章指出,当前代码大模型主要基于GitHub等开源代码训练,这些是经过验证的“结果数据”,缺乏软件开发的过程数据。因此,在企业级项目中,模型表现往往不如预期。这提醒我们,仅靠结果数据训练不足以让模型理解真实开发中的决策、调试和协作过程。要提升实用性,需引入过程数据,如开发者的活动记录和上下文信息。
抽象能力:大模型的短板
大模型在类型实现、函数实现等低抽象任务上表现良好,但在设计模式、架构设计等高抽象任务上较弱。文章建议向模型导入高抽象任务的方法论、原则和最佳实践,如设计图和文档,以提升其System 2能力。这意味着,在智能化开发中,人类专家的抽象经验仍不可或缺,需与模型能力结合。
动态性与演化:智能开发的迭代本质
软件系统具有动态性,需求、环境和组织不断变化,因此追求一步到位的智能开发不现实。文章认为,智能是迭代试错的过程,大模型时代敏捷开发将从“组织敏捷”变为“模型敏捷”,迭代周期可能缩短至天或小时。同时,需用过程数据训练模型,如Google DIDACT所示,让模型学习开发活动的动态性。
协作与工具:智能体时代的新范式
在复杂软件系统中,协作性至关重要。文章提出“智能康威定律”:智能体的协作沟通架构决定系统设计架构。此外,工具能力用于解决混沌系统中的确定性问题,需与大模型融合,通过Agent实现工具调用。这提示我们,未来软件开发需设计多智能体协作架构,并融合确定性工具,以发挥大模型的潜力。
Q&A
大模型在软件开发中存在哪些误区?
大模型在软件开发中存在几个误区,包括对企业级项目表现的过高期望、缺乏动态性训练、追求一步到位的智能开发以及对超级模型的误解。
如何提升大模型在软件开发中的抽象能力?
提升大模型的抽象能力需要导入高抽象任务的最佳实践和方法论,包括设计图和设计文档,以增强其System 2能力。
大模型如何应对软件开发的动态性?
大模型应对软件开发的动态性需要训练更多的过程数据,以帮助模型理解软件开发中的变化和演化。
智能软件开发的核心能力有哪些?
智能软件开发的核心能力包括抽象能力、演化能力、协作能力和工具能力。
大模型在软件开发中的协作性如何体现?
大模型在软件开发中的协作性体现在智能体之间的协作,遵循新的“智能康威定律”,即智能体的协作沟通架构决定系统设计架构。
提升软件开发智能化水平需要关注哪些基础建设?
提升软件开发智能化水平需要关注扩展定律、上下文窗口、长期记忆、System 2提升等十个基础建设方向。