# 初始化环境以及安装metagpt本身
PS E:\development\metagpt-demo2> uv init
Initialized project `metagpt-demo2`
PS E:\development\metagpt-demo2> uv venv
Using CPython 3.11.11
Creating virtual environment at: .venv
Activate with: .venv\Scripts\activate
PS E:\development\metagpt-demo2> .venv\Scripts\activate
(metagpt-demo2) PS E:\development\metagpt-demo2> uv pip install git+https://github.com/geekan/MetaGPT
这里不要以uv add的方式等去安装,metagpt的团队根本就没有更新pypi那边我估计,第一个例子就报错metagpt.context找不到
我去源代码里看了一下,还在2023年,两年前呢,无语
https://github.com/geekan/MetaGPT/tree/main/metagpt
# 做一个配置文件
项目目录下,新建一个config文件夹,然后再新建一个config2.yaml
llm:
api_type: 'openai' # or azure / ollama / groq etc. Check LLMType for more options
api_key: 'xxxxxxxxxxxxx' # YOUR_API_KEY
model: 'xxxxxxxxxxxxxx' # or gpt-3.5-turbo
base_url: 'https://ark.cn-beijing.volces.com/api/v3/bots/' # or any forward url.
# proxy: 'YOUR_LLM_PROXY_IF_NEEDED' # Optional. If you want to use a proxy, set it here.
# pricing_plan: 'YOUR_PRICING_PLAN' # Optional. If your pricing plan uses a different name than the `model`.
反正就按openai去配置就好了
# 第一个例子,写一个PRD
# 可导入任何角色,初始化它,用一个开始的消息运行它,完成!
import asyncio
from metagpt.context import Context
from metagpt.roles.product_manager import ProductManager
from metagpt.logs import logger
async def main():
msg = "Write a PRD for a snake game"
context = Context() # 显式创建会话Context对象,Role对象会隐式的自动将它共享给自己的Action对象
role = ProductManager(context=context)
while msg:
msg = await role.run(msg)
logger.info(str(msg))
if __name__ == '__main__':
asyncio.run(main())
# 最终的输出
## Language
en_us
## Programming Language
Python
## Original Requirements
Write a PRD for a snake game
## Project Name
Snake_Game
## Product Goals
- Deliver a nostalgic yet modernized snake gameplay experience
- Ensure cross-platform compatibility (desktop/mobile)
- Implement intuitive controls and visual feedback
## User Stories
- As a player, I want smooth directional controls to navigate the snake
- As a player, I want to track my score and high score persistently
- As a player, I want visual/audio feedback when collecting food
- As a mobile user, I want touch-optimized controls
- As a casual player, I want pause/restart functionality
## Competitive Analysis
- Classic Nokia Snake: Simple mechanics but limited to legacy devices
- Slither.io: Multiplayer web version with growth mechanics but requires internet
- Snake '97 (Web): Faithful retro recreation but lacks mobile optimization
- Python Arcade Snake: Open-source but basic graphics/no scoring system
- Mobile Store Snake Games: Often ad-heavy with intrusive monetization
- Snake VS Block: Innovative hybrid gameplay but diverges from classic style
- WebGL Snake: Modern 3D visuals but complex for low-end devices
## Competitive Quadrant Chart
quadrantChart
title "Snake Game Market Positioning"
x-axis "Traditional Gameplay" --> "Innovative Features"
y-axis "Low Polish" --> "High Production Quality"
quadrant-1 "Premium Innovators"
quadrant-2 "Niche Classics"
quadrant-3 "Outdated"
quadrant-4 "Mass Market"
"Nokia Snake": [0.9, 0.3]
"Slither.io": [0.6, 0.7]
"Snake '97": [0.85, 0.4]
"Python Arcade": [0.8, 0.2]
"Mobile Store Games": [0.4, 0.5]
"Our Target Product": [0.7, 0.65]
## Requirement Analysis
Core requirements include: 1) Grid-based movement system with collision detection 2) Progressive scoring mechanism 3) Responsive input handling (keyboard/touch) 4) Food spawning logic 5) Game state management (pause/restart). Extended features should include: a) Difficulty levels (speed adjustments) b) Skin/themes customization c) Local storage for high scores d) Sound effects toggle.
## Requirement Pool
- ['P0', 'Implement snake movement mechanics with directional controls']
- ['P0', 'Create collision detection for walls/self']
- ['P0', 'Develop scoring system with high score tracking']
- ['P1', 'Add difficulty levels (slow/medium/fast speed)']
- ['P2', 'Include customizable snake skins/themes']
## UI Design draft
Clean retro-modern hybrid interface:
- Central gameplay grid with 20x15 cell layout
- Score counter at top-left, high score at top-right
- Mobile: Virtual D-pad overlay (optional toggle)
- Color scheme: Dark background (#1a1a1a), neon-green snake segments
- Food items rendered as glowing orbs
- Minimalist menu system with pause/restart buttons
## Anything UNCLEAR
Need clarification on: 1) Preferred target platforms (web/app/desktop) 2) Monetization requirements 3) Multiplayer capabilities. Assuming single-player focus with desktop-first approach unless specified otherwise.