--- title: MetaGPT emoji: 🐼 colorFrom: green colorTo: blue sdk: docker app_file: app.py pinned: false --- # MetaGPT: The Multi-Agent Framework
Assign different roles to GPTs to form a collaborative software entity for complex tasks.
1. MetaGPT takes a **one line requirement** as input and outputs **user stories / competitive analysis / requirements / data structures / APIs / documents, etc.** 2. Internally, MetaGPT includes **product managers / architects / project managers / engineers.** It provides the entire process of a **software company along with carefully orchestrated SOPs.** 1. `Code = SOP(Team)` is the core philosophy. We materialize SOP and apply it to teams composed of LLMs. ![A software company consists of LLM-based roles](docs/resources/software_company_cd.jpeg)Software Company Multi-Role Schematic (Gradually Implementing)
## Examples (fully generated by GPT-4) For example, if you type `python startup.py "Design a RecSys like Toutiao"`, you would get many outputs, one of them is data & api design ![Jinri Toutiao Recsys Data & API Design](docs/resources/workspace/content_rec_sys/resources/data_api_design.png) It costs approximately **$0.2** (in GPT-4 API fees) to generate one example with analysis and design, and around **$2.0** for a full project. ## Installation ### Installation Video Guide - [Matthew Berman: How To Install MetaGPT - Build A Startup With One Prompt!!](https://youtu.be/uT75J_KG_aY) ### Traditional Installation ```bash # Step 1: Ensure that NPM is installed on your system. Then install mermaid-js. npm --version sudo npm install -g @mermaid-js/mermaid-cli # Step 2: Ensure that Python 3.9+ is installed on your system. You can check this by using: python --version # Step 3: Clone the repository to your local machine, and install it. git clone https://github.com/geekan/metagpt cd metagpt python setup.py install ``` **Note:** - If already have Chrome, Chromium, or MS Edge installed, you can skip downloading Chromium by setting the environment variable `PUPPETEER_SKIP_CHROMIUM_DOWNLOAD` to `true`. - Some people are [having issues](https://github.com/mermaidjs/mermaid.cli/issues/15) installing this tool globally. Installing it locally is an alternative solution, ```bash npm install @mermaid-js/mermaid-cli ``` - don't forget to the configuration for mmdc in config.yml ```yml PUPPETEER_CONFIG: "./config/puppeteer-config.json" MMDC: "./node_modules/.bin/mmdc" ``` - if `python setup.py install` fails with error `[Errno 13] Permission denied: '/usr/local/lib/python3.11/dist-packages/test-easy-install-13129.write-test'`, try instead running `python setup.py install --user` ### Installation by Docker ```bash # Step 1: Download metagpt official image and prepare config.yaml docker pull metagpt/metagpt:v0.3.1 mkdir -p /opt/metagpt/{config,workspace} docker run --rm metagpt/metagpt:v0.3.1 cat /app/metagpt/config/config.yaml > /opt/metagpt/config/key.yaml vim /opt/metagpt/config/key.yaml # Change the config # Step 2: Run metagpt demo with container docker run --rm \ --privileged \ -v /opt/metagpt/config/key.yaml:/app/metagpt/config/key.yaml \ -v /opt/metagpt/workspace:/app/metagpt/workspace \ metagpt/metagpt:v0.3.1 \ python startup.py "Write a cli snake game" # You can also start a container and execute commands in it docker run --name metagpt -d \ --privileged \ -v /opt/metagpt/config/key.yaml:/app/metagpt/config/key.yaml \ -v /opt/metagpt/workspace:/app/metagpt/workspace \ metagpt/metagpt:v0.3.1 docker exec -it metagpt /bin/bash $ python startup.py "Write a cli snake game" ``` The command `docker run ...` do the following things: - Run in privileged mode to have permission to run the browser - Map host directory `/opt/metagpt/config` to container directory `/app/metagpt/config` - Map host directory `/opt/metagpt/workspace` to container directory `/app/metagpt/workspace` - Execute the demo command `python startup.py "Write a cli snake game"` ### Build image by yourself ```bash # You can also build metagpt image by yourself. git clone https://github.com/geekan/MetaGPT.git cd MetaGPT && docker build -t metagpt:custom . ``` ## Configuration - Configure your `OPENAI_API_KEY` in any of `config/key.yaml / config/config.yaml / env` - Priority order: `config/key.yaml > config/config.yaml > env` ```bash # Copy the configuration file and make the necessary modifications. cp config/config.yaml config/key.yaml ``` | Variable Name | config/key.yaml | env | | ------------------------------------------ | ----------------------------------------- | ----------------------------------------------- | | OPENAI_API_KEY # Replace with your own key | OPENAI_API_KEY: "sk-..." | export OPENAI_API_KEY="sk-..." | | OPENAI_API_BASE # Optional | OPENAI_API_BASE: "https://