Agnes-AI/Agnes-3.0-Flash

Model

<p align="center">

75

stars

3

commits

Sep 11, 2026

updated

agnes
agnes-ai
conversational
custom_code
hybrid-attention
image-text-to-text
long-context
multimodal
reasoning
safetensors
text-generation
transformers

README

Agnes AI logo

Agnes AI website Open weights Apache 2.0

Agnes-3.0-Flash

Hello! 👋 Today we are introducing Agnes-3.0-Flash, an open-weights multimodal model built for people who want flagship-class reasoning without flagship-class hardware.

Highlights:

  • Competitive across core capabilities. Agnes-3.0-Flash posts competitive results across reasoning, coding, and instruction-following evaluations.
  • Built for demanding work. A 262 144-token context window, adjustable reasoning effort, tool calling, and text, image and video understanding.

Agnes-3.0-Flash benchmark reference results

## Agnes-3.0-Flash

Benchmarks

Reference results across contemporary models are shown below. The figures were compiled from different sources, harnesses, and model snapshots and do not constitute a controlled head-to-head comparison.

BenchmarkAgnes-3.0-FlashQwen3.6-35B-A3B
35B / 3B active
Kimi K2.5
1T / 32B active
Muse Glimmer
30B
Qwen3.5
27B
DeepSeek V4 Flash 0731
284B / 13B active
Qwen3.8
27B
Gemini 3.5 Flash
undisclosed
Qwen3.8 Flash Next
125B / 6B active
MiniMax M3
428B / 23B active
IFBench74.2064.443.777.075.675.879.576.381.382.9
SciCode38.0835.839.643.639.550.346.653.150.645.4
GPQA Diamond85.0584.178.983.585.890.890.592.292.392.9
AA-LCR68.3366.759.080.072.379.782.081.079.774.0
AA-Omniscience Accuracy23.0018.822.927.020.740.418.451.424.516.7

Higher is better for every row. Header parameter figures mix total and active counts, and harnesses and snapshot dates differ across sources, so treat cross-column comparisons as reference values rather than a controlled head-to-head evaluation.

Architecture

Agnes-3.0-Flash is a hybrid-attention decoder: three of every four layers run a gated delta rule (recurrent, with per-layer state independent of sequence length), and the fourth runs standard global attention. Only 18 of the 72 layers therefore hold a KV cache that grows with context.

Context length262 144 tokens
Decoder layers72 = 54 delta-rule recurrent + 18 global attention, alternating 3 : 1
Hidden size5120
Global attention24 query heads / 4 KV heads (6 : 1 GQA), head dim 256; RMS-norm on q and k, sigmoid-gated output
Delta-rule layers16 key heads / 48 value heads, head dim 128; causal conv (kernel 4) in front, gated RMS-norm; recurrent state in fp32
Feed-forwardSwiGLU, intermediate size 17408; plus a parallel SwiGLU 2048 branch in every layer
Positions3-axis rotary (text / height / width), interleaved mrope sections 11 : 11 : 10, base 1e7, applied to the first 25 % of each head dim (64 dims)
Vocabulary248 320
Vision tower27 layers, hidden 1152, patch 16, 2 × 2 spatial merge, projected to 5120

Quickstart

REMOTE CODE REQUIRED

Agnes-3.0-Flash ships its own model implementation. Always load it with trust_remote_code=True.

Requirements

pip install "transformers>=5.12" torch torchvision accelerate

Tested on transformers 5.12.1. Image and video inputs go through the bundled processor, which needs torchvision.

Transformers

from transformers import AutoModelForCausalLM, AutoTokenizer

path = "Agnes-AI/Agnes-3.0-Flash"
tok = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(
    path, dtype="bfloat16", device_map="auto", trust_remote_code=True
)

msgs = [{"role": "user", "content": "请用三句话解释什么是人工智能。"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=256)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))

Images and video

Image and video inputs go through the bundled processor (also remote code):

from transformers import AutoProcessor

