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.

4.9 KiB

AutoGen 软件开发团队协作案例

本目录包含第六章 AutoGen 框架的完整实战案例,展示了如何使用 AutoGen 构建多智能体协作的软件开发团队。

📁 文件说明

  • autogen_software_team.py - 主要案例代码(基于 OpenAI 客户端)
  • llm_client.py - HelloAgentsLLM 客户端实现
  • requirements.txt - 依赖包列表
  • output.py - 团队协作生成的比特币价格应用示例
  • README.md - 本说明文档

🚀 案例特点

  • 多智能体协作:演示产品经理、工程师、代码审查员、用户代理的完整协作流程
  • 真实开发场景:从需求分析到代码实现的完整软件开发生命周期
  • 自动化流程:智能体间自动传递任务,无需人工干预
  • 代码生成与审查:自动生成可运行的代码并进行质量审查

🛠️ 环境准备

1. 安装依赖

pip install -r requirements.txt

2. 配置环境变量

创建 .env 文件并配置以下参数:

# LLM 配置
LLM_API_KEY=your-api-key-here
LLM_BASE_URL=https://api.openai.com/v1
LLM_MODEL_ID=gpt-4

3. 验证环境

确保可以正常调用 LLM API

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')}")

🎯 运行案例

启动软件开发团队协作

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

运行生成的应用

streamlit run output.py

🔧 自定义配置

修改智能体角色

可以通过修改 system_message 来自定义智能体的行为:

def create_product_manager(model_client):
    system_message = """
    你是一位经验丰富的产品经理...
    # 在这里自定义角色描述
    """
    return AssistantAgent(
        name="ProductManager",
        model_client=model_client,
        system_message=system_message,
    )

调整协作流程

可以修改参与者列表和终止条件:

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