一个强大的基础模板,用于高效地使用LangGraph构建具有监督架构的AI代理集群,并集成模型上下文协议(MCP)和全面的API。
git clone https://github.com/yourusername/langgraph-multiagent-boilerplate.git
cd langgraph-multiagent-boilerplate
python -m venv venv
source venv/bin/activate # 在Windows上:venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# 编辑.env文件以设置您的设置(数据库、API密钥等)
# 创建一个PostgreSQL数据库
# 然后运行迁移(一旦实现)
uvicorn app.main:app --reload
langgraph-multiagent-boilerplate/
├── app/
│ ├── api/
│ │ ├── exceptions.py # 错误处理
│ │ ├── middleware/ # 安全与认证中间件
│ │ └── routes/ # API端点
│ ├── core/
│ │ ├── config.py # 配置管理
│ │ └── langgraph/ # LangGraph组件
│ ├── db/
│ │ └── base.py # 数据库设置
│ ├── models/ # SQLAlchemy模型
│ ├── schemas/ # Pydantic模式
│ ├── services/ # 业务逻辑
│ └── main.py # 应用程序入口点
├── tests/ # 测试套件
├── .env.example # 环境模板
├── pyproject.toml # Python项目元数据
├── requirements.txt # 依赖项
├── README.md # 此文件
├── PROJECT_OVERVIEW.md # 详细的项目文档
└── IMPLEMENTATION_TASKS.md # 开发路线图
GET /api/crews - 列出所有团队
POST /api/crews - 创建新团队
GET /api/crews/{crew_id} - 获取团队详情
PUT /api/crews/{crew_id} - 更新团队
DELETE /api/crews/{crew_id} - 删除团队
GET /api/agents - 列出所有代理
POST /api/agents - 创建新代理
GET /api/agents/{agent_id} - 获取代理详情
PUT /api/agents/{agent_id} - 更新代理
DELETE /api/agents/{agent_id} - 删除代理
GET /api/conversations - 列出对话POST /api/conversations - 创建新对话GET /api/conversations/{conversation_id} - 获取对话详情POST /api/conversations/{conversation_id}/chat - 发送消息并获取回复POST /api/conversations/{conversation_id}/chat/stream - 获取流式回复请参阅Swagger文档以获取完整的API参考。
import httpx
# 创建新团队
crew_data = {
"name": "研究团队",
"description": "专注于研究任务的团队",
"metadata": {"specialization": "研究"}
}
response = httpx.post("http://localhost:8000/api/crews", json=crew_data)
crew = response.json()
crew_id = crew["id"]
# 创建监督代理
supervisor_data = {
"crew_id": crew_id,
"name": "研究监督员",
"description": "监督研究操作",
"system_prompt": "您是负责协调研究工作的研究监督员。",
"model": "google/gemini-2.5-flash",
"is_supervisor": True,
"metadata": {}
}
httpx.post("http://localhost:8000/api/agents", json=supervisor_data)
# 创建专门的代理
web_researcher_data = {
"crew_id": crew_id,
"name": "网络研究员",
"description": "专长于网络研究",
"system_prompt": "您是一位在线查找准确信息的网络研究员。",
"model": "claude-3-sonnet",
_ "is_supervisor": False,
"metadata": {"specialty": "web_search"}
}
httpx.post("http://localhost:8000/api/agents", json=web_researcher_data)
# 与团队创建对话
conversation_data = {
"user_id": "user123",
"crew_id": crew_id,
"title": "关于AI趋势的研究"
}
response = httpx.post("http://localhost:8000/api/conversations", json=conversation_data)
conversation = response.json()
conversation_id = conversation["id"]
# 向团队发送消息
message_data = {
"message": "多代理AI系统的最新趋势是什么?",
"metadata": {}
}
# 对于非流式回复
response = httpx.post(
f"http://localhost:8000/api/conversations/{conversation_id}/chat",
json=message_data
)
print(response.json()["content"])
# 对于流式回复
with httpx.stream(
"POST",
f"http://localhost:8000/api/conversations/{conversation_id}/chat/stream",
json=message_data,
timeout=60.0
) as response:
for chunk in response.iter_lines():
if chunk.startswith("data: "):
data = json.loads(chunk[6:])
if "choices" in data and data["choices"][0]["delta"].get("content"):
print(data["choices"][0]["delta"]["content"], end="")
运行测试套件:
pytest
关键环境变量:
DATABASE_URL:PostgreSQL连接字符串OPENROUTER_API_KEY:OpenRouter API密钥MCP_SERVER_URL:MCP服务器的URLR2_ENDPOINT、R2_BUCKET_NAME等:Cloudflare R2配置JWT_SECRET_KEY:JWT认证的秘密DEBUG:启用调试模式请参阅.env.example以获取完整的配置选项列表。
app/core/langgraph/supervisor.py中的监督逻辑欢迎贡献!请随时提交Pull Request。
此项目根据MIT许可证发布 - 请参阅LICENSE文件了解详细信息。