proc = AutoProcessor.from_pretrained(path, trust_remote_code=True)
msgs = [{"role": "user", "content": [{"type": "image", "image": "photo.jpg"},
                                     {"type": "text", "text": "描述这张图。"}]}]
inputs = proc.apply_chat_template(msgs, add_generation_prompt=True, tokenize=True,
                                  return_dict=True, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256)
print(proc.batch_decode(out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)[0])

Reasoning effort

The chat template exposes three reasoning levels — high (default), medium, low — plus a thinking-off switch:

ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt",
                              reasoning_effort="medium")   # or enable_thinking=False

Tool calling

The chat template renders tool definitions for you. The model emits calls as <tool_call><function=…><parameter=…>, and you feed results back as a tool role message:

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Look up current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string", "description": "City name"}},
            "required": ["city"],
        },
    },
}]

msgs = [{"role": "user", "content": "What's the weather in Beijing right now?"}]
ids = tok.apply_chat_template(msgs, tools=tools, add_generation_prompt=True,
                              return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=256)
reply = tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)
# <tool_call>
# <function=get_weather>
# <parameter=city>
# Beijing
# </parameter>
# </function>
# </tool_call>

# run the tool, append the result, generate the final answer
msgs += [{"role": "assistant", "content": reply},
         {"role": "tool", "content": "Clear, 26°C, light northeasterly wind"}]

Over the OpenAI API pass tools= the same way. The server returns the text above verbatim by default; to get structured tool_calls, configure sglang with a tool-call parser matching this format (likewise a reasoning parser, if you want the thinking span in reasoning_content).

SGLang

serve.sh starts a server from a stock public image, overlaying three files onto the image's sglang package and nothing else. See sglang_patch/README.md.

docker run --gpus all --shm-size 64g -p 30001:8080 \
    -v /path/to/agnes-3.0-flash:/model \
    lmsysorg/sglang:nightly-dev-20260908-20ca564b \
    bash /agnes-3.0-flash/serve.sh --served-model-name Agnes-3.0-Flash

serve.sh forwards extra command-line arguments to sglang, which is how --served-model-name takes effect; --tp 2 works the same way. The server listens on port 8080 inside the container:

from openai import OpenAI

client = OpenAI(api_key="EMPTY", base_url="http://localhost:30001/v1")
response = client.chat.completions.create(
    model="Agnes-3.0-Flash",
    messages=[{"role": "user", "content": "Design a fault-tolerant event processing architecture."}],
    temperature=1.0,
    max_tokens=2000,
)
print(response.choices[0].message.content)

Pass stream=True for streaming; tools= and reasoning_effort= are accepted the same way.

Hardware Requirements

ResourceRecommendation
GPUs1 × NVIDIA H200 141 GB or NVIDIA H100 80 GB (or equivalent) at bf16
Tensor parallel--tp 1; --tp 2 for maximum context and concurrency
Weights on diskApproximately 66 GB for the bf16 checkpoint
Host memory128 GB or more recommended

Actual context length and concurrency depend on KV-cache allocation, runtime overhead, and tensor-parallel configuration; validate the target workload on the intended hardware.

SettingRecommended
temperature1.0
top_p0.95
top_k20
reasoning_efforthigh for hard reasoning, low for latency-sensitive traffic
max_tokens2000 or higher

These are the checkpoint's own generation_config.json defaults.

Model Capabilities

CapabilitySupport
Advanced reasoningYes, with high / medium / low effort levels
Coding and debuggingYes
Long-context analysis262 144 tokens
Image understandingYes
Video understandingYes
Tool callingYes (<tool_call> / <tool_response>)
StreamingYes
OpenAI-compatible APIsChat Completions via sglang

License

Released under the Apache License 2.0.

Citation

