存根 ChatDev:软件开发的通信代理 - Unite.AI
关注我们.

人工智能

ChatDev:软件开发的通信代理

mm
更新 on
ChatDev:人工智能辅助软件开发

软件开发行业是一个经常依赖咨询和直觉的领域,其特点是复杂的决策策略。 此外,软件的开发、维护和操作需要有纪律和有条理的方法。 软件开发人员通常根据问题的复杂性根据直觉而不是咨询来做出决策。 为了提高软件工程的效率,包括软件的有效性和降低开发成本,科学家们正在探索使用基于深度学习的框架来解决软件开发过程中的各种任务。 随着深度学习和人工智能领域的最新发展和进步,开发人员正在寻找改变软件开发流程和实践的方法。 他们通过使用在软件开发过程的不同阶段实施的复杂设计来做到这一点。

今天,我们将讨论 ChatDev,这是一种基于大型语言模型 (LLM) 的创新方法,旨在彻底改变软件开发领域。 该范例旨在消除开发过程每个阶段对专用模型的需求。 ChatDev 框架利用 LLM 框架的功能,利用自然语言通信来统一和简化关键软件开发流程。

在本文中,我们将探讨 ChatDev,这是一家专门从事软件开发的虚拟公司。 ChatDev采用瀑布模型,将软件开发过程精心划分为四个主要阶段。

  1. 设计。 
  2. 编码。 
  3. 测试。 
  4. 文档。 

每个阶段都会部署一个虚拟代理团队,例如代码程序员或测试人员,他们使用对话相互协作,从而形成无缝的工作流程。 聊天链充当促进者的角色,将开发过程的每个阶段分解为原子子任务,从而实现双重角色,允许使用上下文感知通信来提议和验证解决方案,从而使开发人员能够有效地解决指定的子任务。 

ChatDev:人工智能辅助软件开发

ChatDev 的仪器分析表明,ChatDev 框架不仅在完成软件开发过程方面极其有效,而且极具成本效益,并且只需不到一美元即可完成整个软件开发过程。 此外,该框架不仅可以识别,还可以减轻潜在的漏洞,纠正潜在的幻觉,同时保持高效率和成本效益。 

ChatDev:LLM 支持的软件开发简介

传统上,软件开发行业是建立在纪律严明、有条不紊的方法基础上的,不仅用于开发应用程序,而且还用于维护和操作它们。 传统上讲,典型的软件开发过程是一个高度复杂、复杂、耗时、周期长的过程,因为开发过程中涉及多个角色,包括组织内部的协调、任务的分配、代码的编写、测试,最后是文档。 

近几年来,在大家的帮助下 LLM 或大型语言模型人工智能社区在计算机视觉和自然语言处理领域取得了重要的里程碑,并且在“下一个单词预测”范式的培训之后,大型语言模型已经很好地证明了它们在各种下游任务上返回高效性能的能力例如机器翻译、问答和代码生成。 

尽管大型语言模型可以为整个软件编写代码,但它们有一个主要缺点: 代码幻觉,这与自然语言处理框架面临的幻觉非常相似。 代码幻觉可能包括未发现的错误、缺少依赖项和不完整的函数实现等问题。 代码幻觉有两个主要原因。 

  • 缺乏任务规范: 当一步生成软件代码时,没有定义任务的具体内容会使法学硕士混淆为软件开发过程中的任务,例如分析用户需求或选择首选编程语言通常会提供指导性思维,而这是高级软件开发中所缺少的东西由这些法学硕士处理的级别任务。 
  • 缺乏交叉询问 : 如果不进行交叉询问,尤其是在决策过程中,就会出现重大风险。 

ChatDev 旨在解决这些问题,并通过创建一个虚拟驱动的软件开发公司,建立瀑布模型,并将软件开发过程精心划分为四个主要部分,帮助法学硕士有能力创建最先进的、有效的软件应用程序。阶段,

  1. 设计。 
  2. 编码。 
  3. 测试。 
  4. 文档。 

每个阶段都会部署一个虚拟代理团队,例如代码程序员或测试人员,他们使用对话相互协作,从而形成无缝的工作流程。 此外,ChatDev 利用聊天链作为促进者,并将开发过程的每个阶段分解为原子子任务,从而实现双重角色,允许使用上下文感知通信来提议和验证解决方案,从而使开发人员能够有效地解决指定的子任务。 聊天链由多个节点组成,其中每个节点代表一个特定的子任务,这两个角色参与多轮上下文感知讨论,不仅提出解决方案,还验证解决方案。 

