SE-Agent是一个为大型语言模型(LLM)智能体设计的自我进化框架。 它通过一种轨迹层面的进化机制,让不同的推理路径能够交换信息,这打破了单一思考路径的局限性。 SE-Agent能够扩展搜索范围,避免陷入局部最优解,并在群体互动中展现出新的能力。 这个框架在SWE-bench(一个软件工程基准测试)上取得了目前最好的性能表现,真正实现了大模型智能体在复杂推理任务中的自主进化。 它通过分析、结合并优化不同的解决方案,让AI智能体能更有效地解决复杂的编程问题。
Function List
- 自我进化框架: 核心机制通过轨迹层面的进化,实现不同推理路径间的信息交换,打破单一路径的认知局限。
- 三种核心进化操作:
- 修正 (Revision): 智能体通过深度自我反思,分析失败的解决方案,并生成全新的、结构上不同的解题思路。
- 重组 (Recombination): 智能地融合多个不同解决方案中的优点,创造出更优的全新解决方案。
- 精炼 (Refinement): 借鉴所有解决方案的经验,优化有潜力的方案,消除冗余步骤,并根据历史失败经验提供风险规避指导。
- 领先的性能: 在行业标准的SWE-bench测试中,无论是使用开源还是闭源的大语言模型,SE-Agent都展现出顶尖的性能,解决了80%的已验证问题。
- 灵活的扩展性: 支持用户创建自定义的进化策略(Operator),以适应不同的需求和场景。
- 高效的轨迹管理: 包含一个轨迹系统,用于压缩存储运行记录(可减少80%的体积),积累跨迭代的知识,并利用大模型进行轨迹分析和总结。
- Batch processing capability: 支持对SWE-bench中的多个实例进行批量处理和测试。
Using Help
下面将详细介绍如何安装和使用SE-Agent框架。
Installation and Configuration
选项一:使用Pip(推荐)
这是最简单直接的安装方式。
- 首先,从GitHub克隆代码仓库到你的本地电脑:
git clone https://github.com/JARVIS-Xs/SE-Agent.git ```2. 进入项目目录: ```shell cd SE-Agent
- 使用pip进行可编辑模式的安装,这样可以让你在修改代码后立即生效:
pip install -e .
选项二:使用Conda虚拟环境
如果你希望为项目创建一个隔离的环境,避免与其他Python项目产生冲突,Conda是一个很好的选择。
- Clone the code repository:
git clone https://github.com/JARVIS-Xs/SE-Agent.git
- Go to the project catalog:
cd SE-Agent
- 使用Conda创建一个名为
SE
的新环境,并指定Python版本为3.12:conda create -n SE python=3.12
- 激活这个新创建的环境:
conda activate SE
- 最后,在这个环境中安装SE-Agent:
pip install -e .
Verify Installation
安装完成后,你可以运行以下命令来检查是否安装成功。如果看到帮助信息或者测试脚本正常运行,说明安装已完成。
sweagent --help
python SE/test/run_operator_tests.py
Configuring the API Key
SE-Agent需要连接大语言模型服务才能工作。你需要至少一个API密钥。
- 在项目的根目录(
SE-Agent/
)下,创建一个名为.env
of the document. - 根据你拥有或希望使用的模型服务,将对应的密钥信息写入文件。
例如,如果你使用DeepSeek的API:
echo "DEEPSEEK_API_KEY=你的DeepSeek密钥" > .env
或者,如果你使用OpenAI的API:
echo "OPENAI_API_KEY=你的OpenAI密钥" > .env
或者,使用Anthropic的API:
echo "ANTHROPIC_API_KEY=你的Anthropic密钥" > .env
程序会自动加载.env
文件中的密钥信息。
Basic operation process
1. 运行演示(无API消耗)
这是一个不调用任何在线大模型API的演示模式,可以让你快速了解程序运行流程。
python SE/basic_run.py --mode demo
2. 运行你的第一个进化实验
这个命令会启动一个完整的自我进化过程,智能体将开始解决一个预设的问题。这个过程会调用你配置的大模型API。
python SE/basic_run.py --mode execute
执行后,你将看到类似下面的输出,表示智能体已成功初始化并开始进行3轮自我进化:
✅ SE-Agent initialized successfully
🔄 Starting self-evolution with 3 iterations
3. 进行批量处理
如果你需要在大规模数据集(例如SWE-bench)上测试SE-Agent的性能,可以使用run-batch
命令。这个命令允许你指定配置文件、模型、数据集子集和处理范围。
sweagent run-batch \
--config config/default.yaml \
--agent.model.name deepseek/deepseek-chat \
--instances.subset verified \
--instances.slice :10
这个例子将使用deepseek/deepseek-chat
模型处理SWE-bench
centerverified
子集的前10个问题。
Custom Development
SE-Agent的强大之处在于它的可扩展性。你可以开发自己的进化操作算子(Operator)来定义全新的进化策略。
下面是一个简单的例子,展示如何创建一个自定义算子:
- surname Cong
SE.operators
导入基类TemplateOperator
和注册函数register_operator
The - 创建一个继承自
TemplateOperator
的新类,例如MyEvolutionOperator
The - 在新类中实现
_generate_content
方法,这个方法就是你自定义的进化逻辑。 - 最后,使用
register_operator
函数将你的新算子注册到框架中,并给它一个独一无二的名字。
from SE.operators import TemplateOperator, register_operator
class MyEvolutionOperator(TemplateOperator):
def _generate_content(self, instance_info, problem_description, trajectory_data):
# 在这里实现你的自定义进化策略
return "这是由我的新算子生成的内容"
# 注册后就可以在配置文件中使用了
register_operator("my_operator", MyEvolutionOperator)
application scenario
- 软件工程自动化
SE-Agent可以自动解决软件开发中遇到的问题,例如修复错误(bug)、优化代码性能或根据需求添加新功能。它通过模拟人类开发者的思考过程,尝试多种解决方案,并从中学习和进化,最终找到最佳方案。 - 复杂问题求解研究
在学术研究领域,研究人员可以利用SE-Agent作为一个实验平台,探索AI智能体在解决复杂问题时的推理和学习能力。通过自定义不同的进化策略,可以研究哪种方法对于特定类型的问题更有效。 - AI智能体能力评估
SE-Agent框架可以在标准化的基准测试(如SWE-bench)上运行,用于评估和比较不同大语言模型在软件工程任务上的表现。这为模型开发者和使用者提供了一个客观的性能衡量标准。
QA
- 什么是SE-Agent的核心思想?
SE-Agent的核心思想是“自我进化”。它不像传统AI那样只尝试一次解决问题,而是会生成多个解决方案(称为“轨迹”),然后通过分析失败的、融合成功的,不断迭代优化,就像生物进化一样,最终产生一个高质量的解决方案。 - SE-Agent支持哪些大语言模型?
SE-Agent通过litellm
库来支持多种模型API,包括DeepSeek、OpenAI和Anthropic等。你只需要在.env
文件中配置相应的API密钥即可使用。 - 我需要专门的硬件来运行SE-Agent吗?
运行SE-Agent本身对本地硬件要求不高,因为它主要是调用云端的大语言模型API来完成计算密集型任务。你需要的是一个稳定的网络连接和足够的API额度。 - 如何为SE-Agent贡献代码?
SE-Agent是一个开源项目,你可以在GitHub上通过提交Issues来报告问题或提出建议,也可以通过提交Pull Requests来直接贡献代码。在开发前,建议先阅读项目中的开发文档。