@misc{agnes30flash2026,
  title        = {Agnes-3.0-Flash},
  author       = {{Agnes AI}},
  year         = {2026},
  month        = sep,
  howpublished = {Open-weights model},
  url          = {https://agnes-ai.com/}
}

Contributors

Agnes-AI

3 commits

Agnes-AI/Agnes-3.0-Flash

Model

<p align="center">

75

stars

3

commits

Sep 11, 2026

updated

agnes
agnes-ai
conversational
custom_code
hybrid-attention
image-text-to-text
long-context
multimodal
reasoning
safetensors
text-generation
transformers

README

Agnes AI logo

Agnes AI website Open weights Apache 2.0

Agnes-3.0-Flash

Hello! 👋 Today we are introducing Agnes-3.0-Flash, an open-weights multimodal model built for people who want flagship-class reasoning without flagship-class hardware.

Highlights:

  • Competitive across core capabilities. Agnes-3.0-Flash posts competitive results across reasoning, coding, and instruction-following evaluations.
  • Built for demanding work. A 262 144-token context window, adjustable reasoning effort, tool calling, and text, image and video understanding.

Agnes-3.0-Flash benchmark reference results

## Agnes-3.0-Flash

Benchmarks

Reference results across contemporary models are shown below. The figures were compiled from different sources, harnesses, and model snapshots and do not constitute a controlled head-to-head comparison.

BenchmarkAgnes-3.0-FlashQwen3.6-35B-A3B
35B / 3B active
Kimi K2.5
1T / 32B active
Muse Glimmer
30B
Qwen3.5
27B
DeepSeek V4 Flash 0731
284B / 13B active
Qwen3.8
27B
Gemini 3.5 Flash
undisclosed
Qwen3.8 Flash Next
125B / 6B active
MiniMax M3
428B / 23B active
IFBench74.2064.443.777.075.675.879.576.381.382.9
SciCode38.0835.839.643.639.550.346.653.150.645.4
GPQA Diamond85.0584.178.983.585.890.890.592.292.392.9
AA-LCR68.3366.759.080.072.379.782.081.079.774.0
AA-Omniscience Accuracy23.0018.822.927.020.740.418.451.424.516.7

Higher is better for every row. Header parameter figures mix total and active counts, and harnesses and snapshot dates differ across sources, so treat cross-column comparisons as reference values rather than a controlled head-to-head evaluation.

Architecture

Agnes-3.0-Flash is a hybrid-attention decoder: three of every four layers run a gated delta rule (recurrent, with per-layer state independent of sequence length), and the fourth runs standard global attention. Only 18 of the 72 layers therefore hold a KV cache that grows with context.

Context length262 144 tokens
Decoder layers72 = 54 delta-rule recurrent + 18 global attention, alternating 3 : 1
Hidden size5120
Global attention24 query heads / 4 KV heads (6 : 1 GQA), head dim 256; RMS-norm on q and k, sigmoid-gated output
Delta-rule layers16 key heads / 48 value heads, head dim 128; causal conv (kernel 4) in front, gated RMS-norm; recurrent state in fp32
Feed-forwardSwiGLU, intermediate size 17408; plus a parallel SwiGLU 2048 branch in every layer
Positions3-axis rotary (text / height / width), interleaved mrope sections 11 : 11 : 10, base 1e7, applied to the first 25 % of each head dim (64 dims)
Vocabulary248 320
Vision tower27 layers, hidden 1152, patch 16, 2 × 2 spatial merge, projected to 5120

Quickstart

REMOTE CODE REQUIRED

Agnes-3.0-Flash ships its own model implementation. Always load it with trust_remote_code=True.

Requirements

pip install "transformers>=5.12" torch torchvision accelerate

Tested on transformers 5.12.1. Image and video inputs go through the bundled processor, which needs torchvision.

Transformers

from transformers import AutoModelForCausalLM, AutoTokenizer

path = "Agnes-AI/Agnes-3.0-Flash"
tok = AutoTokenizer.from_pretrained(path)
model = AutoModelForCausalLM.from_pretrained(
    path, dtype="bfloat16", device_map="auto", trust_remote_code=True
)

msgs = [{"role": "user", "content": "请用三句话解释什么是人工智能。"}]
ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=256)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))

Images and video

Image and video inputs go through the bundled processor (also remote code):

from transformers import AutoProcessor

