在本教程中,我们演示如何使用 ChatDev 框架 构建协作式 AI 系统,并深入了解基于角色的智能体通信结构 ChatChain。ChatDev 使用具有分配角色的 AI 智能体来模拟虚拟软件公司。每个智能体都遵循基于软件开发生命周期各个阶段的工作流,通过结构化通信与其他智能体进行协作。
为了支持这些智能体,我们集成了 IBM watsonx.ai 应用程序编程接口 (API) 作为模型后端。利用 watsonx.ai 与 Hugging Face 的集成,我们配置该框架,使用 Llama-4-Maverick 来生成简单的软件解决方案。此示例可作为探索 ChatChain 和其他内部智能体通信机制的基础,这些机制可在整个工作流中指导智能体行为和决策。
在本教程结束时,您应该可以获得设置和运行 ChatDev 的体验,并更清晰地了解智能体通信协议如何实现有效且可靠的多智能体协作。
协作式 AI :旨在与人类或 AI 智能体并肩工作的人工智能系统,通常使用深度学习或其他先进技术来实现合作、共享决策和联合解决问题,以实现共同目标。
多智能体协作: 多个自主智能体通过分享信息并协调行动以实现共同目标。这些智能体可能具有不同水平的知识、功能和观点,他们的协作通常涉及协商、规划和协调行动。
角色扮演智能体:AI 智能体模拟特定的角色或人物,以目标驱动的方式进行交互和协作。这些角色可以反映现实世界的职业或人物,从而实现更多情境感知和目标驱动的交互。
智能体通信协议: 定义 AI 智能体通过交换结构化数据消息相互交互的标准或框架。这些协议规定了多智能体系统中智能体之间协调通信的格式、语义和规则。
ChatDev 是协作式 AI 基于角色的实现,其中各个智能体承担专门的角色以实现共同目标。这种设计反映了集体智能的原则,本质上是有效协作,并将 ChatDev 定位为研究和推进该领域的宝贵资源。
ChatDev 是一个开源代码多智能体框架,由 OpenBMB 开发,OpenBMB 是一个专注于推进 AI 工具和通用人工智能 (AGI) 的研究驱动计划。该框架将软件开发过程作为研究协作式 AI 智能体的实践领域。每个智能体都由大型语言模型 (LLM) 提供支持,并可根据提示担任特定的角色,例如 CEO、首席技术官、设计师、测试人员和程序员。1
从简短的描述性用户输入开始,这些智能体协作迭代设计、实施和测试完整的软件项目。每个智能体都实现为一个 Python 类,通过使用结构化的自然语言提示按顺序进行通信。这些提示遵循预定义的模板,其中包括智能体的角色、特定于任务的指令和早期交互的相关上下文。这种模板策略将角色身份和共同记忆嵌入提示本身,有助于确保连续性和一致性。
ChatDev 的专业智能体团队可根据用户的单行输入,共同生成简单的软件解决方案。
用户输入:“构建一个待办事项列表应用程序” → CEO 委托给首席技术官 → 首席技术官分配给开发人员 → 开发人员编写代码 → 测试人员进行验证
智能体交互由 ChatChain 协调,ChatChain 是 ChatDev 框架中的自定义协调逻辑。智能体之间的通信通过多轮对话或消息传递系统进行,其中智能体按顺序交换结构化 JSON 消息。这些消息代表输出和上下文更新,并充当共享内存缓冲区,允许智能体在开发阶段相互构建输出。
这种架构通过融合自然语言和编程语言,实现了一致的沟通和上下文感知协作,从而完成端到端的项目。该流程依赖于协同化多智能体通信,其内部机制通过建立专用协议来协调 AI 智能体间的有效交互,从而逐步完成各阶段任务。
用户可以使用 ChatDev 的 Visualizer 工具(一个基于 Flask 的 Web 界面,支持运行后分析和实时监控)来监控和审查工作流。 Visualizer 提供了多种模式,例如用于检查实时智能体交互的日志查看器、用于直观呈现已保存多智能体对话日志的重播查看器,以及用于检查任务协调流程的 ChatChain 查看器。该交互式界面允许用户通过本地浏览器在结构化环境中对多智能体协作进行调试、实验和研究。
本教程使用专门适用于 IBM watsonx.ai API 的 ChatDev 自定义版本。尽管核心版 ChatDev 支持多模型供应商,但本版本采用实用型“vibecoding”方法进行了改良,虽能确保基本功能运行,但尚未通过全场景的详尽测试。
主要适应性包括:
包装 IBM watsonx.ai API,以符合 ChatDev 的预期 LLM 接口。
调整提示模板,以符合 IBM watsonx.ai API 的令牌和格式要求
修改模型选择逻辑,以支持 IBM watsonx.ai 作为模型后端选项。
此实现演示了如何扩展 ChatDev,以支持其他 LLM 提供商。其他模型提供商(例如 OpenAI、Ollama)尚未使用此定制版本的 ChatDev 进行测试,需进行代码级调整。
与许多生成式 AI 工作流一样,输出可能会因运行而异。虽然智能体通常会生成连贯、结构良好的代码和文档,但最终的应用程序可能需要手动改进才能完全发挥作用。提示设计、任务复杂性和 LLM 反应固有的多变性等因素都导致了这种不可预测性。
本教程作为协作多智能体系统的实践入门指南,重点介绍智能体在 ChatDev 环境中如何进行通信与协调。它并非旨在作为生产级解决方案发布,而是作为学习、实验和深入了解 LLM 驱动的智能体协作的基础。我们感谢 ChatDev 背后的研究人员将其工作开源,使这种探索成为可能。
虽然 ChatDev 的设计是跨平台的,但用户在设置或执行过程中可能会遇到特定平台的问题。例如,Windows 上的 PowerShell 可能需要对适用于 Unix 系统的 shell 命令进行调整。操作系统、Python 版本和 CPU 架构的变化也会影响性能或行为。为确保顺利安装和可用性,用户应查阅 ChatDev 官方文档和安装指南,了解故障排除和特定环境说明。
考虑到这一点,让我们首先设置应用程序的运行环境。您可以在 GitHub 上的项目文件夹中的 markdown 文件中执行这些步骤,也可以在这里执行这些步骤。
从教程的项目目录中,使用 Python 3.11 创建虚拟环境:
这将安装项目依赖项。
该变量是为当前终端会话设置的(关闭终端将重置它们)。
尽管本教程使用 IBM watsonx.ai 作为模型后端,但 ChatDev 的底层框架最初旨在支持多个 LLM 提供程序,包括默认的 OpenAI。代码库的某些部分(例如,模型选择逻辑或共享接口)仍然引用
您可以选择运行 ChatDev 的 Visualizer,这是一个基于 Flask 的 GUI,允许您实时检查智能体日志、深入了解 ChatChain 工作流或重播已保存的智能体对话框。该工具对于调试、监控或研究智能体交互很有用,但不需要运行 ChatDev 的核心多智能体工作流。
要启动 Visualizer,首先要安装 Flask:
然后,运行该应用程序:
运行后,打开浏览器并转到:
注意: 本教程使用的 ChatDev 版本已预配置为使用 IBM watsonx.ai API 作为模型后端。要使教程正常运行,无需进行任何额外的设置或更改模型配置。虽然可定制,但修改 LLM 配置可能会导致不完整、不正确和不同的输出。
ChatDev 建立在 CAMEL 框架之上,用于管理智能体角色、任务以及与语言模型的交互。原始实现使用 OpenAI API 作为模型后端与 ChatGPT 模型(如 GPT-4)连接,并默认使用 GPT-3.5-turbo。开源代码项目还旨在通过统一的模型接口支持多个 LLM 提供者模型。
如果您计划使用默认的 IBM watsonx.ai 配置,请跳过此步骤。实验时,可以调整模型类型、参数和令牌限制,以便与 IBM watsonx.ai API 配合使用。
要尝试不同的模型类型,请更新
模型参数可在以下位置进行配置:
模型令牌限制可在以下位置进行配置:
此步骤运行核心 ChatDev 工作流。当您运行此脚本时,智能体将根据您的输入模拟协作软件开发流程。生成的代码、文档和相关工件将保存在项目的 WareHouse 目录中。您可以使用 Visualizer 检查日志或重播对话。
脚本接受以下参数:
脚本示例:
注意:虽然 ChatDev 的架构是可扩展的,但本教程版本只能在
最终软件产品保存在
典型输出可能如下所示:
由于生成式 AI 工具的概率特性,每次运行的输出可能会有所不同。
该目录包含由 AI 智能体生成的完整软件项目。除了应用程序代码和文档之外,您还会发现定义以下内容的配置文件:
智能体角色 (RoleConfig.json)
开发阶段 (PhaseConfig.json)
智能体工作流 (ChatChainConfig.json)
可以在 ChatDev 的 Visualizer 中重新显示的对话日志
要运行该应用程序,请按照
智能体互操作性是指自主智能体通过使用共享协议或标准有效理解、通信和协作的能力。这种功能对于跨任务扩展智能体 AI 系统、集成大型数据集和合作解决复杂问题至关重要。
多智能体系统通常使用智能体通信协议(ACP),该协议使用智能体通信语言(ACL) 等内部通信机制(例如 KQML 或 FIPA-ACL)为智能体到智能体通信提供标准。这些机制定义了标准的“通信行为”(例如通知、请求、查询),以在动态环境中实现结构化对话和协调。
然而,ChatDev 采用了不同的方法。它通过 ChatChain 实现智能体互操作性,而 ChatChain 是一种构建智能体协调工作流的通信机制。ChatChain 在软件开发过程的所有阶段管理智能体之间基于回合的同步信息流。虽然 ChatChain 并非基于正式的 ACL,但它通过使用 LLM 优化约定来促进类似协议的交换。
ChatDev 的智能体通信依赖于:
提示模板化:在每个阶段的开始,参与的智能体会收到一个结构化的提示,其中包含其角色、当前任务以及相关的对话历史。ChatDev 使用初始提示将此信息直接嵌入到提示中,帮助在交互过程中保持连贯性和目标一致性。
结构化消息格式 :智能体通过结构化 JSON 消息进行通信,这些消息对输出和上下文更新进行编码。这样可以在整个工作流中实现一致的数据交换和可追溯性。
角色预设:每个智能体在初始化时会收到一个提示,该提示强化其被分配的角色,包括职责、目标及行为预期——这是实现通信去幻觉化的关键战略。
这些机制共同形成了一个轻量级、可扩展的通信框架,允许 ChatDev 根据单个用户提示协作生成软件。这说明了基于 LLM 的结构化协作如何激发传统的多智能体工作流。
ChatChain 是 ChatDev 中的核心通信机制,负责协调整个软件开发工作流中的智能体交互序列。它将协作构建为一个由不同阶段组成的迭代、链式过程,每个阶段都有特定的目标和通信模式。
在每个阶段,ChatChain 都会在两个特定角色(例如首席执行官和首席技术官、程序员和评审员)的智能体之间启动双智能体对话。一个角色通常充当指导者,另一个角色充当辅导者。这些结构化的多轮交流可简化协作决策,同时保持明确界定的角色和责任。每个阶段的提示都嵌入任务指令、角色标识和相关背景,以指导交互。
ChatDev 的整体工作流遵循改进的瀑布模型,这是一种传统的软件工程方法,将任务分解为三个连续的阶段:设计、编码和测试 。编码和测试阶段进一步划分为子任务,以反映迭代开发过程。
默认情况下,ChatChain 将工作流划分为以下有序的自动步骤:
需求分析 :定义应用程序的结构和关键组件。
语言选择:决定使用哪种编程语言来构建和运行软件。
编码:智能体编写代码以构建应用程序。
CodeCompleteAll :完成代码,包括缺失的函数或类。
CodeReview:审查并修改代码功能。
测试 :运行软件并根据测试报告修改代码。
EnvironmentDoc:记录环境。
手册:记录并编写应用程序手册。
每个阶段由一个配置对象来定义,该对象指定了定义其行为和属性的属性。例如,
为了指导智能体之间正确通信,ChatDev 在每轮子任务之前使用初始提示作为智能体初始化策略。初始提示是一种提示工程技术,可用于嵌入角色、目标和职责,以实现有效的智能体通信。
让我们看一个示例,说明开始提示如何指导两个智能体开始、维持和结束子任务。
在执行每个子任务之前,每个智能体都会收到作为参数的提示,这些参数定义了特定于角色的指令、特征、职责和目标。两个示例包括
以下是基于 LanguageChoose 阶段指导者和辅导者智能体的智能体角色的系统角色提示:
这两个提示通过描述智能体的角色、专业知识和职责来初始化所需的智能体行为。提示策略通过提供针对性指导,指导各角色在交互过程中如何完成分配的任务,从而引导其行为和响应。
通过精心设计的提示,有效引导智能体之间的通信,确保双方角色明确各自的期望,并能够高效协作。
为了解决潜在的编码幻觉(生成不完整或不正确的代码),ChatDev 使用一种称为交互式去幻觉的通信模式。此模式对于在代码审查过程中构建对话至关重要。
代码审查过程包括两个阶段,即
在此示例中,代码审查智能体检测到程序员智能体输出中的错误,并将其连同纠正源代码中问题的建议一起发送给程序员智能体。然后,程序员智能体根据该反馈修正其原始输出。
以下是代码审查智能体的部分输出结果,时间在
程序员智能体将使用更正后的代码进行响应,时间是下一个
代码审查员和程序员继续迭代优化代码最多 10 次,或者直到在连续两个相同的修改阶段后达成共识。
通过迭代改进,交互式去幻觉模式有助于确保最终代码准确、完整并符合预期要求,同时还能促进子任务的有效完成。
在本教程中,我们通过模拟一个由基于角色的 AI 智能体组成的虚拟软件公司,探讨了 ChatDev 如何实现协作式 AI。ChatDev 使用 IBM watsonx.ai API 作为模型后端,通过自然语言和编程语言的结构化通信,指导智能体完成软件开发生命周期。
尽管 ChatDev 不使用正式的智能体通信协议,但它通过 LLM 的自然能力与 ChatChain、初始提示和交互式去幻觉等智能体通信技术实现了智能体互操作性。这凸显了编排有效的智能体通信对于成功协作和提高输出质量的重要性。
ChatDev 具有用于监控和重播智能体交互的内置可视化工具,为研究多智能体工作流和 LLM 驱动的团队合作动态提供了强大的平台。它展示了协作式 AI 在软件创建及其他领域的现实潜力。
借助 IBM 业界领先的人工智能专业知识和解决方案组合,让人工智能在您的业务中发挥作用。
通过增加 AI 重塑关键工作流程和运营,最大限度提升体验、实时决策和商业价值。