赞
踩
标签:#AIAgent##AutoGPT##MetaGPT# 时间:2023/08/07 16:52:41 作者:小木
AI Agent被很多人认为是未来大模型的发展方向。此前,OpenAI安全团队负责人人Lilian Weng也发布了一篇详细介绍AI自动代理机器人的博客,引起了很多人的关注。7月份发布的MetaGPT是一个全新的AI Agent项目,它基于GPT-4提供了专注于软件开发的自动代理框架,几乎可以理解为配备了产品经历、系统设计师、程序员的一个小团队,可以基于原始的需求直接生成最后的代码项目。本文主要介绍一下这个项目,并分析一下背后的实现方式。
六月底,一位深圳的开发者在GitHub上创建了一个MetaGPT项目,这是一个全新的基于AI Agent的大模型框架,与此前项目不同的是,这个项目专注于软件开发,从需求分析到代码实现等实现了全流程的覆盖。可以基于你的一条原始需求,从需求分析、系统设计、代码实现、代码review等方面提供完整的服务。该项目发布一个月后的今天就在GitHub上达到了1万个star,目前是GitHub趋势榜第一!
从演示的视频看,你只需要给这个项目一条简单的原始需求,项目就可以利用GPT-4来完成最终的产品实现。下图是MetaGPT在内部通过prompt实现的一个完整的软件开发团队:
可以看到,基本上是按照现代软件开发团队涉及的角色来配备的。不过,能有这样的流程和角色的可能也不是一个小团队。在一个比较完整的软件开发团队中,一个原始需求提出来之后需要经过原始需求分析、需求评审、系统需求分析、系统设计、代码实现、代码评审、代码测试等一系列环节。这样的开发流程可以有效保证代码开发的质量,但是流程较长,不太灵活。如果能用大模型实现这个流程,显然对于软件开发的质量和效率都有很大的帮助。
相比较此前的AutoGPT,MetaGPT的实现原理稍微复杂一点。它在系统中定义了几种角色,并为每种角色配备了目标和prompt模板,以此引导相关角色解决相应问题,主要的角色包括:
角色 | 目标 | 可以的行动 | 观察的输入 |
---|---|---|---|
产品经理 | 目标是创造一个成功的产品 | 写产品需求文档 | 观察老板是否有新的需求 |
架构师 | 根据产品需求文档设计系统架构 | 设计文档 | 产品经理是否有新需求 |
项目经理 | 目标是提升团队效率 | 根据设计文档完成任务分解 | 观察是否有新的设计任务 |
工程师 | 根据项目经理分解的任务完成代码和评审 | 写代码/代码评审 | 项目经理分解的任务 |
QA工程师 | 根据代码的输出和测试代码输出以及运行结果输出测试方案 | 写测试用例 | 代码结果和代码运行结果 |
从上面的表格总结可以知道,MetaGPT通过定义几种角色来完成初始需求的一步步实现过程。总的入口就是老板的需求,接下来各个角色会根据这个原始需求按照上述步骤进行处理。
MetaGPT一个有意思的设定是它为每种角色定义了一个单独的“进程”运行。每一个角色在运行中都是等待是否有相应的输入出现,一旦观察到相应的输入就会立马根据自己的目标,使用大模型来解决这个问题,并将结果返回到系统中。系统的其它角色一旦监听到有关于自己的任务输入,那就可以获取任务进行执行了。这个也与当前的开发流程和组织架构十分相似。
此外,为了让每个角色有更强大能力,MetaGPT还设置了额外的角色帮助系统完成任务,包括搜索角色、prompt分解角色等。
显然,上述分析我们可以看到MetaGPT最本质的方案是预置多种角色,这些角色都有自己的目标以及输入和输出,它会根据环境中观察的与自己相关的输入来处理。
那么,这些角色有哪些能力和技能呢?这里也总结一下。需要注意的是,这里总结的技能都是一个单独的文件,每一个角色都可以通过引入这种技能来增强自己的能力:
简单来说,上面每一个技能都对应一个py文件,每一个py文件里面定义的都是对应技能的prompt模板。最终各个角色都是通过自己所有你有的这些技能来处理输入和输出,完成任务。
MetaGPT吸引了很多人的测试,其中一个比较代表性的任务是一个人用了10分钟,完成了一个Flappy bird游戏的开发:
而这个运行只需要如下代码:
python startup.py "write p5.js code for Flappy Bird where you control a yellow bird continuously flying between a series of green pipes. The bird flaps every time you left click the mouse. If the bird falls to the ground or hits a pipe, you lose. This game goes on infinitely until you lose and you get points the further you go" --code_review True
接下来,程序完全自动运行,最终产生了上图的结果。不过,上面最终的结果并不能直接运行,还需要我们补充素材之类的结果。作者用了midjourney帮忙。
MetaGPT的运行很简单,按照官方的项目建议安装完之后直接运行startup.py脚本即可,这个脚本可以设置如下参数:
NAME
startup.py - We are a software startup comprised of AI. By investing in us, you are empowering a future filled with limitless possibilities.
SYNOPSIS
startup.py IDEA <flags>
DESCRIPTION
We are a software startup comprised of AI. By investing in us, you are empowering a future filled with limitless possibilities.
POSITIONAL ARGUMENTS
IDEA
Type: str
Your innovative idea, such as "Creating a snake game."
FLAGS
--investment=INVESTMENT
Type: float
Default: 3.0
As an investor, you have the opportunity to contribute a certain dollar amount to this AI company.
--n_round=N_ROUND
Type: int
Default: 5
NOTES
You can also use flags syntax for POSITIONAL ARGUMENTS
其中需要注意的是,它消耗OpenAI API Key的结果。运行结束的方式要么是投资耗尽,要么是最多的迭代次数用完!
其实,关于使用LLM作为核心来构建代理机器人完成任务已经有不少项目了。早期的AutoGPT就十分令人惊叹(参考:AutoGPT是如何让GPT-4自动帮你完成任务的——最火的AutoGPT原理解析!),后来OpenAI的Lilian Weng博客更加让人明白了AI Agent未来的前景(参考:大模型驱动的自动代理(AI Agent):将语言模型的能力变成通用能力的一种方式——来自OpenAI安全团队负责人的解释与观点)。
MetaGPT的优点是针对特定的领域,构建了很精细的角色,质量相比通用的AI Agent来说应该更高。而且它这种建立了类似人类软件开发公司的组织型态也值得大家思考。
MetaGPT的项目地址:https://www.wpsshop.cn/w/AllinToyou/article/detail/308850
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。