在这种方法中,ChatDev 框架首先分析客户的需求,产生创意,设计和实现原型系统,识别和解决潜在问题,创建吸引人的图形,解释调试信息,并生成用户手册。 最后,ChatDev 框架将软件连同源代码、用户手册和依赖环境规范一起交付给用户。 

ChatDev:架构和工作

现在我们对 ChatDev 有了简单的介绍,让我们从聊天链开始看一下 ChatDev 框架的架构和工作原理。 

聊天链

正如我们在上一节中提到的,ChatDev框架使用瀑布方法进行软件开发,将软件开发过程分为四个阶段,包括设计、编码、测试和文档。 每个阶段在开发过程中都有独特的作用,它们之间需要有效的沟通,并且在确定要参与的个人并确定互动的顺序时面临潜在的挑战。 

为了解决这个问题,ChatDev 框架使用了 Chat Chain,这是一种通用架构,它将每个阶段分解为亚原子聊天,每个阶段都专注于涉及双重角色的面向任务的角色扮演。 所需的聊天输出构成了目标软件的重要组成部分,它是通过参与开发过程的代理之间的协作和指令交换来实现的。 下图说明了用于解决中间任务的聊天链范例。 

每次单独聊天,导师都会先发起指令,然后引导对话完成任务,同时助手们按照导师的指示,提出理想的解决方案,并讨论可行性的解决方案。 然后指导员和代理人进行多轮对话,直到达成共识,并认为任务成功完成。 链链为用户提供了开发过程的透明视图,揭示了决策路径,并提供了出现错误时调试的机会,允许最终用户分析和诊断错误,检查中间输出,并在认为有必要时干预该过程。 通过合并聊天链,ChatDev 框架能够在粒度上专注于每个特定的子任务,这不仅促进代理之间的有效协作,而且还可以快速获得所需的输出。 

设计

在设计阶段,ChatDev 框架需要来自人类客户端的初始想法作为输入,并且此阶段存在三个预定义的角色。 

  1. 首席执行官或首席执行官。 
  2. CPO 或首席产品官。 
  3. CTO 或首席技术官。 

然后聊天链开始发挥作用,将设计阶段划分为连续的亚原子聊天任务,其中包括编程语言(CTO 和 CEO)以及目标软件的模式(CPO 和 CEO)。 设计阶段涉及三个关键机制:角色分配或角色专业化、记忆流和自我反思。 

角色分配

在角色扮演过程中,聊天开发框架中的每个代理都会使用特殊消息或特殊提示来分配一个角色。 与其他对话语言模型不同,ChatDev 框架仅限于启动代理之间的角色扮演场景。 这些提示用于在对话之前为代理分配角色。 

最初,讲师承担 CEO 的职责,并参与交互式计划,而 CPO 的职责则由执行任务的代理来处理,并提供所需的响应。 该框架使用“启动提示”角色专业化,使代理能够有效地履行其职责。 助理和讲师提示包含有关指定角色和任务、终止标准、通信协议以及旨在防止不良行为(例如无限循环、无信息响应和指令冗余)的若干约束的重要细节。 

内存流

内存流是 ChatDev 框架使用的一种机制,它维护代理先前对话的全面对话记录,并以话语感知的方式协助后续的决策过程。 ChatDev 框架使用提示来建立所需的通信协议。 例如,当相关各方达成共识时,会出现一条满足特定格式要求的结束消息,例如( :桌面应用程序”)。 为了确保符合指定的格式,框架会持续监控,并最终让当前的对话得出结论。 

自我反思

ChatDev框架的开发人员观察到这样的情况:双方达成了共识,但未触发预定义的通信协议。 为了解决这些问题, ChatDev框架引入了自我反思机制 这有助于检索和提取记忆。 为了实现自我反思机制,ChatDev 框架通过招募“伪自我”作为新的提问者来发起新的聊天。 “伪自我”分析之前的对话和历史记录,并通知当前助手,随后它要求总结结论性且有价值的信息,如下图所示。 

在自助机制的帮助下,鼓励ChatDev助理反思和分析其提出的决策。 

编码