proc = AutoProcessor.from_pretrained(path, trust_remote_code=True)
msgs = [{"role": "user", "content": [{"type": "image", "image": "photo.jpg"},
                                     {"type": "text", "text": "描述这张图。"}]}]
inputs = proc.apply_chat_template(msgs, add_generation_prompt=True, tokenize=True,
                                  return_dict=True, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=256)
print(proc.batch_decode(out[:, inputs["input_ids"].shape[1]:], skip_special_tokens=True)[0])

Reasoning effort

The chat template exposes three reasoning levels — high (default), medium, low — plus a thinking-off switch:

ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt",
                              reasoning_effort="medium")   # or enable_thinking=False

Tool calling

The chat template renders tool definitions for you. The model emits calls as <tool_call><function=…><parameter=…>, and you feed results back as a tool role message:

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Look up current weather for a city",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string", "description": "City name"}},
            "required": ["city"],
        },
    },
}]

msgs = [{"role": "user", "content": "What's the weather in Beijing right now?"}]
ids = tok.apply_chat_template(msgs, tools=tools, add_generation_prompt=True,
                              return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=256)
reply = tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)
# <tool_call>
# <function=get_weather>
# <parameter=city>
# Beijing
# </parameter>
# </function>
# </tool_call>

# run the tool, append the result, generate the final answer
msgs += [{"role": "assistant", "content": reply},
         {"role": "tool", "content": "Clear, 26°C, light northeasterly wind"}]

Over the OpenAI API pass tools= the same way. The server returns the text above verbatim by default; to get structured tool_calls, configure sglang with a tool-call parser matching this format (likewise a reasoning parser, if you want the thinking span in reasoning_content).

SGLang

serve.sh starts a server from a stock public image, overlaying three files onto the image's sglang package and nothing else. See sglang_patch/README.md.

docker run --gpus all --shm-size 64g -p 30001:8080 \
    -v /path/to/agnes-3.0-flash:/model \
    lmsysorg/sglang:nightly-dev-20260908-20ca564b \
    bash /agnes-3.0-flash/serve.sh --served-model-name Agnes-3.0-Flash

serve.sh forwards extra command-line arguments to sglang, which is how --served-model-name takes effect; --tp 2 works the same way. The server listens on port 8080 inside the container:

from openai import OpenAI

client = OpenAI(api_key="EMPTY", base_url="http://localhost:30001/v1")
response = client.chat.completions.create(
    model="Agnes-3.0-Flash",
    messages=[{"role": "user", "content": "Design a fault-tolerant event processing architecture."}],
    temperature=1.0,
    max_tokens=2000,
)
print(response.choices[0].message.content)

Pass stream=True for streaming; tools= and reasoning_effort= are accepted the same way.

Hardware Requirements

ResourceRecommendation
GPUs1 × NVIDIA H200 141 GB or NVIDIA H100 80 GB (or equivalent) at bf16
Tensor parallel--tp 1; --tp 2 for maximum context and concurrency
Weights on diskApproximately 66 GB for the bf16 checkpoint
Host memory128 GB or more recommended

Actual context length and concurrency depend on KV-cache allocation, runtime overhead, and tensor-parallel configuration; validate the target workload on the intended hardware.

SettingRecommended
temperature1.0
top_p0.95
top_k20
reasoning_efforthigh for hard reasoning, low for latency-sensitive traffic
max_tokens2000 or higher

These are the checkpoint's own generation_config.json defaults.

Model Capabilities

CapabilitySupport
Advanced reasoningYes, with high / medium / low effort levels
Coding and debuggingYes
Long-context analysis262 144 tokens
Image understandingYes
Video understandingYes
Tool callingYes (<tool_call> / <tool_response>)
StreamingYes
OpenAI-compatible APIsChat Completions via sglang

License

Released under the Apache License 2.0.

Citation

@misc{agnes30flash2026,
  title        = {Agnes-3.0-Flash},
  author       = {{Agnes AI}},
  year         = {2026},
  month        = sep,
  howpublished = {Open-weights model},
  url          = {https://agnes-ai.com/}
}

Contributors

Agnes-AI

3 commits