MetaGPT爆火出圈!2美元就能當(dāng)老板,GitHub狂攬11.2k星,AI智能體「多面手」誕生
智能體,就是未來(lái)!
近來(lái),又一個(gè)AI智能體項(xiàng)目MetaGPT爆火了,短短一個(gè)月在GitHub上狂攬11.2k星。
這是一個(gè)多智能體框架,能夠扮演不同的角色,一位工程師、產(chǎn)品經(jīng)理、架構(gòu)師和項(xiàng)目經(jīng)理。
與AutoGPT類似,但針對(duì)產(chǎn)品需求、設(shè)計(jì)、競(jìng)爭(zhēng)分析、API和文檔量身定制。
圖片
地址:https://github.com/geekan/MetaGPT
最重要的是,只輸入老板一句話的需求,它就能輸出軟件公司的整個(gè)流程,以及精心安排的SOP。
其中,Code = SOP(Team)是核心哲學(xué)。將SOP具象化,并且用于LLM構(gòu)成的團(tuán)隊(duì)。
軟件公司多角色示意圖(正在逐步實(shí)現(xiàn))
MetaGPT
圖片
示例(均由GPT-4生成)
比如,輸入python startup.py "寫(xiě)個(gè)類似今日頭條的推薦系統(tǒng)",就會(huì)獲得一系列輸出,其一是數(shù)據(jù)結(jié)構(gòu)與API設(shè)計(jì):
圖片
生成一個(gè)包含分析和設(shè)計(jì)的示例大約需要0.2美元(GPT-4 API的費(fèi)用),而一個(gè)完整的項(xiàng)目大約需要2.0美元。
如下是,MetaGPT與人類團(tuán)隊(duì)的軟件開(kāi)發(fā)SOP比較圖。
MetaGPT的方法展示了,將高層次任務(wù)分解為由不同角色,比如產(chǎn)品經(jīng)理、架構(gòu)師、項(xiàng)目經(jīng)理、工程師,處理的詳細(xì)可操作組件的能力。
這種方法與人類軟件開(kāi)發(fā)團(tuán)隊(duì)類似,但優(yōu)勢(shì)在于能夠提高效率、精確性和一致性。
圖片
MetaGPT核心組成部分如下:
圖片
網(wǎng)友實(shí)現(xiàn)
有網(wǎng)友用MetaGPT十分鐘,就做出了一個(gè)小游戲Flappy Bird。
圖片
她表示,MetaGPT功能過(guò)于強(qiáng)大,也許真的可以取代軟件公司!
圖片
以下是這位網(wǎng)友制作游戲的全過(guò)程。
首先,在電腦上通過(guò)「?jìng)鹘y(tǒng)安裝」過(guò)程安裝MetaGPT,并輸入OpenAI API密鑰。
把自己的需求通過(guò)prompt的形式告訴系統(tǒng)后,就可以看著MetaGPT給你寫(xiě)代碼了。
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
圖片
接著,運(yùn)行python main.py。然而,此時(shí)程序卻報(bào)出了一堆bug。
圖片
問(wèn)題不大,把這堆代碼直接扔給Code Interpreter,讓GPT-4來(lái)debug。
圖片
代碼改完之后,再用Midjourney生成一只紅色小鳥(niǎo)。
圖片
順便問(wèn)一下GPT-4圖片的格式和尺寸。
圖片
再用canva調(diào)整小鳥(niǎo)和管道的大小。
圖片
最后,運(yùn)行游戲。
網(wǎng)友表示,雖然有一些小問(wèn)題,比如頂部的管道沒(méi)有殺死小鳥(niǎo)。但它還是成功了,而且我沒(méi)有寫(xiě)一行代碼,甚至都不用調(diào)試?。。。?!
只要?jiǎng)e讓小鳥(niǎo)碰到底部的管道就行。
圖片
也有網(wǎng)友做了同樣的游戲,效果如下:
圖片
另外,還有日本網(wǎng)友還用其制作了「二十一點(diǎn)」。
圖片
圖片
安裝
傳統(tǒng)安裝
# 步驟1:確保已經(jīng)安裝了NPM。并使用npm安裝mermaid-js
npm --version
sudo npm install -g @mermaid-js/mermaid-cli
# 步驟2:確保已經(jīng)安裝了Python 3.9+??梢允褂靡韵旅钸M(jìn)行檢查:
python --version
# 步驟3:克隆倉(cāng)庫(kù)到本機(jī),并進(jìn)行安裝。
git clone https://github.com/geekan/metagpt
cd metagpt
python setup.py install
Docker安裝
# 步驟1: 下載metagpt官方鏡像并準(zhǔn)備好config.yaml
docker pull metagpt/metagpt:v0.3
mkdir -p /opt/metagpt/{config,workspace}
docker run --rm metagpt/metagpt:v0.3 cat /app/metagpt/config/config.yaml > /opt/metagpt/config/config.yaml
vim /opt/metagpt/config/config.yaml # 修改config
# 步驟2: 使用容器運(yùn)行metagpt演示
docker run --rm \
--privileged \
-v /opt/metagpt/config:/app/metagpt/config \
-v /opt/metagpt/workspace:/app/metagpt/workspace \
metagpt/metagpt:v0.3 \
python startup.py "Write a cli snake game"
# 也可以啟動(dòng)一個(gè)容器并在其中執(zhí)行命令
docker run --name metagpt -d \
--privileged \
-v /opt/metagpt/config:/app/metagpt/config \
-v /opt/metagpt/workspace:/app/metagpt/workspace \
metagpt/metagpt:v0.3
docker exec -it metagpt /bin/bash
$ python startup.py "Write a cli snake game"
docker run ...做了以下事情:
以特權(quán)模式運(yùn)行,有權(quán)限運(yùn)行瀏覽器
將主機(jī)目錄/opt/metagpt/config映射到容器目錄/app/metagpt/config
將主機(jī)目錄/opt/metagpt/workspace映射到容器目錄/app/metagpt/workspace
執(zhí)行演示命令python startup.py "Write a cli snake game"
自己構(gòu)建鏡像
# 也可以自己構(gòu)建metagpt鏡像
git clone https://github.com/geekan/MetaGPT.git
cd MetaGPT && docker build -t metagpt:custom .
配置
在config/key.yaml / config/config.yaml / env中配置你的OPENAI_API_KEY
優(yōu)先級(jí)順序:config/key.yaml > config/config.yaml > env
# 復(fù)制配置文件并進(jìn)行必要的修改
cp config/config.yaml config/key.yaml
圖片
演示:?jiǎn)?dòng)一個(gè)創(chuàng)業(yè)公司
python startup.py "Write a cli snake game"
# 使用code review模式會(huì)增加開(kāi)銷(xiāo),但同時(shí)也會(huì)提升代碼質(zhì)量和成功率
python startup.py "Write a cli snake game" --code_review True
運(yùn)行腳本后,就可以在workspace/目錄中找到你的新項(xiàng)目了。
平臺(tái)或工具的偏好
你可以在陳述需求時(shí),說(shuō)明自己想要使用的平臺(tái)或工具。
python startup.py "Write a cli snake game based on pygame"
使用
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.
# 我們是一家AI軟件創(chuàng)業(yè)公司。通過(guò)投資我們,您將賦能一個(gè)充滿無(wú)限可能的未來(lái)。
POSITIONAL ARGUMENTS
IDEA
Type: str
你的創(chuàng)新想法,例如"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.
# 作為投資者,您有機(jī)會(huì)向這家AI公司投入一定的美元金額。
--n_round=N_ROUND
Type: int
Default: 5
NOTES
也可以用FLAGS的語(yǔ)法,來(lái)處理POSITIONAL ARGUMENTS。
代碼實(shí)現(xiàn)
from metagpt.software_company import SoftwareCompany
from metagpt.roles import ProjectManager, ProductManager, Architect, Engineer
async def startup(idea: str, investment: float = 3.0, n_round: int = 5):
"""Run a startup. Be a boss."""
company = SoftwareCompany()
company.hire([ProductManager(), Architect(), ProjectManager(), Engineer()])
company.invest(investment)
company.start_project(idea)
await company.run(n_round=n_round)
你可以查看examples,其中有單角色(帶知識(shí)庫(kù))的使用例子與僅LLM的使用例子。
參考資料:
https://arxiv.org/pdf/2308.00352.pdf
https://github.com/geekan/MetaGPT
https://twitter.com/99aico/status/1684249002437668864