|
|
# AutoGen 软件开发团队协作案例
|
|
|
|
|
|
本目录包含第六章 AutoGen 框架的完整实战案例,展示了如何使用 AutoGen 构建多智能体协作的软件开发团队。
|
|
|
|
|
|
## 📁 文件说明
|
|
|
|
|
|
- `autogen_software_team.py` - 主要案例代码(基于 OpenAI 客户端)
|
|
|
- `llm_client.py` - HelloAgentsLLM 客户端实现
|
|
|
- `requirements.txt` - 依赖包列表
|
|
|
- `output.py` - 团队协作生成的比特币价格应用示例
|
|
|
- `README.md` - 本说明文档
|
|
|
|
|
|
## 🚀 案例特点
|
|
|
|
|
|
- **多智能体协作**:演示产品经理、工程师、代码审查员、用户代理的完整协作流程
|
|
|
- **真实开发场景**:从需求分析到代码实现的完整软件开发生命周期
|
|
|
- **自动化流程**:智能体间自动传递任务,无需人工干预
|
|
|
- **代码生成与审查**:自动生成可运行的代码并进行质量审查
|
|
|
|
|
|
## 🛠️ 环境准备
|
|
|
|
|
|
### 1. 安装依赖
|
|
|
|
|
|
```bash
|
|
|
pip install -r requirements.txt
|
|
|
```
|
|
|
|
|
|
### 2. 配置环境变量
|
|
|
|
|
|
创建 `.env` 文件并配置以下参数:
|
|
|
|
|
|
```bash
|
|
|
# LLM 配置
|
|
|
LLM_API_KEY=your-api-key-here
|
|
|
LLM_BASE_URL=https://api.openai.com/v1
|
|
|
LLM_MODEL_ID=gpt-4
|
|
|
```
|
|
|
|
|
|
### 3. 验证环境
|
|
|
|
|
|
确保可以正常调用 LLM API:
|
|
|
|
|
|
```python
|
|
|
import os
|
|
|
from dotenv import load_dotenv
|
|
|
load_dotenv()
|
|
|
|
|
|
print(f"API Key: {os.getenv('LLM_API_KEY')[:10]}...")
|
|
|
print(f"Base URL: {os.getenv('LLM_BASE_URL')}")
|
|
|
print(f"Model: {os.getenv('LLM_MODEL_ID')}")
|
|
|
```
|
|
|
|
|
|
## 🎯 运行案例
|
|
|
|
|
|
### 启动软件开发团队协作
|
|
|
|
|
|
```bash
|
|
|
python autogen_software_team.py
|
|
|
```
|
|
|
|
|
|
### 预期输出流程
|
|
|
|
|
|
1. **🔧 模型客户端初始化**
|
|
|
2. **👥 智能体团队创建**
|
|
|
3. **🚀 团队协作启动**
|
|
|
4. **💬 智能体对话过程**:
|
|
|
- ProductManager:需求分析和技术规划
|
|
|
- Engineer:代码实现
|
|
|
- CodeReviewer:代码审查和优化建议
|
|
|
- UserProxy:用户测试和反馈
|
|
|
5. **✅ 协作完成**
|
|
|
|
|
|
## 👥 智能体角色说明
|
|
|
|
|
|
### 🎯 ProductManager(产品经理)
|
|
|
- **职责**:需求分析、技术规划、风险评估
|
|
|
- **输出**:功能模块划分、技术选型建议、验收标准
|
|
|
- **特点**:注重用户体验和产品可行性
|
|
|
|
|
|
### 💻 Engineer(软件工程师)
|
|
|
- **职责**:代码实现、技术方案设计
|
|
|
- **输出**:完整的可运行代码
|
|
|
- **特点**:精通 Python、Streamlit、API 集成
|
|
|
|
|
|
### 🔍 CodeReviewer(代码审查员)
|
|
|
- **职责**:代码质量检查、安全性审查
|
|
|
- **输出**:代码审查报告、优化建议
|
|
|
- **特点**:关注代码规范、性能和安全性
|
|
|
|
|
|
### 👤 UserProxy(用户代理)
|
|
|
- **职责**:代表用户需求、执行测试、提供反馈
|
|
|
- **输出**:测试结果、用户反馈
|
|
|
- **特点**:从用户角度验证功能
|
|
|
|
|
|
## 📊 案例演示:比特币价格应用
|
|
|
|
|
|
### 应用功能
|
|
|
- ✅ 实时显示比特币当前价格(USD)
|
|
|
- ✅ 显示24小时价格变化趋势
|
|
|
- ✅ 提供价格刷新功能
|
|
|
- ✅ 错误处理和加载状态
|
|
|
- ✅ 简洁美观的 Streamlit 界面
|
|
|
|
|
|
### 技术栈
|
|
|
- **前端框架**:Streamlit
|
|
|
- **数据源**:CoinGecko API
|
|
|
- **编程语言**:Python
|
|
|
- **HTTP 请求**:requests
|
|
|
|
|
|
### 运行生成的应用
|
|
|
|
|
|
```bash
|
|
|
streamlit run output.py
|
|
|
```
|
|
|
|
|
|
## 🔧 自定义配置
|
|
|
|
|
|
### 修改智能体角色
|
|
|
|
|
|
可以通过修改 `system_message` 来自定义智能体的行为:
|
|
|
|
|
|
```python
|
|
|
def create_product_manager(model_client):
|
|
|
system_message = """
|
|
|
你是一位经验丰富的产品经理...
|
|
|
# 在这里自定义角色描述
|
|
|
"""
|
|
|
return AssistantAgent(
|
|
|
name="ProductManager",
|
|
|
model_client=model_client,
|
|
|
system_message=system_message,
|
|
|
)
|
|
|
```
|
|
|
|
|
|
### 调整协作流程
|
|
|
|
|
|
可以修改参与者列表和终止条件:
|
|
|
|
|
|
```python
|
|
|
team_chat = RoundRobinGroupChat(
|
|
|
participants=[
|
|
|
product_manager,
|
|
|
engineer,
|
|
|
code_reviewer,
|
|
|
user_proxy
|
|
|
],
|
|
|
termination_condition=TextMentionTermination("TERMINATE"),
|
|
|
max_turns=20, # 调整最大轮次
|
|
|
)
|
|
|
```
|
|
|
|
|
|
## 🐛 常见问题
|
|
|
|
|
|
### Q: 智能体没有开始对话?
|
|
|
A: 检查以下几点:
|
|
|
- 确认 API Key 配置正确
|
|
|
- 检查网络连接
|
|
|
- 验证模型名称是否正确
|
|
|
|
|
|
### Q: 协作过程中断?
|
|
|
A: 可能原因:
|
|
|
- API 调用限制
|
|
|
- 网络超时
|
|
|
- 模型响应异常
|
|
|
|
|
|
### Q: 生成的代码无法运行?
|
|
|
A: 建议:
|
|
|
- 检查依赖包是否完整安装
|
|
|
- 验证 API 接口是否可用
|
|
|
- 查看错误日志进行调试
|
|
|
|
|
|
## 📚 扩展学习
|
|
|
|
|
|
### 相关章节
|
|
|
- 第四章:智能体经典范式构建
|
|
|
- 第七章:构建你的Agent框架
|
|
|
- 第十二章:多智能体协作与通信
|
|
|
|
|
|
### 进阶实践
|
|
|
- 尝试添加更多智能体角色(如测试工程师、UI设计师)
|
|
|
- 实现更复杂的应用场景
|
|
|
- 集成更多的工具和API
|
|
|
- 优化智能体间的协作策略
|
|
|
|
|
|
## 🤝 贡献指南
|
|
|
|
|
|
欢迎提交 Issue 和 Pull Request 来改进这个案例:
|
|
|
- 报告 Bug 或问题
|
|
|
- 提出新的功能建议
|
|
|
- 分享你的实践经验
|
|
|
- 优化代码实现
|
|
|
|
|
|
---
|
|
|
|
|
|
*本案例是 Hello-Agents 教程的一部分,更多内容请参考项目主页。*
|
|
|
|
|
|
|
|
|
|
|
|
|