[!Note] 本仓库包含 Sage-A1.5 的模型权重与配置文件,采用 Hugging Face Transformers 格式。
这些模型产物兼容 Hugging Face Transformers、vLLM、SGLang 等框架。
Sage‑A1.5 是一个基于上海人工智能实验室的 Qwen3.6 和 Agents-A1 构建的 35B 混合专家(Mixture-of-Experts)智能体模型,旨在通过自适应能力组合推动长程科学问题求解。Sage‑A1.5 在 A1 的基础上,不仅学会了解决单一任务,还能在执行过程中组织工作并动态修正策略,突出三大核心能力:智能体编排、验证与开放式科学发现。
首先,智能体编排通过任务委派以及具有隔离上下文的子智能体间的并行协作,扩展了单智能体执行能力,使复杂任务能够被分解并并发处理,同时降低并行子智能体之间的相互干扰。 其次,智能体验证通过进度检查、证据校验和反思性策略修正来增强长程可靠性,使 Sage‑A1.5 能够识别无效的搜索路径并转向替代方案。 第三,开放式科学发现将智能体能力从回答预设问题拓展到开展探索性研究,将科学探究与交互式分析及可审查的研究产物有机联系起来。 我们希望 Sage‑A1.5 能为社区提供开放式科学发现的可用基础,为从长程任务执行迈向协作式、可验证、可审查的科学探索提供一条切实可行的路径。

