SE-Agent
综合介绍
SE-Agent 是一个创新的开源框架,专注于通过自我进化机制优化基于大语言模型(LLM)的代理在复杂多步推理任务中的表现。它通过轨迹级进化实现推理路径间的信息交换,突破单一轨迹的认知局限,显著提升问题解决能力。SE-Agent 在 SWE-bench Verified 测试中取得 80% 的 Top1 性能,位居开源框架榜首,展现了其在软件工程任务中的强大潜力。框架支持灵活的配置和扩展,适合开发者和研究人员用于探索复杂推理场景。用户可通过简单的安装和配置快速上手,结合其核心操作(修订、重组、优化)实现高效的推理优化。
功能列表
- 自我进化机制:通过修订、重组和优化三大核心操作,提升推理轨迹的多样性和质量。
- 轨迹修订:分析失败轨迹,识别问题并生成全新的解决方案,突破原有策略局限。
- 轨迹重组:整合多条轨迹的优点,生成更优的解决方案,实现协同效应。
- 轨迹优化:精简冗余步骤,提升轨迹效率,规避系统性错误。
- 灵活的扩展支持:允许用户自定义进化策略,适配不同任务需求。
- 批处理功能:支持批量处理多个 SWE-bench 实例,高效完成大规模任务。
- 压缩轨迹存储:采用 .tra 文件格式,减少 80% 存储空间,便于管理大量轨迹数据。
- 多模型支持:兼容 DeepSeek、OpenAI、Anthropic 等多种 LLM API,提升灵活性。
使用帮助
安装流程
SE-Agent 提供了两种安装方式,适合不同用户需求。以下是详细步骤:
方式一:使用 Pip 安装(推荐)
- 克隆仓库到本地:
git clone https://github.com/JARVIS-Xs/SE-Agent.git cd SE-Agent
- 安装依赖:
pip install -e .
- 验证安装:
sweagent --help
成功显示帮助信息表示安装完成。
方式二:使用 Conda 安装
- 克隆仓库:
git clone https://github.com/JARVIS-Xs/SE-Agent.git cd SE-Agent
- 创建 Conda 环境:
conda create -n SE python=3.12 conda activate SE
- 安装依赖:
pip install -e .
- 验证安装:
sweagent --help
API 密钥配置
SE-Agent 支持多个 LLM API(如 DeepSeek、OpenAI、Anthropic)。配置步骤如下:
- 创建
.env
文件:echo "DEEPSEEK_API_KEY=your_deepseek_key" > .env
或根据需要配置其他 API 密钥:
echo "OPENAI_API_KEY=your_openai_key" > .env echo "ANTHROPIC_API_KEY=your_anthropic_key" > .env
- 确保
.env
文件位于项目根目录,系统会自动加载密钥。
详细配置选项可参考项目中的 instruction.md
文件。
快速上手
运行 SE-Agent 的基本实验非常简单。以下是运行演示和实验的步骤:
- 运行演示模式(无需 API 调用):
python SE/basic_run.py --mode demo
输出示例:
✅ SE-Agent initialized successfully 🔄 Starting self-evolution with 3 iterations
- 运行实验模式:
python SE/basic_run.py --mode execute
这将启动一个完整的自我进化实验,执行默认配置的推理任务。
核心功能操作指南
SE-Agent 的三大核心操作(修订、重组、优化)是其独特优势,以下是具体使用方法:
1. 修订(Revision)
修订操作通过分析失败轨迹,识别错误或低效点,并生成全新的解决方案。例如,运行修订操作:
python SE/basic_run.py --config SE/configs/se_configs/experiment.yaml --mode execute
- 配置文件中可指定
"operator": "alternative_strategy"
,触发修订逻辑。 - 系统会自动分析轨迹,生成新的策略,适合处理复杂问题。
2. 重组(Recombination)
重组操作整合多条轨迹的优点,生成更优解。配置方式:
strategy_config = {
"iterations": [
{"base_config": "baseline", "operator": None},
{"base_config": "enhanced", "operator": "crossover"}
]
}
运行命令:
python SE/basic_run.py --config SE/configs/se_configs/experiment.yaml --mode execute
- 系统会从不同轨迹中提取高性能片段,合并生成新轨迹。
3. 优化(Refinement)
优化操作精简轨迹,移除冗余步骤。运行方式同上,配置文件中指定 "operator": "refinement"
。优化后的轨迹更高效,适合需要快速迭代的场景。
自定义进化策略
SE-Agent 支持用户开发自定义进化操作。步骤如下:
- 创建自定义操作类:
from SE.operators import TemplateOperator, register_operator class MyEvolutionOperator(TemplateOperator): def _generate_content(self, instance_info, problem_description, trajectory_data): return "Your generated strategy content"
- 注册操作:
register_operator("my_operator", MyEvolutionOperator)
- 在配置文件中指定使用
my_operator
,即可应用自定义策略。
详细开发指南见 SE/operators.md
。
批处理任务
对于大规模任务,SE-Agent 支持批处理:
sweagent run-batch \
--config config/default.yaml \
--agent.model.name deepseek/deepseek-chat \
--instances.subset verified \
--instances.slice :10
- 上述命令处理 SWE-bench 前 10 个验证实例。
- 可通过修改
--instances.slice
调整处理范围。
测试与调试
确保代码和功能正常运行:
- 运行所有测试:
pytest
- 运行框架特定测试:
python SE/test/run_operator_tests.py
- 代码格式化:
ruff check . ruff format .
应用场景
- 软件工程任务自动化SE-Agent 可用于自动化处理复杂的软件工程任务,如代码调试和优化,特别适合需要多步推理的场景。
- AI 研究与开发研究人员可利用 SE-Agent 的自我进化机制,探索大语言模型在复杂推理中的潜力,开发新型推理策略。
- 教育与培训开发者可通过 SE-Agent 的文档和示例,学习如何构建和优化基于 LLM 的代理,提升技术能力。
- 大规模数据处理批处理功能适合处理大量测试用例或任务实例,适用于企业级软件开发和测试。
QA
- SE-Agent 支持哪些 LLM?SE-Agent 支持 DeepSeek、OpenAI 和 Anthropic 的 API,用户可通过配置
.env
文件选择合适的模型。 - 如何处理安装失败?检查 Python 版本(推荐 3.12),确保依赖完整安装,或参考
instruction.md
排查环境问题。 - 如何开发自定义操作?参考
SE/operators.md
,通过继承TemplateOperator
类并注册新操作实现自定义策略。 - 运行实验需要多长时间?取决于任务复杂度和迭代次数,单次实验通常在几分钟内完成,批处理时间较长。