Model comparison · 2026-10-22
Agents-A1 vs Sage-A1.5: which agent model for which job
Compare Agents-A1 and Sage-A1.5: 35B MoE, 262,144 context, images, JSON, a subagent tool; both are free until 31 October 2026.
Short answer: Agents-A1 for general agent work, Sage-A1.5 for scientific tasks with subagents
LLMTR is a gateway that gives access to language models from different providers through one OpenAI-compatible API. Agents-A1 (internlm/agents-a1-free) and Sage-A1.5 (internlm/sage-a1.5-free) can be called free of charge until 31 October 2026, 23:59 (TRT) on the /v1/chat/completions endpoint at https://llmtr.com/v1 with the API key from your llmtr.com account. If you are building a general agent that does long-horizon search, engineering, scientific research, instruction following and tool calling, use Agents-A1; for a long-horizon scientific task that has to split the work across subagents, check progress and verify evidence, use Sage-A1.5. After 31 October 2026 they are replaced by the paid Qwen3.6 35B-A3B (qwen/qwen3.6-35b-a3b) or the free Nemotron 3.5 Super VL (nvidia/nemotron-3.5-super-vl-free).
Both are mixture-of-experts (MoE) models with 35 billion total and 3 billion active parameters. On LLMTR both offer a 262,144-token context window, accept text and images, support json_object and json_schema through response_format, and call tools; their weights are under Apache 2.0. The difference is in how the work is organised: Sage-A1.5's model card says the model learns not only to solve individual tasks but also to organise the work and revise its approach during execution.
Agents-A1 or Sage-A1.5?
Agents-A1's model card describes it as InternScience's 35B MoE agent model, scaled across long-horizon search, engineering, scientific research, instruction following and tool calling, with native function calling. Sage-A1.5's card describes a 35B MoE agent model based on Qwen3.6 and Agents-A1, and describes subagents with isolated contexts working in parallel. Going by those descriptions, use Agents-A1 in a loop in which one agent moves step by step, and Sage-A1.5 in an arrangement that splits a task into independent sub-questions.
The table shows the two rows with the values in the LLMTR catalog and the two model cards. Context, input types, JSON and the reasoning switch are the same on both; the choice depends on the shape of the task.
| Property | Agents-A1 | Sage-A1.5 |
|---|---|---|
| What the model card says | 35B MoE agent model; long-horizon search, engineering, scientific research, instruction following, tool calling | 35B MoE agent model based on Qwen3.6 and Agents-A1; learns to organise the work and revise its approach during execution |
| Parameters and licence | 35 billion total, 3 billion active; Apache 2.0 | 35 billion total, 3 billion active; Apache 2.0 |
| Context window | 262,144 tokens | 262,144 tokens |
| Input | text and images (URL or base64) | text and images (URL or base64) |
| JSON | json_object and json_schema | json_object and json_schema |
| tool_choice | auto or a named function | auto or a named function |
| Subagents | the card defines no subagent tool | you define the spawn_subagent tool and run the subtasks in your own code |
| Reasoning | on by default; off with "reasoning": false or :fast | on by default; off with "reasoning": false or :fast |
| Usage | free until 31 October 2026, 23:59 (TRT); 500,000 tokens a day, new accounts start with a smaller allowance on their first day | free until 31 October 2026, 23:59 (TRT); 500,000 tokens a day, new accounts start with a smaller allowance on their first day |
Subagents on Sage-A1.5: you define the spawn_subagent tool
According to Sage-A1.5's model card, subagent orchestration is enabled by exposing a tool named spawn_subagent to the model; the card says the model calls it whenever a task breaks down into independent investigations. On LLMTR this is an ordinary tool call: you define the tool in the tools list of the request, and if the model calls it you run the subtasks from the returned tool_calls in your own code and send each result back as a role: "tool" message with the same tool_call_id. Your code runs the subagents, not LLMTR.
The card's definition has an array named tasks; each item carries task (a self-contained sub-question), context (the background and constraints the subagent needs) and expected_output (the form of the answer you want). The card says subagents cannot see the main conversation, so put everything they need in context. You can send each subtask in a separate request to Sage-A1.5, to Agents-A1 or to another model.
On both models the LLMTR model card tells you to use auto or a named function for tool_choice. Send auto to leave the subagent decision to the model; if the tool must be called at a given step, use {"type": "function", "function": {"name": "spawn_subagent"}} on that request.
Sending the same research task to both models
The Python example below sends the same research task to both models. Agents-A1 runs without tools; Sage-A1.5 gets the spawn_subagent definition and auto as tool_choice; if the model calls the tool the subtasks are printed, otherwise the answer text. In a real flow you would run those subtasks, send their results back as role: "tool" messages and ask Sage-A1.5 for the final answer.
Both models reason before answering by default; the reasoning text arrives in reasoning_content and reasoning tokens count toward max_tokens. That is why max_tokens is 8192 in the example. If the response comes back with finish_reason length, raise the limit; on short intermediate steps you can turn reasoning off with "reasoning": false or by adding :fast to the model id. reasoning_effort returns 400 on these two rows.
OpenAI Python SDK example that sends the same research task to Agents-A1 and to Sage-A1.5 with the spawn_subagent tool defined, through https://llmtr.com/v1/chat/completions, and prints the returned tool calls.
import json
import os
from openai import OpenAI
client = OpenAI(base_url="https://llmtr.com/v1", api_key=os.environ["LLMTR_API_KEY"])
TASK = "Review how three common degradation mechanisms of perovskite solar cells are studied, and give one open question for each."
# The subagent tool in the shape Sage-A1.5's model card describes. Your own code runs each task.
SPAWN_SUBAGENT = {
"type": "function",
"function": {
"name": "spawn_subagent",
"description": "Run independent sub-questions in parallel. A subagent sees only what you pass in its task.",
"parameters": {
"type": "object",
"properties": {
"tasks": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"task": {"type": "string"},
"context": {"type": "string"},
"expected_output": {"type": "string"},
},
"required": ["task", "context", "expected_output"],
},
}
},
"required": ["tasks"],
},
},
}
# Both ids: no charge until 31 October 2026 23:59 (TRT), 410 from 1 November 2026.
# Then use "qwen/qwen3.6-35b-a3b" (paid, tool_choice "auto") or "nvidia/nemotron-3.5-super-vl-free".
RUNS = {
"internlm/agents-a1-free": {},
"internlm/sage-a1.5-free": {"tools": [SPAWN_SUBAGENT], "tool_choice": "auto"},
}
for model, extra in RUNS.items():
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": TASK}],
max_tokens=8192,
**extra,
)
message = response.choices[0].message
print(model, response.choices[0].finish_reason, response.usage.prompt_tokens, response.usage.completion_tokens)
for call in message.tool_calls or []:
tasks = json.loads(call.function.arguments).get("tasks", [])
print(" tool call:", call.function.name, call.id, len(tasks), "subtasks")
for item in tasks:
print(" -", item.get("task"))
if not message.tool_calls:
print(message.content)
Which one when?
The choices below follow from what the two model cards describe and from the features the rows share on LLMTR; compare output quality with your own examples.
- A general flow in which one agent moves step by step through search, code or tool calls: Agents-A1, with tool_choice auto.
- A long-horizon scientific investigation that splits a task into independent sub-questions and gathers the results: Sage-A1.5, with the spawn_subagent tool.
- A flow in which a specific tool must be called at a specific step: either works; send a named function on that request.
- Agent steps that include a screenshot, a figure or a table image: both accept text and images; choose by whether the task needs one agent or subagents.
- Sensitive, personal or customer data: do not use either row, which is free until 31 October 2026; prompts and completions may be logged by the provider and used to improve the model.
Daily allowance and after 1 November 2026
Both rows are free until 31 October 2026, 23:59 (TRT) and take nothing from your balance. Each account can use 500,000 tokens a day on each model separately; input and output are counted as one total, reasoning tokens included, the allowance renews every day at 00:00 (TRT), and new accounts start with a smaller allowance on their first day. If you also send the subtasks to Sage-A1.5, they all use the same allowance; those you send to Agents-A1 come out of that model's separate allowance. When the allowance runs out the request returns 429 rate_limit_error, and the Retry-After header tells you when to try again.
From 1 November 2026, 00:00 (TRT), both ids return 410 model_retired and requests are not redirected to another model; you have to change the model id. To continue on a paid model, use Qwen3.6 35B-A3B (qwen/qwen3.6-35b-a3b): it is in the same size class, Sage-A1.5's card says it is built on Qwen3.6, and on LLMTR it costs $0.07 input and $0.70 output per 1M tokens; it does not support the tool_choice forms that force a tool call, so send auto there. To continue free after 31 October 2026, use the daily-quota row of Nemotron 3.5 Super VL (nvidia/nemotron-3.5-super-vl-free).
Comparing Agents-A1 and Sage-A1.5 on the same task
Send the same research task to both models with one LLMTR key, define the spawn_subagent tool for Sage-A1.5, and compare the results.
- Key. Create an API key on llmtr.com under Dashboard > API Keys.
- Same task. Send the same task with both model ids to the https://llmtr.com/v1/chat/completions endpoint; add the spawn_subagent definition to the Sage-A1.5 request.
- Choice. Compare the answers, the subtask list and the token usage, then choose the model id.
Frequently asked questions
Who runs the subagents on Sage-A1.5?
You do. You define the spawn_subagent tool in the tools list; if the model calls it, you run the returned subtasks in your own code and send the results back as role: "tool" messages with the same tool_call_id. The model card describes the subagent arrangement through this tool.
How is tool_choice used on Agents-A1 and Sage-A1.5?
The LLMTR model card tells you to use auto or a named function on both models. Send auto to let the model decide, or {"type": "function", "function": {"name": "..."}} to force a specific tool.
What happens to these two models after 1 November 2026?
Both return 410 model_retired and are not redirected to another model. To continue on a paid model use qwen/qwen3.6-35b-a3b; to continue free after 31 October 2026 use nvidia/nemotron-3.5-super-vl-free.