一个生产级的多代理系统,用于通过 AutoGen 和 Chainlit 实现智能代码生成、质量分析和优化。
该系统展示了用于代码开发工作流的先进多代理协作模式,其特点包括:
- 🧑💻 代码生成器代理: 根据自然语言需求创建高质量代码
- 🔍 代码质量分析器代理: 执行全面的静态分析和安全检查
- ⚡ 代码优化器代理: 自动修复问题并应用优化
- 👤 用户代理: 通过直观的 Web 界面处理审批工作流
- 多语言支持: Python, JavaScript, TypeScript, Java, Go
- 全面分析: 静态分析、复杂度指标、安全扫描
- 自动优化: 风格修复、性能改进、重构
- 质量保证: 内置验证和测试建议
- 用户审批工作流: 使用 Chainlit UI 的交互式审批流程
- pylint: Python 静态分析和代码质量检查
- flake8: 代码风格强制和错误检测
- bandit: 安全漏洞检测
- radon: 代码复杂度和可维护性指标
- black + isort: 自动代码格式化
- 百炼大模型 (Bailian/DashScope): 默认模型提供商
- OpenAI GPT: 备选模型支持
- 自定义模型: 可配置的模型后端
- Python 3.9+ (推荐: Python 3.11)
- 虚拟环境 (推荐)
- 百炼大模型 API 密钥 或其他支持的模型的 API
# 克隆仓库
git clone <repository-url>
cd context-engineering-intro
# 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate # 在 Windows 上: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt# 复制环境模板
cp .env.example .env
# 使用你的 API 密钥和设置编辑 .env 文件
nano .env # 或使用你偏好的编辑器所需环境变量:
# 百炼大模型配置
BAILIAN_API_KEY=bsk-your-api-key-here
BAILIAN_MODEL=qwen-max
BAILIAN_ENDPOINT=https://dashscope.aliyuncs.com/api/v1/
# 应用设置
CHAINLIT_PORT=8000
CHAINLIT_HOST=localhost
DEBUG_MODE=true创建或更新 model_config.yaml:
# 百炼大模型配置
provider: autogen_ext.models.openai.OpenAIChatCompletionClient
config:
model: qwen-max
api_key: ${BAILIAN_API_KEY}
base_url: ${BAILIAN_ENDPOINT}# 启动 Chainlit 应用
chainlit run app.py -h
# 在浏览器中访问 http://localhost:8000- 发起请求: 选择一个起始提示或描述你的代码需求
- 审查生成内容: 代码生成器创建初始代码并进行自我验证
- 质量分析: 代码审查器执行全面分析
- 优化: 代码优化器应用改进和修复
- 用户审批: 审查并批准最终代码
创建一个 Python 函数来计算斐波那契数,并包含错误处理
构建一个用于用户认证的 Python Flask REST API,包含:
- JWT 令牌管理
- 使用 bcrypt 进行密码哈希
- 速率限制
- 全面的错误处理
- 单元测试
用 Python 实现一个二叉搜索树,包含:
- 插入、删除、搜索操作
- 树平衡
- 中序遍历
- 全面的文档字符串和类型提示
在流程中,你会看到操作按钮:
- ✅ Approve Final Code: 接受并完成工作流
- 👍 Approve & Continue: 接受当前步骤并继续
- 🔄 Request Changes: 指定需要进行的修改
- ❌ Reject: 拒绝当前输出
help或/help: 显示使用说明history或/history: 查看代码生成历史reset或/reset: 清除会话数据
├── agents/ # 专门的代理实现
│ ├── code_generator.py # 带有验证的代码生成
│ ├── code_reviewer.py # 质量分析和报告
│ ├── code_optimizer.py # 自动修复和优化
│ └── user_proxy.py # 用户交互和审批
├── tools/ # 分析和实用工具
│ ├── code_analysis.py # 静态分析集成
│ ├── complexity_analyzer.py # 复杂度指标
│ ├── security_scanner.py # 安全漏洞检测
│ └── code_formatter.py # 代码格式化工具
├── models/ # Pydantic 数据模型
│ ├── code_request.py # 代码生成请求
│ ├── analysis_result.py # 分析结果和指标
│ └── optimization_result.py # 优化结果
├── prompts/ # 代理系统消息
│ ├── code_generator_prompts.py
│ ├── code_reviewer_prompts.py
│ └── code_optimizer_prompts.py
├── config/ # 配置管理
│ └── settings.py # 环境和工具设置
└── app.py # 主 Chainlit 应用程序
系统使用 AutoGen 的 RoundRobinGroupChat 进行代理协调:
- 代码生成器 → 创建初始代码并进行自我验证
- 代码审查器 → 分析质量、安全性和复杂性
- 代码优化器 → 应用修复和改进
- 用户代理 → 处理审批和反馈
# 安装开发依赖
pip install -r requirements.txt
# 安装 pre-commit 钩子 (可选)
pre-commit install
# 运行代码质量检查
ruff check .
mypy .
black --check .# 运行所有测试
pytest tests/ -v
# 运行并生成覆盖率报告
pytest tests/ -v --cov=agents --cov=tools --cov-report=term-missing
# 运行特定测试
pytest tests/test_code_generator.py -v- 风格: 遵循 PEP8 规范,使用 black 格式化
- 类型安全: 使用 mypy 进行全面的类型提示
- 文档: 所有函数使用 Google 风格的文档字符串
- 测试: 最低 80% 的测试覆盖率
- 安全: 使用 Bandit 进行安全扫描
创建可选的配置文件:
# Pylint 配置
config/pylint.rc
# Flake8 配置
config/setup.cfg
# Bandit 配置
config/bandit.yaml在 .env 文件中自定义质量阈值:
MIN_MAINTAINABILITY_INDEX=70.0
MAX_COMPLEXITY_SCORE=5.0
MAX_SECURITY_ISSUES=0
MAX_STYLE_VIOLATIONS=5目前支持包括:
- Python (完全支持)
- JavaScript/TypeScript (基本支持)
- Java (基本支持)
- Go (基本支持)
❌ Configuration Error - Model configuration file not found
解决方案: 确保 model_config.yaml 文件存在且配置有效
❌ Authentication failed
解决方案: 检查 .env 文件中的 API 密钥并确保其有效
❌ Pylint execution failed
解决方案: 确保分析工具已安装: pip install pylint flake8 bandit radon
❌ Port 8000 is already in use
解决方案: 在 .env 文件中更改端口,或终止现有进程
为获得更好性能:
- 使用更快的模型变体 (例如,
qwen-turbovsqwen-max) - 调整质量阈值以加快分析速度
- 为重复请求启用缓存
- 使用虚拟环境以实现更好的依赖隔离
在 .env 文件中启用调试模式:
DEBUG_MODE=true查看应用程序日志以获取详细的错误信息。
修改 prompts/ 目录中的提示以自定义代理行为:
code_generator_prompts.py- 代码生成指令code_reviewer_prompts.py- 质量分析标准code_optimizer_prompts.py- 优化策略
在你的 CI/CD 流水线中使用分析工具:
# 质量门脚本
python -c "
from tools.code_analysis import analyze_code_quality
import asyncio
result = asyncio.run(analyze_code_quality(open('code.py').read()))
exit(0 if result['passed'] else 1)
"通过修改 model_config.yaml 添加对自定义模型的支持:
provider: custom_provider.CustomChatClient
config:
model: custom-model
api_key: ${CUSTOM_API_KEY}
endpoint: ${CUSTOM_ENDPOINT}- Fork 本仓库
- 创建一个功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 开启一个 Pull Request
- 遵循 PEP8 风格指南
- 为新功能添加全面的测试
- 为 API 变更更新文档
- 确保所有质量检查通过
- 为所有函数添加类型提示
本项目采用 MIT 许可证 - 详情请见 LICENSE 文件。
- AutoGen 团队 - 提供了优秀的多代理框架
- Chainlit 团队 - 提供了直观的 Web 界面框架
- 阿里云 - 提供了百炼大模型 API 服务
- Python 社区 - 提供了卓越的分析工具生态系统
- 文档: 查看此 README 和代码内联文档
- 问题: 通过 GitHub Issues 报告错误和功能请求
- 社区: 在 GitHub Discussions 中参与讨论
- API 参考: 查看 AutoGen 和 Chainlit 官方文档
使用 ❤️、AutoGen、Chainlit 和百炼大模型构建