You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

200 lines
4.9 KiB
Markdown

6 months ago
# 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 教程的一部分,更多内容请参考项目主页。*