我们欢迎开发者和企业集成并试用 Sage-A1.5,分享使用反馈。
我们在真实场景下的智能体工作流和研究导向型任务中对 Sage-A1.5 进行了评估,涵盖六个方向——长程搜索、工程任务、指令遵循、科学研究、通用智能体任务以及科学智能体任务。尽管处于约 35B 参数量级别,Sage-A1.5 相较于 Kimi-K3、GLM-5.3 和 GPT-5.6-sol 等前沿规模系统依然展现出极具竞争力的表现。它在 XBench-DS-2510(92.0)、IFBench(81.6)、PinchBench(90.0)、FrontierScience-Olympiad(81.0)、FrontierScience-Research(48.3)、CMT(80.0)和 OmniDocBench(91.5)上均取得了整体 SOTA,在 GAIA 上达到 95.1——高于我们所对比的所有更大规模模型。在同等约 35B 规模的模型中,它在广泛的任务上排名第一,包括 BrowseComp(81.7)、SWE-bench Pro(61.2)、MLE-Lite(65.2)、SciCode(44.3,与 Agents-A1 持平)、AA-LCR(81.0)、HLE w/ tools(55.1)、VitaBench(45.4)和 ChemCOTBench(66.5)。 与 A1 相比,它在工程和智能体负载上有了显著提升(SWE-bench Pro +17.6、SWE-bench Multilingual +14.0、PinchBench +13.1、MLE-Lite +21.3)。 这些结果表明,Sage-A1.5 兼具强大的长程搜索能力、稳健的科学推理和可靠的指令遵循能力,使其成为一个高效且能力出众的智能体模型,显著缩小了与更大规模前沿模型之间的差距。
🥇 整体 SOTA 🟢 同规模模型中最优(~35B)
| 评测基准 | 📏 同规模模型(~35B) | 🚀 更大规模模型 | |||||
|---|---|---|---|---|---|---|---|
| Sage-A1.5 | Agents-A1 | Qwen3.6-35B-A3B | Ornith-1.5 | Kimi-K3 | GLM-5.3 | GPT-5.6-sol | |
| 🔍 长程搜索 | |||||||
| GAIA | 95.1 | 96.0 🥇 | 78.6 | 77.6 | 92.2 | 92.2 | 88.3 |
| BrowseComp | 81.7(无智能体编排) 82.8 🟢(启用智能体编排) | 75.5 | 67.9 | 67.6 | 91.2 🥇 | 76.2 | 90.4 |
| DeepResearch-Bench2 | 43.7(无智能体编排) 47.5(启用智能体编排) | 37.5 | 45.1 | 48.6 🟢 | 52.4 | 55.7 | 57.9 🥇 |
| XBench-DS-2510 | 92.0 🥇 | 86.0 | 71.0 | 80.0 | 85.0 | 84.0 | 90.0 |
| ⚙️ 工程任务 | |||||||
| MLE-Lite | 65.2 🟢 | 43.9 | 37.9 | 39.4 | 72.7 | 72.7 | 77.3 🥇 |
| SciCode | 44.3 🟢 | 44.3 | 36.6 | 39.5 | 58.7 | 59.0 🥇 | 56.1 |
| SWE-bench Pro | 61.2 🟢 | 43.6 | 49.5 | 59.6 | 63.3 | 64.6 | 64.6 🥇 |
| SWE-bench Multilingual | 72.7 🟢 | 58.7 | 67.2 | 71.4 | 80.8 | 81.3 🥇 | 74.1 |
| 📋 指令遵循 | |||||||
| IFBench | 81.6 🥇 | 80.6 | 64.4 | 44.6 | 72.1 | 53.4 | 72.7 |
| AA-LCR | 81.0 🟢 | 74.2 | 71.7 | 73.2 | 88.7 🥇 | 79.7 | 84.0 |
| 🧪 科学研究 | |||||||
| FrontierScience-Olympiad | 81.0 🥇 | 79.0 | 60.3 | 70.0 | 69.0 | 67.0 | 73.0 |
| FrontierScience-Research | 48.3 🥇 | 40.0 | 2.9 | 6.7 | 21.7 | 16.7 | 26.7 |
| HiPhO | 45.3 | 46.4 🥇 | 37.7 | 39.5 | 42.4 | 39.7 | 46.2 |
| HLE w/ tools | 55.1 🟢 | 47.6 | 36.2 | 33.4 | 56.0 | 62.5 | 64.5 🥇 |
| CMT | 80.0 🥇 | 72.0 | 20 | 26.0 | 34.0 | 40.0 | 50.0 |
| CritPt | 20.0 🟢 | 4.3 | 0.3 | 2.9 | 23.4 | 19.1 | 32.3 🥇 |
| 🤖 通用智能体任务 | |||||||
| Agents' Last Exam (ALE-CLI) | 19.1 🟢 | 10.2 | 3.81 | 14.3 | 27.6 | 28.5 | 28.6 🥇 |
| VitaBench | 45.4 🟢 | 38.7 | 35.6 | 44.6 | 59.0 🥇 | 58.7 | 46.8 |
| PinchBench | 90.0 🥇 | 76.9 | 88.1 | 88.6 | 88.2 | 86.6 | 87.3 |
| 🔬 科学智能体任务 | |||||||
| ChemCOTBench | 66.5 🟢 | 64.0 | 59.3 | 53.8 | 82.5 🥇 | 78.3 | 77.9 |
| MatTools | 42.6 | 47.1 🟢 | 15.9 | 38.6 | 24.3 | 53.2 🥇 | 45.6 |
| OmniDocBench | 91.5 🥇 | 89.5 | 89.9 | 89.6 | 91.1 | - | 85.8 |
[!Note] SWE-Bench 系列:我们使用 mini-SWE-agent 框架,温度设为 1.0,top-p 设为 0.95,上下文窗口为 200K token,并启用了自动上下文压缩。所有评估均在完全离线的无网络环境中进行。
GLM-5.3 在 OmniDocBench 上的结果:GLM-5.3 是一个纯文本(单模态)模型,不支持多模态输入,因此其在 OmniDocBench(多模态基准)上的结果未予报告。
SGLang 是一个用于大语言模型和视觉语言模型的高速推理框架。
使用 uv 安装 SGLang:
uv venv --python 3.12 --seed --managed-python
source .venv/bin/activate
uv pip install sglang查看其文档了解更多详情。
以下命令将在 http://localhost:8000/v1 创建 API 端点:
标准版本:
python -m sglang.launch_server \
--model-path InternScience/Sage-A1.5 \
--port 8000 \
--mem-fraction-static 0.8 \
--context-length 262144 \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder多 Token 预测(MTP):
python -m sglang.launch_server \
--model-path InternScience/Sage-A1.5 \
--port 8000 \
--mem-fraction-static 0.8 \
--context-length 262144 \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder \
--speculative-algorithm EAGLE \
--speculative-num-steps 3 \
--speculative-eagle-topk 1 \
--speculative-num-draft-tokens 4Sage-A1.5 原生支持 256K 上下文窗口。若需将其扩展至 512K,可通过覆盖 RoPE 参数并启用 YaRN(factor: 2.0)来部署该模型:
SGLANG_ALLOW_OVERWRITE_LONGER_CONTEXT_LEN=1 \
python -m sglang.launch_server \
--model-path InternScience/Sage-A1.5 \
--port 8000 \
--context-length 524288 \
--json-model-override-args '{
"text_config": {
"rope_parameters": {
"mrope_interleaved": true,
"mrope_section": [11, 11, 10],
"rope_type": "yarn",
"rope_theta": 10000000,
"partial_rotary_factor": 0.25,
"factor": 2.0,
"original_max_position_embeddings": 262144
}
}
}' \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder \
--mem-fraction-static 0.88vLLM 是一个面向大语言模型的高吞吐、内存高效的推理与服务引擎。
通过 uv 从主分支安装 vLLM:
uv venv --python 3.12 --seed --managed-python
source .venv/bin/activate
uv pip install vllm --torch-backend=auto更多详情请参阅其官方文档。
以下命令将在 http://localhost:8000/v1 处创建 API 端点:
标准版本(1 张 GPU,262K 上下文):
vllm serve InternScience/Sage-A1.5 \
--port 8000 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder
纯文本模式(跳过视觉编码器以释放 KV 缓存内存):
vllm serve InternScience/Sage-A1.5 \
--port 8000 \
--tensor-parallel-size 1 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--language-model-only多 Token 预测(MTP):
vllm serve InternScience/Sage-A1.5 \
--port 8000 \
--max-model-len 262144 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--speculative-config '{"method":"mtp","num_speculative_tokens":3,"moe_backend":"triton"}'Sage-A1.5 原生支持 256K 上下文窗口。若需将其扩展至 512K,请通过 --hf-overrides 启用 YaRN(factor: 2.0)来部署该模型(vLLM 不再支持旧的 --rope-scaling 参数):
VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 \
vllm serve InternScience/Sage-A1.5 \
--port 8000 \
--max-model-len 524288 \
--hf-overrides '{
"text_config": {
"rope_parameters": {
"rope_type": "yarn",
"rope_theta": 10000000,
"partial_rotary_factor": 0.25,
"factor": 2.0,
"original_max_position_embeddings": 262144,
"mrope_interleaved": true,
"mrope_section": [11, 11, 10]
}
}
}' \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coderSage-A1.5 提供两种可选模式,基于上述标准服务配置构建。两种模式默认均为关闭状态:Agentic Orchestration Mode 通过注册工具来启用,Verification Mode 通过 chat-template 标志来启用。
Agentic Orchestration Mode(参见Highlights)允许模型将独立的子问题分派给多个子智能体,这些子智能体并行运行,各自拥有独立的上下文窗口和工具访问权限。该模式通过向模型暴露 spawn_subagent 工具来启用:当任务可分解为独立的子调查时,模型会调用该工具,由你的执行框架分别运行各子任务并返回结构化结果。
子智能体不受固定工具集的限制——可以为其配置部署中注册的任何工具(搜索、页面读取、代码执行、检索、内部 API 等)。默认情况下,子智能体继承主智能体的工具集;如需为其指定不同的(例如更精简的)工具集,可设置 subagent_tools。
在注册其他工具的同时,注册以下工具 Schema:
SPAWN_SUBAGENT_SCHEMA = {
"type": "function",
"function": {
"name": "spawn_subagent",
"description": (
"Dispatch one or more sub-agents IN PARALLEL to investigate independent "
"sub-questions. Each sub-agent has access to google_search and read_page "
"but CANNOT see your conversation. You MUST give each sub-agent everything "
"it needs via the `task`, `context`, and `expected_output` fields. Sub-agents "
"return structured JSON: {answer, status, evidence, unresolved_issues}."
),
"parameters": {
"type": "object",
"properties": {
"tasks": {
"type": "array",
"minItems": 1,
"description": "List of independent sub-tasks to dispatch in parallel.",
"items": {
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "Self-contained sub-question. The sub-agent has no other context.",
},
"context": {
"type": "string",
"description": "Background facts and constraints the sub-agent needs.",
},
"expected_output": {
"type": "string",
"description": "Form of the desired answer (e.g. 'a year YYYY', 'a person name').",
},
},
"required": ["task", "context", "expected_output"],
},
},
},
"required": ["tasks"],
},
},
}由于子代理无法看到主对话,每个任务都必须是自包含的——task、context 和 expected_output 均为必填项。每个子代理返回一个紧凑的 JSON 对象 {answer, status, evidence, unresolved_issues},批次结果按输入顺序交还主模型。
注意事项:
spawn_subagent 调用中。expected_output 作为格式约束作用于子代理的 answer(例如 'a year YYYY'、'a person name'),从而保持结果简短且易于合并。"UNKNOWN",并将 status 设为 unknown 或 insufficient_evidence,而不是猜测——使用答案前请先检查 status。max_tasks_per_spawn,默认 5;subagent_max_turns,默认 20)。超大批次会被拒绝并返回错误信息,而非截断处理。description 中提到了 google_search 和 read_page,因为那是参考配置。如果你为子代理提供了不同的工具集,请更新该描述以匹配实际工具——它是告诉主模型其子代理实际具备哪些能力的依据。验证模式(参见 Highlights)为可选功能,默认关闭。通过在 chat_template_kwargs 中传入 verification 来逐次请求启用;聊天模板随后会将验证协议触发器追加到系统消息末尾。
OpenAI Python 客户端(通过 extra_body):
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
response = client.chat.completions.create(
model="InternScience/Sage-A1.5",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Find the population of Beijing and cross-check it."},
],
tools=TOOLS,
extra_body={"chat_template_kwargs": {"verification": True}},
)
message = response.choices[0].message
print(message.reasoning_content) # 自我审查在思维链内部完成
print(message.content)curl:
curl http://localhost:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "InternScience/Sage-A1.5",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Find the population of Shanghai and cross-check it."}
],
"chat_template_kwargs": {"verification": true}
}'注意事项:
verification: true 却没有系统消息(或仅含空白字符),将返回 HTTP 400 错误。{"verification": true},而非 {"verification": "true"}。chat_template_kwargs 等同于 {"verification": false},提示词保持原样渲染。tools 均可正常工作。content 的同时也请读取 reasoning_content。为获得最佳生成质量,我们推荐以下采样参数:
temperature: 1.0top_p: 0.95top_k: 20min_p: 0.0presence_penalty: 1.5repetition_penalty: 1.0为给社区提供一套统一的 Agent 评估代码库以实现公平对比,我们还开源了一套评估框架,用于衡量 Agent 模型在核心能力上的表现,包括工具使用和多步推理。评估代码已包含在本仓库的 Sage-A1/evaluation 目录中。
我们使用该框架在标准化且可复现的设置下对已发布的模型进行评估。具体而言,模型在一组面向 Agent 的任务上进行测试,这些任务要求其理解用户目标、分解复杂指令、在必要时与工具或环境进行交互,并产出最终结果。模型卡片 中报告的评估结果均基于上述开源框架生成,以便用户复现实验、在同一协议下对比其他模型,并进一步将该基准扩展至新的 Agent 场景。(注意: 为确保公平对比,我们引用各模型原始技术报告中披露的基准结果。若某模型未报告对应基准的结果,则使用与我们的模型相同的评估协议对其进行评测。)
关于详细的评估脚本、任务定义、指标及复现步骤,请参阅评估代码库。
如果我们的工作对您有所帮助,欢迎引用。
@misc{lou2026sagea15longhorizonexecutionscientific,
title={Sage-A1.5: From Long-Horizon Execution to Scientific Exploration with Capability Composition},
author={Sage-A1.5 Team},
year={2026},
eprint={2610.28578},
archivePrefix={arXiv},
primaryClass={cs.AI},
url={https://arxiv.org/abs/2610.28578},
}