受人类认知双过程理论启发的生成式智能体框架,结合快思考与慢思考机制,通过上下文强化学习高效解决复杂交互式推理任务。
项目简介#
SwiftSage 是一个基于大语言模型的智能体系统,旨在解决需要复杂推理和多步交互的任务。其核心创新在于模仿人类的认知双过程理论(Dual-Process Theory),设计了双系统架构。
核心架构#
Swift Agent(快思考):基于较小参数模型(如 Llama 3.1 8B),负责快速直觉推理、生成初步计划和代码片段。主打高效率、低成本,对应人类的 System 1 认知模式。
Sage Agent(慢思考):基于大参数模型(如 Llama 3.1 405B),当 Swift 模式无法解决问题时介入。负责深度分析、错误纠正、复杂逻辑推演,对应人类的 System 2 认知模式。
Feedback Agent(反馈评估):基于中等/大模型(如 Llama 3.1 70B),充当评判员。评估 Swift/Sage 的输出,给出具体反馈文本和数值奖励(1-10分)。
核心创新点#
In-context Reinforcement Learning (ICRL):无需梯度更新的强化学习机制。通过 Prompt 将历史反馈和奖励注入上下文,指导 Agent 优化下一步动作,无需模型微调。
Python 代码执行器:内置沙箱环境。Agent 生成的动作表现为 Python 代码,由执行器运行并获得结果或状态变化,采用 Plan-Ground-Execute 统一任务范式。
动态切换机制:根据任务难度和 Feedback 的评分,自动在 Swift 模式和 Sage 模式之间切换,优化计算资源分配。
工作流程#
- 用户提交 Problem,SwiftSage 初始化
- Swift Agent 生成解题思路和 Python 代码,Executor 执行代码返回结果
- Feedback Agent 评估结果:
- 分数达标(默认≥8)→ 返回最终答案
- 分数不足 → 将反馈传回 Swift Agent,进行下一轮迭代(最多 max_iterations 次)
- 若 Swift 在最大迭代次数后仍失败,切换至 Sage Agent 进行深度分析
适用场景#
- 复杂的科学推理任务(ScienceWorld 基准)
- 多步数学问题求解(如二次方程求解)
- 逻辑判断与陷阱问题(如数值比较 9.9 vs 9.11、字符统计)
- 需要平衡响应速度与推理质量的交互式应用
学术成果#
在 ScienceWorld 基准的30个任务中显著优于 SayCan、ReAct、Reflexion 等方法。项目论文发表于 NeurIPS 2023 Spotlight。
安装与使用#
# 安装
pip install git+https://github.com/SwiftSage/SwiftSage.git
# 快速运行
swiftsage --problem "How many letter r are there in 'My strawberry is red.'?" \
--api_provider Together \
--swift_model_id meta-llama/Meta-llama-3.1-8B-Instruct-Turbo \
--feedback_model_id meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo \
--sage_model_id meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo
关键配置参数#
| 参数 | 默认值 | 说明 |
|---|---|---|
--api_provider | Together | API提供商 (Together, SambaNova, Groq) |
--max_iterations | 5 | Swift Agent 最大重试次数 |
--reward_threshold | 8 | 成功奖励分阈值(1-10) |
--swift_temperature | 0.5 | Swift 模型温度 |
--start_with_sage | False | 跳过 Swift 直接使用 Sage |
Python API#
from swiftsage.agents import SwiftSage
s2 = SwiftSage(
dataset, embeddings, prompt_template_dir,
swift_config, sage_config, feedback_config,
use_retrieval=False, start_with_sage=False
)
reasoning, solution, messages = s2.solve(
problem="Solve 3x^2 + 7.15x + 4 = 0",
max_iterations=10, reward_threshold=8
)
项目版本#
- V2 (beta):当前开发版本,仍在完善中
- V1 代码:位于
science_world分支,对应 NeurIPS 2023 论文实现
模块结构#
swiftsage/
├── agents/
│ ├── swiftsage.py # 主协调器
│ ├── swift_agent.py # Swift Agent
│ ├── sage_agent.py # Sage Agent
│ └── feedback_agent.py # Feedback Agent
├── utils/
│ ├── LLMClient # LLM API 封装
│ └── PythonExecutor # 代码执行沙箱
└── prompt_templates/ # Jinja 提示模板
核心贡献者#
Bill Yuchen Lin, Yifan Song 等