编码阶段有三个预定义的角色,即 CTO、程序员和美术设计师。像往常一样,聊天链机制将编码阶段划分为单独的亚原子任务,例如生成代码(程序员和 CTO)或设计 GUI或图形用户界面(程序员和设计师)。 然后,CTO 指示程序员使用 Markdown 格式来实现软件系统,随后美术设计师提出用户友好的交互式 GUI,利用图形图标与用户交互,而不是依赖传统的基于文本的命令。 

代码管理

ChatDev 框架使用 Python、Java 和 C++ 等面向对象的编程语言来处理复杂的软件系统,因为这些编程语言的模块化允许使用独立的对象,这些对象不仅有助于故障排除,而且还有助于协作开发,并且还通过继承的概念重用对象来帮助消除冗余。 

思想指导

传统的问答方法通常会导致不相关的信息或不准确,尤其是在生成代码时,因为提供简单的指令可能会导致 LLM 幻觉,并且可能成为一个具有挑战性的问题。 为了解决这个问题,ChatDev框架引入了“思维指令”机制,该机制从思维链提示中汲取灵感。 “思想指令”机制明确地解决了指令中包含的个人解决问题的想法,类似于以顺序和有组织的方式解决任务。 

测试

在第一次尝试中编写无错误的代码不仅对于 法学硕士,而且对于人类程序员来说,程序员不是完全丢弃不正确的代码,而是分析他们的代码以识别错误并纠正它们。 ChatDev框架中的测试阶段分为三个角色:程序员、测试员和评审员。 测试过程进一步分为两个连续的亚原子任务: 同行评审或静态调试 (审阅者和程序员),以及 系统测试或动态调试 (程序员和测试员)。 静态调试或同行评审分析源代码以识别错误,而动态调试或系统测试则通过程序员使用解释器进行的各种测试来验证软件的执行情况。 动态调试主要侧重于评估应用程序的黑盒测试。 

配套文档

ChatDev 框架完成设计、编码和测试阶段后,它会雇用四个代理,即 CEO、CTO、CPO 和程序员来生成软件项目的文档。 ChatDev 框架使用 LLM 来利用带有上下文示例的少量提示来生成文档。 CTO指示程序员提供环境依赖配置的说明,并创建一个类似“依赖需求.txt”的文档。 同时,需求和系统设计由CEO传达给CPO,以生成产品的用户手册。 

成果

软件统计

为了分析ChatDev框架的性能, 开发团队根据一些关键指标(包括消耗的代币、对话总数、图像资产、软件文件、版本更新等)对框架生成的软件应用程序进行了统计分析,结果为如下表所示。 

持续时间分析

为了考察ChatDev针对不同请求提示的软件生产时间,开发人员还进行了持续时间分析,不同提示的开发时间差异反映了所分配任务的清晰度和复杂性的不同,结果如下图所示。 

案例研究

下图演示了 ChatDev 开发五连棋或五子棋游戏。 

最左边的图演示了该框架在不使用任何 GUI 的情况下创建的基本软件。 可以清楚地看到,没有任何 GUI 的应用程序提供的交互性有限,用户只能通过命令终端来玩这个游戏。 下图展示了使用 GUI 创建的更具视觉吸引力的游戏,它提供了更好的用户体验,并增强了交互性,使用户可以更多地享受引人入胜的游戏环境。 然后,设计师代理创建额外的图形,以进一步增强游戏玩法的可用性和美观性,而不影响任何功能。 但是,如果人类用户对设计者生成的图像不满意,他们可以在 ChatDev 框架完成软件后替换图像。 ChatDev 框架提供手动替换图像的灵活性,允许用户根据自己的喜好自定义应用程序,以增强交互性和用户体验,而不会以任何方式影响软件的功能。 

最后的思考

在这篇文章中,我们讨论了 ChatDev,一个 LLM 或大型语言模型 基于创新范式,旨在通过消除开发过程每个阶段对专用模型的需求来彻底改变软件开发领域。 ChatDev 框架旨在通过使用自然语言通信来统一和简化关键软件开发流程,从而利用 LLM 框架的功能。 ChatDev 框架使用聊天链机制将软件开发过程分解为顺序的亚原子任务,从而实现粒度集中,并促进每个亚原子任务的所需输出。 

“职业工程师,心灵作家”。 Kunal 是一位技术作家,对人工智能和机器学习有着深厚的热爱和理解,致力于通过他引人入胜且信息丰富的文档来简化这些领域的复杂概念。