InternScience/Sage-A1.5
模型介绍
文件和版本
Pull Requests
讨论
分析

Sage-A1.5

🏠 主页 | Technical Report 技术报告 | 🎁 免费试用
Hugging Face Hugging Face | GitHub Github | Model Scope ModelScope

[!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 基准测试概览

核心亮点

  • 智能体编排:在具有独立上下文的子智能体之间编排并行调查,使它们能够挑战既有假设、通过证据修正结论,并将各自发现综合为完整的结果。
  • 验证模式:一种可选的自审能力,内嵌于模型自身的思维链之中——模型会在推理过程中暂停,审视已确立的内容与失败之处,随后在同一轮次中沿修正后的方向继续行动,无需外部评审者。
  • 智能体推理:Sage-A1.5 擅长将复杂任务分解为可执行的子步骤,进行前瞻性规划,并根据中间结果动态调整策略。
  • 工具调用:原生支持函数调用与工具集成,可与 API、代码解释器、搜索引擎及其他外部工具实现无缝交互。
  • 科学与专业推理:支持工具辅助的科学推理及专业领域知识问答。
  • 指令遵循:能够精准执行跨多种领域的、包含多重约束的详细指令。

我们欢迎开发者和企业集成并试用 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.5Agents-A1Qwen3.6-35B-A3BOrnith-1.5Kimi-K3GLM-5.3GPT-5.6-sol
🔍 长程搜索
GAIA95.196.0 🥇78.677.692.292.288.3
BrowseComp81.7(无智能体编排)
82.8 🟢(启用智能体编排)
75.567.967.691.2 🥇76.290.4
DeepResearch-Bench243.7(无智能体编排)
47.5(启用智能体编排)
37.545.148.6 🟢52.455.757.9 🥇
XBench-DS-251092.0 🥇86.071.080.085.084.090.0
⚙️ 工程任务
MLE-Lite65.2 🟢43.937.939.472.772.777.3 🥇
SciCode44.3 🟢44.336.639.558.759.0 🥇56.1
SWE-bench Pro61.2 🟢43.649.559.663.364.664.6 🥇
SWE-bench Multilingual72.7 🟢58.767.271.480.881.3 🥇74.1
📋 指令遵循
IFBench81.6 🥇80.664.444.672.153.472.7
AA-LCR81.0 🟢74.271.773.288.7 🥇79.784.0
🧪 科学研究
FrontierScience-Olympiad81.0 🥇79.060.370.069.067.073.0
FrontierScience-Research48.3 🥇40.02.96.721.716.726.7
HiPhO45.346.4 🥇37.739.542.439.746.2
HLE w/ tools55.1 🟢47.636.233.456.062.564.5 🥇
CMT80.0 🥇72.02026.034.040.050.0
CritPt20.0 🟢4.30.32.923.419.132.3 🥇
🤖 通用智能体任务
Agents' Last Exam (ALE-CLI)19.1 🟢10.23.8114.327.628.528.6 🥇
VitaBench45.4 🟢38.735.644.659.0 🥇58.746.8
PinchBench90.0 🥇76.988.188.688.286.687.3
🔬 科学智能体任务
ChemCOTBench66.5 🟢64.059.353.882.5 🥇78.377.9
MatTools42.647.1 🟢15.938.624.353.2 🥇45.6
OmniDocBench91.5 🥇89.589.989.691.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

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 4

超长上下文支持:

Sage-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.88

vLLM

vLLM 是一个面向大语言模型的高吞吐、内存高效的推理与服务引擎。

通过 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_coder

高级模式

Sage-A1.5 提供两种可选模式,基于上述标准服务配置构建。两种模式默认均为关闭状态:Agentic Orchestration Mode 通过注册工具来启用,Verification Mode 通过 chat-template 标志来启用。

Agentic Orchestration

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)。超大批次会被拒绝并返回错误信息,而非截断处理。
  • 上方 schema 的 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 错误。
  • 传入 JSON 布尔值,而非字符串:{"verification": true},而非 {"verification": "true"}。
  • 省略 chat_template_kwargs 等同于 {"verification": false},提示词保持原样渲染。
  • 验证模式与工具调用相互独立——无论是否传入 tools 均可正常工作。
  • 自我审查以推理内容的形式输出,因此在读取 content 的同时也请读取 reasoning_content。

推荐采样参数

为获得最佳生成质量,我们推荐以下采样参数:

  • temperature: 1.0
  • top_p: 0.95
  • top_k: 20
  • min_p: 0.0
  • presence_penalty: 1.5
  • repetition_penalty: 1.0

Agent 能力评估

为给社区提供一套统一的 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}, 
}