Skip to content

ivyinautumn/Autogen_based_codeAgent

Repository files navigation

🤖 AutoGen 多代理代码生成系统

一个生产级的多代理系统,用于通过 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

1. 安装

# 克隆仓库
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

2. 配置

# 复制环境模板
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

3. 模型配置

创建或更新 model_config.yaml:

# 百炼大模型配置
provider: autogen_ext.models.openai.OpenAIChatCompletionClient
config:
  model: qwen-max
  api_key: ${BAILIAN_API_KEY}
  base_url: ${BAILIAN_ENDPOINT}

4. 运行应用

# 启动 Chainlit 应用
chainlit run app.py -h

# 在浏览器中访问 http://localhost:8000

📋 使用指南

基本工作流

  1. 发起请求: 选择一个起始提示或描述你的代码需求
  2. 审查生成内容: 代码生成器创建初始代码并进行自我验证
  3. 质量分析: 代码审查器执行全面分析
  4. 优化: 代码优化器应用改进和修复
  5. 用户审批: 审查并批准最终代码

请求示例

简单函数

创建一个 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 进行代理协调:

  1. 代码生成器 → 创建初始代码并进行自我验证
  2. 代码审查器 → 分析质量、安全性和复杂性
  3. 代码优化器 → 应用修复和改进
  4. 用户代理 → 处理审批和反馈

🔧 开发

设置开发环境

# 安装开发依赖
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 文件存在且配置有效

API 密钥问题

❌ Authentication failed

解决方案: 检查 .env 文件中的 API 密钥并确保其有效

分析工具错误

❌ Pylint execution failed

解决方案: 确保分析工具已安装: pip install pylint flake8 bandit radon

端口已被占用

❌ Port 8000 is already in use

解决方案: 在 .env 文件中更改端口,或终止现有进程

性能优化

为获得更好性能:

  1. 使用更快的模型变体 (例如, qwen-turbo vs qwen-max)
  2. 调整质量阈值以加快分析速度
  3. 为重复请求启用缓存
  4. 使用虚拟环境以实现更好的依赖隔离

调试

.env 文件中启用调试模式:

DEBUG_MODE=true

查看应用程序日志以获取详细的错误信息。

📈 高级用法

自定义代理提示

修改 prompts/ 目录中的提示以自定义代理行为:

  • code_generator_prompts.py - 代码生成指令
  • code_reviewer_prompts.py - 质量分析标准
  • code_optimizer_prompts.py - 优化策略

与 CI/CD 集成

在你的 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}

🤝 贡献

  1. Fork 本仓库
  2. 创建一个功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 开启一个 Pull Request

开发指南

  • 遵循 PEP8 风格指南
  • 为新功能添加全面的测试
  • 为 API 变更更新文档
  • 确保所有质量检查通过
  • 为所有函数添加类型提示

📄 许可证

本项目采用 MIT 许可证 - 详情请见 LICENSE 文件。

🙏 致谢

  • AutoGen 团队 - 提供了优秀的多代理框架
  • Chainlit 团队 - 提供了直观的 Web 界面框架
  • 阿里云 - 提供了百炼大模型 API 服务
  • Python 社区 - 提供了卓越的分析工具生态系统

📞 支持

  • 文档: 查看此 README 和代码内联文档
  • 问题: 通过 GitHub Issues 报告错误和功能请求
  • 社区: 在 GitHub Discussions 中参与讨论
  • API 参考: 查看 AutoGen 和 Chainlit 官方文档

使用 ❤️、AutoGen、Chainlit 和百炼大模型构建

About

A multi-agent code assistant based on Autogen & Context-Engineering-Intro framework.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages