微信扫码
与创始人交个朋友
我要投稿
吴恩达来信链接
https://www.deeplearning.ai/the-batch/issue-245/
多智能体协作是我在最近来信中描述的四个关键AI智能体设计模式中的最后一个。对于编写软件这样的复杂任务,多智能体方法会将任务分解为子任务,由不同的角色——如软件工程师、产品经理、设计师、QA(质量保证)工程师等来执行,并让不同的智能体完成不同的子任务。
可以通过提示一个LLM(如果你愿意,也可以提示多个LLM)执行不同的任务来构建不同的智能体。例如要构建一个软件工程师智能体,我们可能会提示LLM:“你是编写清晰、高效代码的专家。编写代码来执行任务......”
虽然我们对同一个LLM进行多次调用,使用多个智能体来进行编程抽象似乎不合常理。但我想提供几个理由:
✴它是有效的!许多团队使用这种方法获得很好的结果,没有什么比结果更好的了!此外,消融研究(例如下面引用的AutoGen论文)表明,多智能体比单一智能体具有更好的性能。
✴尽管今天一些LLM可以接受很长的输入上下文(例如Gemini 1.5 Pro可接受100万个token),但它们真正理解长而复杂输入的能力参差不齐。在一个智能体工作流中,LLM被提示一次只专注于一件事就可以提供更好的性能。通过告诉它什么时候应该扮演软件工程师,我们还可以指定在该角色的子任务中什么是重要的。例如上面的提示强调清晰、高效的代码,而不是可伸缩和高度安全的代码。通过将整体任务分解为子任务,我们可以更好地优化子任务。
✴作为开发人员,可能重要的是多智能体设计模式为我们提供一个将复杂任务分解为子任务的框架。当编写在单个CPU上运行的代码时,我们经常将程序分解为不同的进程或线程。这是一个有用的抽象,如实现一个web浏览器,可以让我们将一个任务分解成更容易编程的子任务。我发现通过多智能体角色进行思考也是一种有用的抽象。
在许多公司里,如要编写一个大型软件或准备一份研究报告,管理者通常会决定雇佣什么角色(职位),然后决定如何将复杂的项目分成更小的任务,并分配给擅长不同领域的员工。使用多个智能体也是一样的。每个智能体会实现自己的工作流程,拥有自己的记忆(这本身就是智能体技术中一个快速发展的领域:一个智能体如何能够记住足够多的历史交互,以便在即将到来的交互中表现得更好?),并且可以向其他智能体寻求帮助。智能体还可以参与规划和工具使用。这将导致LLM调用和智能体之间消息传递的不和谐,从而导致非常复杂的工作流。
虽然管理人员很困难,但这是一个非常熟悉的想法,它为我们提供一个如何“雇用”和分配任务给我们的AI智能体的心理框架。幸运的是对AI智能体管理不善造成的伤害比对人类员工管理不善造成的伤害要小很多!
新兴框架如AutoGen, Crew AI和LangGraph为构建多智能体解决方案提供丰富的方法。如果你对有趣的多智能体系统感兴趣,也可了解下ChatDev,它是一组运营一家虚拟软件公司智能体的开源实现。我推荐你试试他们的GitHub repo,或者克隆repo并自己运行系统。虽然它可能并不总能产生你想要的结果,但你可能会对它的效果感到惊讶。
就像规划的设计模式一样,我发现多智能体协作的输出质量很难预测,特别是当允许智能体自由交互并为它们提供多种工具时。更成熟的反思模式和工具使用模式会更可靠。希望你能喜欢使用这些智能体设计模式,并为你带来惊人的结果!
如果你有兴趣了解更多,请参阅以下内容:
✅“Communicative Agents for Software Development,” Qian et al. (2023) (the ChatDev paper)
✅“AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation,” Wu et al. (2023)
✅“MetaGPT: Meta Programming for a Multi-Agent Collaborative Framework,” Hong et al. (2023)
请不断学习!
吴恩达
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-04-26
2024-05-10
2024-05-28
2024-04-12
2024-04-25
2024-05-14
2024-07-18
2024-08-13
2024-04-26