Osaurus-AI commited on
Commit
4de465a
·
verified ·
1 Parent(s): 4fb87e5

Nanbeige4.2-3B looped-transformer bundle (JANG)

Browse files
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ tokenizer.json filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - en
4
+ - zh
5
+ library_name: mlx
6
+ license: apache-2.0
7
+ base_model: Nanbeige/Nanbeige4.2-3B
8
+ pipeline_tag: text-generation
9
+ tags:
10
+ - mlx
11
+ - jang
12
+ - mxfp8
13
+ - quantized
14
+ - apple-silicon
15
+ - nanbeige
16
+ - looped-transformer
17
+ - reasoning
18
+ - osaurus
19
+ ---
20
+
21
+ <p align="center"><a href="https://osaurus.ai"><img src="./osaurus-x-banner.png" alt="Osaurus AI"></a></p>
22
+
23
+ # OsaurusAI/Nanbeige4.2-3B-MXFP8
24
+
25
+ MXFP8 build of [Nanbeige/Nanbeige4.2-3B](https://huggingface.co/Nanbeige/Nanbeige4.2-3B) — a 4.17B-parameter **Looped Transformer** reasoning model (en + zh, 256K context), quantized for Apple Silicon with uniform MXFP8 (e4m3) weights. This is format coverage — see the fidelity table before choosing it.
26
+
27
+ > ### ⚠️ This architecture needs a loader that knows about the loop
28
+ >
29
+ > `num_loops = 2`: the same 22 decoder layers run **twice** over shared weights,
30
+ > for an effective depth of 44. Two consequences a generic loader gets wrong:
31
+ >
32
+ > - **The KV cache has 44 slots, not 22** (slot = `layer_idx + loop_idx * num_hidden_layers`).
33
+ > A 22-slot cache does not crash — it emits fluent, confident, **wrong** tokens
34
+ > from the first one. This is verified with a negative control, not theory.
35
+ > - **The final norm runs at the end of every loop**, not once at the end
36
+ > (`skip_loop_final_norm = false`). Loop 0's normed output is loop 1's input.
37
+ >
38
+ > `mlx_lm` 0.31.x has no `nanbeige` model class, so `mlx_lm.generate` alone will
39
+ > not load this bundle. Use a runtime that implements the loop (see **Usage**).
40
+
41
+ ## Bundle
42
+
43
+ | Field | Value |
44
+ |---|---|
45
+ | Source | `Nanbeige/Nanbeige4.2-3B` @ `fab06df` (Apache-2.0) |
46
+ | Architecture | `nanbeige` — 22 layers × 2 loops (effective depth 44), 4.17B params, 256K ctx |
47
+ | On-disk size | 4.0 GB (1 shard) |
48
+ | Quantization | uniform 8-bit MX, no per-module overrides, group size 32 |
49
+ | Norms, router bias | fp16 passthrough — plain Llama RMSNorm, **no +1 shift** |
50
+ | Attention | 48 heads / 8 KV heads (GQA), `head_dim` 128 — note `n_heads × head_dim` (6144) ≠ `hidden_size` (3072) |
51
+ | RoPE | θ = 7e7, NeoX half-rotation, full 128 dims, no scaling |
52
+ | Modality | text-only (verified from the tensor index) |
53
+
54
+ ## Measured (M5 Max, 4-turn gate with a persistent 44-slot cache)
55
+
56
+ | Metric | Thinking on | Thinking off |
57
+ |---|---|---|
58
+ | Decode | 34.6 tok/s | 27.9 tok/s |
59
+ | Peak memory | 5.3 GB | 4.5 GB |
60
+
61
+ Fidelity vs the bf16 source (5-prompt logit sweep): top-1 agreement **4/5**, mean KL **0.1446**, max KL 0.6844.
62
+
63
+ ## Profile comparison
64
+
65
+ | Bundle | Size | Top-1 agreement vs bf16 | Mean KL | Max KL | Decode (thinking) |
66
+ |---|---|---|---|---|---|
67
+ | [`Nanbeige4.2-3B-JANG_6M`](https://huggingface.co/OsaurusAI/Nanbeige4.2-3B-JANG_6M) | 3.6 GB | **5/5** | **0.0010** | **0.0030** | 29.3 tok/s |
68
+ | [`Nanbeige4.2-3B-JANG_4M`](https://huggingface.co/OsaurusAI/Nanbeige4.2-3B-JANG_4M) | 2.9 GB | 5/5 | 0.0192 | 0.0398 | **44.7 tok/s** |
69
+ | [`Nanbeige4.2-3B-MXFP8`](https://huggingface.co/OsaurusAI/Nanbeige4.2-3B-MXFP8) | 4.0 GB | 4/5 | 0.1446 | 0.6844 | 34.6 tok/s |
70
+
71
+ **Both JANG affine profiles beat MXFP8 on fidelity while being smaller** — the
72
+ opposite of what the bit counts suggest. MXFP8's e4m3 elements carry ~3 mantissa
73
+ bits each, so "8-bit MX" is not strictly better than 6-bit or 4-bit affine with a
74
+ per-group scale **and** bias on this weight distribution. It showed up in
75
+ behaviour too: in the multi-turn gate MXFP8 dated Tokyo's capital move to 1936,
76
+ where both JANG builds said 1868.
77
+
78
+ ## Chat / reasoning
79
+
80
+ - **Thinking is ON by default.** The generation prompt ends with an *open* `<think>\n`; only `enable_thinking=False` prefills a closed `<think>\n\n</think>\n\n`.
81
+ - `preserve_thinking` controls whether previous turns' reasoning is kept. The template's default is to preserve; the vendor recommends `False` for general chat and `True` for multi-turn tool use and code-agent workflows.
82
+ - Tool calls default to `tool_call_format="xml"` (the vendor's recommended format); `json` is supported for compatibility.
83
+ - **Double-BOS trap:** the chat template already emits `<|im_start|>` (id 166100 = `bos_token`) and the tokenizer's post-processor prepends another. Tokenize the rendered template with `add_special_tokens=False`.
84
+ - Stop token `eos_token_id = 166101` (`<|im_end|>`).
85
+ - Sampling defaults (vendor `generation_config.json`, matching the model card): `temperature 0.6`, `top_p 0.95`, `top_k 20`. The vendor suggests `temperature 1.0` for agentic and tool-use tasks. The same values are stamped in `jang_config.chat.sampling_defaults`, and the two files are checked against each other at build time.
86
+
87
+ ## Usage
88
+
89
+ The bundle is standard MLX safetensors with a per-module `{bits, group_size, mode}` map in `config.json[quantization]` — any loader must honor those overrides. It needs the `nanbeige` looped model class, which registers into `mlx_lm`:
90
+
91
+ ```python
92
+ from jang_tools.nanbeige import mlx_register # registers the looped nanbeige class
93
+ from mlx_lm import load, generate
94
+ from mlx_lm.sample_utils import make_sampler
95
+
96
+ model, tok = load("OsaurusAI/Nanbeige4.2-3B-MXFP8")
97
+ prompt = tok.apply_chat_template(
98
+ [{"role": "user", "content": "Which number is bigger, 9.11 or 9.8?"}],
99
+ add_generation_prompt=True, tokenize=False,
100
+ )
101
+ ids = tok.encode(prompt, add_special_tokens=False) # template already emits BOS
102
+ print(generate(model, tok, prompt=ids, max_tokens=1024,
103
+ sampler=make_sampler(temp=0.6, top_p=0.95, top_k=20)))
104
+ ```
105
+
106
+ Osaurus and vMLX runtime support for the looped architecture is in progress; until it lands, use the path above.
107
+
108
+ ---
109
+
110
+ Quantized and verified by **Jinho Jang** (eric@osaurus.ai). Base model © Nanbeige, Apache-2.0 (inherited).
added_tokens.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "</think>": 166104,
3
+ "</tool_call>": 166106,
4
+ "<think>": 166103,
5
+ "<tool_call>": 166105,
6
+ "<|endoftext|>": 166102,
7
+ "<|im_end|>": 166101,
8
+ "<|im_start|>": 166100
9
+ }
chat_template.jinja ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+ {%- macro visible_text(content) -%}
4
+ {%- if content is string -%}
5
+ {{- content }}
6
+ {%- elif content is iterable and content is not mapping -%}
7
+ {%- for item in content -%}
8
+ {%- if item is mapping and item.type == 'text' -%}
9
+ {{- item.text }}
10
+ {%- elif item is string -%}
11
+ {{- item }}
12
+ {%- elif item is mapping and item.type in ['image', 'image_url', 'video', 'video_url', 'audio', 'audio_url', 'input_audio'] -%}
13
+ {%- set media_type = item.type | replace('_url', '') | replace('input_', '') -%}
14
+ {{- "<reminder>You are unable to process this " ~ media_type ~ " because you don't have multi-modal input ability. Try different methods.</reminder>" }}
15
+ {%- endif -%}
16
+ {%- endfor -%}
17
+ {%- else -%}
18
+ {{- content }}
19
+ {%- endif -%}
20
+ {%- endmacro -%}
21
+
22
+
23
+ {%- set tool_call_format = tool_call_format if tool_call_format is defined else 'xml' %}
24
+ {%- if tools %}
25
+ {{- '<|im_start|>system\n' }}
26
+ {%- if messages|length > 0 and messages[0].get('role', '') == 'system' %}
27
+ {{- visible_text(messages[0].content) + '\n\n' }}
28
+ {%- else %}
29
+ {{- '你是一位工具函数调用专家,你会得到一个问题和一组可能的工具函数。根据问题,你需要进行一个或多个函数/工具调用以实现目的,请尽量尝试探索通过工具解决问题。\n如果没有一个函数可以使用,请直接使用自然语言回复用户。\n如果给定的问题缺少函数所需的参数,请使用自然语言进行提问,向用户询问必要信息。\n如果调用结果已经足够回答用户问题,请对历史结果进行总结,使用自然语言回复用户。' }}
30
+ {%- endif %}
31
+
32
+ {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
33
+ {%- for tool in tools %}
34
+ {{- "\n" }}
35
+ {{- tool | tojson }}
36
+ {%- endfor %}
37
+
38
+ {%- if tool_call_format == 'json' %}
39
+ {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n" }}
40
+ {{- '<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n' }}
41
+ {%- else %}
42
+ {{- "\n</tools>\n\nFor each function call, output the function name and arguments within the following XML format:\n" }}
43
+ {{- '<tool_call>
44
+ <function=example_function_name>
45
+ <parameter=example_parameter_1>
46
+ value_1
47
+ </parameter>
48
+ <parameter=example_parameter_2>
49
+ This is the value for the second parameter
50
+ that can span
51
+ multiple lines
52
+ </parameter>
53
+ </function>
54
+ </tool_call><|im_end|>\n' }}
55
+ {%- endif %}
56
+
57
+ {%- else %}
58
+ {%- if messages|length > 0 and messages[0].get('role', '') == 'system' %}
59
+ {{- '<|im_start|>system\n' + visible_text(messages[0].content) + '<|im_end|>\n' }}
60
+ {%- else %}
61
+ {{- '<|im_start|>system\n你是南北阁,一款由BOSS直聘自主研发并训练的专业大语言模型。<|im_end|>\n' }}
62
+ {%- endif %}
63
+ {%- endif %}
64
+
65
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
66
+ {%- for message in messages[::-1] %}
67
+ {%- set index = (messages|length - 1) - loop.index0 %}
68
+ {%- if ns.multi_step_tool and message.get('role', '') == "user" and visible_text(message.content) is string and not(visible_text(message.content).startswith('<tool_response>') and visible_text(message.content).endswith('</tool_response>')) %}
69
+ {%- set ns.multi_step_tool = false %}
70
+ {%- set ns.last_query_index = index %}
71
+ {%- endif %}
72
+ {%- endfor %}
73
+
74
+ {%- for message in messages %}
75
+ {%- if visible_text(message.content) is string %}
76
+ {%- set content = visible_text(message.content) %}
77
+ {%- else %}
78
+ {%- set content = '' %}
79
+ {%- endif %}
80
+
81
+ {%- if message.get('role', '') == "system" %}
82
+ {%- if not loop.first %}
83
+ {{- raise_exception('System message must be at the beginning.') }}
84
+ {%- endif %}
85
+
86
+ {%- elif message.get('role', '') == "assistant" %}
87
+ {%- set reasoning_content = '' %}
88
+ {%- if message.reasoning_content is string %}
89
+ {%- set reasoning_content = message.reasoning_content %}
90
+ {%- else %}
91
+ {%- if '</think>' in content %}
92
+ {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
93
+ {%- set content = content.split('</think>')[-1].lstrip('\n').rstrip('\n') %}
94
+ {%- endif %}
95
+ {%- endif %}
96
+ {%- set reasoning_content = reasoning_content|trim %}
97
+
98
+ {%- if (preserve_thinking is defined and preserve_thinking is false) and (loop.index0 < ns.last_query_index) %}
99
+ {{- '<|im_start|>' + message.get('role', '') + '\n<think>\n\n</think>\n\n' + content }}
100
+ {%- else %}
101
+ {{- '<|im_start|>' + message.get('role', '') + '\n<think>\n' + reasoning_content + '\n</think>\n\n' + content }}
102
+ {%- endif %}
103
+
104
+ {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}
105
+ {%- if tool_call_format == 'json' %}
106
+ {%- for tool_call in message.tool_calls %}
107
+ {%- if (loop.first and content) or (not loop.first) %}
108
+ {{- '\n' }}
109
+ {%- endif %}
110
+ {%- if tool_call.function %}
111
+ {%- set tool_call = tool_call.function %}
112
+ {%- endif %}
113
+ {{- '<tool_call>\n{"name": "' }}
114
+ {{- tool_call.name }}
115
+ {{- '", "arguments": ' }}
116
+ {%- if tool_call.arguments is string %}
117
+ {{- tool_call.arguments }}
118
+ {%- else %}
119
+ {{- tool_call.arguments | tojson }}
120
+ {%- endif %}
121
+ {{- '}\n</tool_call>' }}
122
+ {%- endfor %}
123
+ {%- else %}
124
+ {%- for tool_call in message.tool_calls %}
125
+ {%- if tool_call.function is defined %}
126
+ {%- set tool_call = tool_call.function %}
127
+ {%- endif %}
128
+
129
+ {%- if loop.first %}
130
+ {%- if content|trim %}
131
+ {{- '
132
+
133
+ <tool_call>
134
+ <function=' + tool_call.name + '>
135
+ ' }}
136
+ {%- else %}
137
+ {{- '<tool_call>
138
+ <function=' + tool_call.name + '>
139
+ ' }}
140
+ {%- endif %}
141
+ {%- else %}
142
+ {{- '
143
+ <tool_call>
144
+ <function=' + tool_call.name + '>
145
+ ' }}
146
+ {%- endif %}
147
+
148
+ {%- if tool_call.arguments is defined %}
149
+ {%- for args_name, args_value in tool_call.arguments|items %}
150
+ {{- '<parameter=' + args_name + '>
151
+ ' }}
152
+ {%- set args_value = args_value | string if args_value is string else args_value | tojson | safe %}
153
+ {{- args_value }}
154
+ {{- '
155
+ </parameter>
156
+ ' }}
157
+ {%- endfor %}
158
+ {%- endif %}
159
+ {{- '</function>
160
+ </tool_call>' }}
161
+ {%- endfor %}
162
+ {%- endif %}
163
+ {%- endif %}
164
+ {{- '<|im_end|>\n' }}
165
+
166
+ {%- elif message.get('role', '') == "tool" %}
167
+ {%- if loop.previtem and loop.previtem.get('role', '') != "tool" %}
168
+ {{- '<|im_start|>user' }}
169
+ {%- endif %}
170
+ {{- '\n<tool_response>\n' }}
171
+ {{- content }}
172
+ {{- '\n</tool_response>' }}
173
+ {%- if loop.last or loop.nextitem.get('role', '') != "tool" %}
174
+ {{- '<|im_end|>\n' }}
175
+ {%- endif %}
176
+ {%- elif message.get('role', '') != '' %}
177
+ {{- '<|im_start|>' + message.get('role', '') + '\n' + content + '<|im_end|>' + '\n' }}
178
+ {%- endif %}
179
+ {%- endfor %}
180
+
181
+ {%- if add_generation_prompt %}
182
+ {{- '<|im_start|>assistant\n' }}
183
+
184
+ {%- if enable_thinking is defined and enable_thinking is false %}
185
+ {{- '<think>
186
+
187
+ </think>
188
+
189
+ ' }}
190
+ {%- else %}
191
+ {{- '<think>
192
+ ' }}
193
+ {%- endif %}
194
+
195
+ {%- endif %}
config.json ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "NanbeigeForCausalLM"
4
+ ],
5
+ "attention_bias": false,
6
+ "attention_dropout": 0.0,
7
+ "bos_token_id": 166100,
8
+ "eos_token_id": 166101,
9
+ "head_dim": 128,
10
+ "hidden_act": "silu",
11
+ "hidden_size": 3072,
12
+ "initializer_range": 0.02,
13
+ "intermediate_size": 10752,
14
+ "kv_channels": 128,
15
+ "loop_loss_weights": [],
16
+ "max_length": null,
17
+ "max_position_embeddings": 262144,
18
+ "model_type": "nanbeige",
19
+ "num_attention_heads": 48,
20
+ "num_hidden_layers": 22,
21
+ "num_key_value_heads": 8,
22
+ "num_loops": 2,
23
+ "pad_token_id": 0,
24
+ "pretraining_tp": 1,
25
+ "rms_norm_eps": 1e-05,
26
+ "rope_scaling": null,
27
+ "rope_theta": 70000000,
28
+ "skip_loop_final_norm": false,
29
+ "tie_word_embeddings": false,
30
+ "torch_dtype": "bfloat16",
31
+ "transformers_version": "4.42.4",
32
+ "use_cache": true,
33
+ "vocab_size": 166144,
34
+ "weight_format": "mxfp8",
35
+ "quantization": {
36
+ "group_size": 32,
37
+ "bits": 8,
38
+ "mode": "mxfp8"
39
+ },
40
+ "jang_runtime": {
41
+ "architecture": "looped_transformer",
42
+ "cache_layout": "looped_kv_v1",
43
+ "num_loops": 2,
44
+ "num_hidden_layers": 22,
45
+ "cache_slots": 44,
46
+ "cache_slot_formula": "layer_idx + loop_idx * num_hidden_layers",
47
+ "loop_final_norm": "every_loop",
48
+ "shared_layer_weights_across_loops": true,
49
+ "position_ids_shared_across_loops": true,
50
+ "norm_convention": "llama_rmsnorm_no_plus_one",
51
+ "rope": {
52
+ "type": "neox_half_rotation",
53
+ "theta": 70000000,
54
+ "dims": 128,
55
+ "partial_rotary_factor": 1.0
56
+ },
57
+ "attention": {
58
+ "type": "gqa",
59
+ "n_heads": 48,
60
+ "n_kv_heads": 8,
61
+ "head_dim": 128,
62
+ "qkv_bias": false,
63
+ "qk_layernorm": false,
64
+ "n_heads_times_head_dim_equals_hidden": false
65
+ }
66
+ },
67
+ "capabilities": {
68
+ "reasoning_parser": "qwen3",
69
+ "tool_parser": "xml_function",
70
+ "think_in_template": true,
71
+ "supports_tools": true,
72
+ "supports_thinking": true,
73
+ "family": "nanbeige",
74
+ "modality": "text",
75
+ "modalities": {
76
+ "text": true,
77
+ "vision": false,
78
+ "audio": false,
79
+ "video": false
80
+ },
81
+ "has_vision": false,
82
+ "has_audio": false,
83
+ "has_video": false,
84
+ "cache_type": "kv"
85
+ }
86
+ }
generation_config.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token_id": 166100,
3
+ "do_sample": true,
4
+ "eos_token_id": 166101,
5
+ "pad_token_id": 0,
6
+ "temperature": 0.6,
7
+ "top_k": 20,
8
+ "top_p": 0.95,
9
+ "transformers_version": "4.51.0"
10
+ }
jang_config.json ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": 2,
3
+ "weight_format": "mxfp8",
4
+ "profile": "MXFP8",
5
+ "source_model": {
6
+ "name": "Nanbeige4.2-3B",
7
+ "architecture": "nanbeige"
8
+ },
9
+ "has_vision": false,
10
+ "has_audio": false,
11
+ "quantization": {
12
+ "method": "mxfp8",
13
+ "quantization_backend": "mx.quantize",
14
+ "mode": "mxfp8",
15
+ "group_size": 32,
16
+ "tier_bits": {
17
+ "attention": 8,
18
+ "mlp": 8,
19
+ "embed": 8
20
+ },
21
+ "norm_convention": "llama_rmsnorm_no_plus_one",
22
+ "per_module_override_count": 0,
23
+ "quantized_tensor_count": 156,
24
+ "passthrough_tensor_count": 45
25
+ },
26
+ "runtime": {
27
+ "architecture": "looped_transformer",
28
+ "num_loops": 2,
29
+ "cache_slots": 44,
30
+ "total_weight_bytes": 4300281408,
31
+ "total_weight_gb": 4.0
32
+ },
33
+ "capabilities": {
34
+ "reasoning_parser": "qwen3",
35
+ "tool_parser": "xml_function",
36
+ "think_in_template": true,
37
+ "supports_tools": true,
38
+ "supports_thinking": true,
39
+ "family": "nanbeige",
40
+ "modality": "text",
41
+ "modalities": {
42
+ "text": true,
43
+ "vision": false,
44
+ "audio": false,
45
+ "video": false
46
+ },
47
+ "has_vision": false,
48
+ "has_audio": false,
49
+ "has_video": false,
50
+ "cache_type": "kv"
51
+ },
52
+ "chat": {
53
+ "reasoning": {
54
+ "supported": true,
55
+ "parser": "qwen3",
56
+ "default_enabled": true,
57
+ "default_mode": "think",
58
+ "modes": [
59
+ "think",
60
+ "no_think"
61
+ ]
62
+ },
63
+ "tool_calling": {
64
+ "supported": true,
65
+ "parser": "xml_function",
66
+ "call_format": "xml"
67
+ },
68
+ "sampling_defaults": {
69
+ "temperature": 0.6,
70
+ "top_p": 0.95,
71
+ "top_k": 20
72
+ },
73
+ "template_kwargs_defaults": {
74
+ "enable_thinking": true
75
+ }
76
+ }
77
+ }
model-00001-of-00001.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e12ca3a1ac14b3f914ddee59e4d8f4e41023ae4603e188b7dabb4e8bbdb477cd
3
+ size 4300281408
model.safetensors.index.json ADDED
@@ -0,0 +1,365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "metadata": {
3
+ "format": "mxfp8",
4
+ "total_size": 4300281408
5
+ },
6
+ "weight_map": {
7
+ "lm_head.weight": "model-00001-of-00001.safetensors",
8
+ "lm_head.scales": "model-00001-of-00001.safetensors",
9
+ "model.embed_tokens.weight": "model-00001-of-00001.safetensors",
10
+ "model.embed_tokens.scales": "model-00001-of-00001.safetensors",
11
+ "model.layers.0.input_layernorm.weight": "model-00001-of-00001.safetensors",
12
+ "model.layers.0.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
13
+ "model.layers.0.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
14
+ "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
15
+ "model.layers.0.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
16
+ "model.layers.0.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
17
+ "model.layers.0.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
18
+ "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
19
+ "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
20
+ "model.layers.0.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
21
+ "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
22
+ "model.layers.0.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
23
+ "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
24
+ "model.layers.0.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
25
+ "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
26
+ "model.layers.0.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
27
+ "model.layers.1.input_layernorm.weight": "model-00001-of-00001.safetensors",
28
+ "model.layers.1.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
29
+ "model.layers.1.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
30
+ "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
31
+ "model.layers.1.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
32
+ "model.layers.1.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
33
+ "model.layers.1.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
34
+ "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
35
+ "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
36
+ "model.layers.1.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
37
+ "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
38
+ "model.layers.1.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
39
+ "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
40
+ "model.layers.1.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
41
+ "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
42
+ "model.layers.1.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
43
+ "model.layers.10.input_layernorm.weight": "model-00001-of-00001.safetensors",
44
+ "model.layers.10.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
45
+ "model.layers.10.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
46
+ "model.layers.10.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
47
+ "model.layers.10.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
48
+ "model.layers.10.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
49
+ "model.layers.10.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
50
+ "model.layers.10.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
51
+ "model.layers.10.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
52
+ "model.layers.10.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
53
+ "model.layers.10.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
54
+ "model.layers.10.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
55
+ "model.layers.10.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
56
+ "model.layers.10.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
57
+ "model.layers.10.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
58
+ "model.layers.10.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
59
+ "model.layers.11.input_layernorm.weight": "model-00001-of-00001.safetensors",
60
+ "model.layers.11.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
61
+ "model.layers.11.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
62
+ "model.layers.11.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
63
+ "model.layers.11.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
64
+ "model.layers.11.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
65
+ "model.layers.11.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
66
+ "model.layers.11.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
67
+ "model.layers.11.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
68
+ "model.layers.11.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
69
+ "model.layers.11.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
70
+ "model.layers.11.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
71
+ "model.layers.11.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
72
+ "model.layers.11.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
73
+ "model.layers.11.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
74
+ "model.layers.11.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
75
+ "model.layers.12.input_layernorm.weight": "model-00001-of-00001.safetensors",
76
+ "model.layers.12.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
77
+ "model.layers.12.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
78
+ "model.layers.12.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
79
+ "model.layers.12.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
80
+ "model.layers.12.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
81
+ "model.layers.12.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
82
+ "model.layers.12.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
83
+ "model.layers.12.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
84
+ "model.layers.12.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
85
+ "model.layers.12.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
86
+ "model.layers.12.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
87
+ "model.layers.12.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
88
+ "model.layers.12.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
89
+ "model.layers.12.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
90
+ "model.layers.12.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
91
+ "model.layers.13.input_layernorm.weight": "model-00001-of-00001.safetensors",
92
+ "model.layers.13.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
93
+ "model.layers.13.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
94
+ "model.layers.13.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
95
+ "model.layers.13.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
96
+ "model.layers.13.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
97
+ "model.layers.13.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
98
+ "model.layers.13.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
99
+ "model.layers.13.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
100
+ "model.layers.13.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
101
+ "model.layers.13.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
102
+ "model.layers.13.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
103
+ "model.layers.13.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
104
+ "model.layers.13.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
105
+ "model.layers.13.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
106
+ "model.layers.13.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
107
+ "model.layers.14.input_layernorm.weight": "model-00001-of-00001.safetensors",
108
+ "model.layers.14.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
109
+ "model.layers.14.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
110
+ "model.layers.14.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
111
+ "model.layers.14.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
112
+ "model.layers.14.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
113
+ "model.layers.14.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
114
+ "model.layers.14.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
115
+ "model.layers.14.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
116
+ "model.layers.14.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
117
+ "model.layers.14.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
118
+ "model.layers.14.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
119
+ "model.layers.14.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
120
+ "model.layers.14.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
121
+ "model.layers.14.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
122
+ "model.layers.14.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
123
+ "model.layers.15.input_layernorm.weight": "model-00001-of-00001.safetensors",
124
+ "model.layers.15.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
125
+ "model.layers.15.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
126
+ "model.layers.15.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
127
+ "model.layers.15.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
128
+ "model.layers.15.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
129
+ "model.layers.15.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
130
+ "model.layers.15.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
131
+ "model.layers.15.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
132
+ "model.layers.15.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
133
+ "model.layers.15.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
134
+ "model.layers.15.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
135
+ "model.layers.15.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
136
+ "model.layers.15.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
137
+ "model.layers.15.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
138
+ "model.layers.15.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
139
+ "model.layers.16.input_layernorm.weight": "model-00001-of-00001.safetensors",
140
+ "model.layers.16.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
141
+ "model.layers.16.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
142
+ "model.layers.16.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
143
+ "model.layers.16.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
144
+ "model.layers.16.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
145
+ "model.layers.16.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
146
+ "model.layers.16.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
147
+ "model.layers.16.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
148
+ "model.layers.16.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
149
+ "model.layers.16.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
150
+ "model.layers.16.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
151
+ "model.layers.16.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
152
+ "model.layers.16.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
153
+ "model.layers.16.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
154
+ "model.layers.16.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
155
+ "model.layers.17.input_layernorm.weight": "model-00001-of-00001.safetensors",
156
+ "model.layers.17.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
157
+ "model.layers.17.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
158
+ "model.layers.17.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
159
+ "model.layers.17.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
160
+ "model.layers.17.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
161
+ "model.layers.17.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
162
+ "model.layers.17.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
163
+ "model.layers.17.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
164
+ "model.layers.17.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
165
+ "model.layers.17.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
166
+ "model.layers.17.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
167
+ "model.layers.17.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
168
+ "model.layers.17.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
169
+ "model.layers.17.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
170
+ "model.layers.17.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
171
+ "model.layers.18.input_layernorm.weight": "model-00001-of-00001.safetensors",
172
+ "model.layers.18.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
173
+ "model.layers.18.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
174
+ "model.layers.18.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
175
+ "model.layers.18.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
176
+ "model.layers.18.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
177
+ "model.layers.18.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
178
+ "model.layers.18.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
179
+ "model.layers.18.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
180
+ "model.layers.18.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
181
+ "model.layers.18.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
182
+ "model.layers.18.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
183
+ "model.layers.18.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
184
+ "model.layers.18.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
185
+ "model.layers.18.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
186
+ "model.layers.18.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
187
+ "model.layers.19.input_layernorm.weight": "model-00001-of-00001.safetensors",
188
+ "model.layers.19.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
189
+ "model.layers.19.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
190
+ "model.layers.19.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
191
+ "model.layers.19.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
192
+ "model.layers.19.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
193
+ "model.layers.19.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
194
+ "model.layers.19.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
195
+ "model.layers.19.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
196
+ "model.layers.19.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
197
+ "model.layers.19.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
198
+ "model.layers.19.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
199
+ "model.layers.19.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
200
+ "model.layers.19.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
201
+ "model.layers.19.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
202
+ "model.layers.19.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
203
+ "model.layers.2.input_layernorm.weight": "model-00001-of-00001.safetensors",
204
+ "model.layers.2.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
205
+ "model.layers.2.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
206
+ "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
207
+ "model.layers.2.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
208
+ "model.layers.2.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
209
+ "model.layers.2.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
210
+ "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
211
+ "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
212
+ "model.layers.2.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
213
+ "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
214
+ "model.layers.2.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
215
+ "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
216
+ "model.layers.2.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
217
+ "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
218
+ "model.layers.2.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
219
+ "model.layers.20.input_layernorm.weight": "model-00001-of-00001.safetensors",
220
+ "model.layers.20.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
221
+ "model.layers.20.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
222
+ "model.layers.20.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
223
+ "model.layers.20.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
224
+ "model.layers.20.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
225
+ "model.layers.20.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
226
+ "model.layers.20.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
227
+ "model.layers.20.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
228
+ "model.layers.20.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
229
+ "model.layers.20.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
230
+ "model.layers.20.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
231
+ "model.layers.20.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
232
+ "model.layers.20.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
233
+ "model.layers.20.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
234
+ "model.layers.20.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
235
+ "model.layers.21.input_layernorm.weight": "model-00001-of-00001.safetensors",
236
+ "model.layers.21.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
237
+ "model.layers.21.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
238
+ "model.layers.21.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
239
+ "model.layers.21.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
240
+ "model.layers.21.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
241
+ "model.layers.21.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
242
+ "model.layers.21.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
243
+ "model.layers.21.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
244
+ "model.layers.21.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
245
+ "model.layers.21.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
246
+ "model.layers.21.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
247
+ "model.layers.21.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
248
+ "model.layers.21.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
249
+ "model.layers.21.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
250
+ "model.layers.21.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
251
+ "model.layers.3.input_layernorm.weight": "model-00001-of-00001.safetensors",
252
+ "model.layers.3.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
253
+ "model.layers.3.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
254
+ "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
255
+ "model.layers.3.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
256
+ "model.layers.3.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
257
+ "model.layers.3.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
258
+ "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
259
+ "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
260
+ "model.layers.3.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
261
+ "model.layers.3.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
262
+ "model.layers.3.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
263
+ "model.layers.3.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
264
+ "model.layers.3.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
265
+ "model.layers.3.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
266
+ "model.layers.3.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
267
+ "model.layers.4.input_layernorm.weight": "model-00001-of-00001.safetensors",
268
+ "model.layers.4.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
269
+ "model.layers.4.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
270
+ "model.layers.4.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
271
+ "model.layers.4.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
272
+ "model.layers.4.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
273
+ "model.layers.4.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
274
+ "model.layers.4.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
275
+ "model.layers.4.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
276
+ "model.layers.4.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
277
+ "model.layers.4.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
278
+ "model.layers.4.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
279
+ "model.layers.4.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
280
+ "model.layers.4.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
281
+ "model.layers.4.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
282
+ "model.layers.4.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
283
+ "model.layers.5.input_layernorm.weight": "model-00001-of-00001.safetensors",
284
+ "model.layers.5.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
285
+ "model.layers.5.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
286
+ "model.layers.5.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
287
+ "model.layers.5.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
288
+ "model.layers.5.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
289
+ "model.layers.5.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
290
+ "model.layers.5.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
291
+ "model.layers.5.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
292
+ "model.layers.5.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
293
+ "model.layers.5.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
294
+ "model.layers.5.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
295
+ "model.layers.5.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
296
+ "model.layers.5.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
297
+ "model.layers.5.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
298
+ "model.layers.5.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
299
+ "model.layers.6.input_layernorm.weight": "model-00001-of-00001.safetensors",
300
+ "model.layers.6.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
301
+ "model.layers.6.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
302
+ "model.layers.6.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
303
+ "model.layers.6.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
304
+ "model.layers.6.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
305
+ "model.layers.6.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
306
+ "model.layers.6.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
307
+ "model.layers.6.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
308
+ "model.layers.6.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
309
+ "model.layers.6.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
310
+ "model.layers.6.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
311
+ "model.layers.6.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
312
+ "model.layers.6.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
313
+ "model.layers.6.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
314
+ "model.layers.6.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
315
+ "model.layers.7.input_layernorm.weight": "model-00001-of-00001.safetensors",
316
+ "model.layers.7.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
317
+ "model.layers.7.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
318
+ "model.layers.7.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
319
+ "model.layers.7.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
320
+ "model.layers.7.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
321
+ "model.layers.7.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
322
+ "model.layers.7.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
323
+ "model.layers.7.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
324
+ "model.layers.7.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
325
+ "model.layers.7.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
326
+ "model.layers.7.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
327
+ "model.layers.7.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
328
+ "model.layers.7.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
329
+ "model.layers.7.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
330
+ "model.layers.7.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
331
+ "model.layers.8.input_layernorm.weight": "model-00001-of-00001.safetensors",
332
+ "model.layers.8.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
333
+ "model.layers.8.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
334
+ "model.layers.8.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
335
+ "model.layers.8.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
336
+ "model.layers.8.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
337
+ "model.layers.8.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
338
+ "model.layers.8.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
339
+ "model.layers.8.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
340
+ "model.layers.8.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
341
+ "model.layers.8.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
342
+ "model.layers.8.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
343
+ "model.layers.8.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
344
+ "model.layers.8.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
345
+ "model.layers.8.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
346
+ "model.layers.8.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
347
+ "model.layers.9.input_layernorm.weight": "model-00001-of-00001.safetensors",
348
+ "model.layers.9.mlp.down_proj.weight": "model-00001-of-00001.safetensors",
349
+ "model.layers.9.mlp.down_proj.scales": "model-00001-of-00001.safetensors",
350
+ "model.layers.9.mlp.gate_proj.weight": "model-00001-of-00001.safetensors",
351
+ "model.layers.9.mlp.gate_proj.scales": "model-00001-of-00001.safetensors",
352
+ "model.layers.9.mlp.up_proj.weight": "model-00001-of-00001.safetensors",
353
+ "model.layers.9.mlp.up_proj.scales": "model-00001-of-00001.safetensors",
354
+ "model.layers.9.post_attention_layernorm.weight": "model-00001-of-00001.safetensors",
355
+ "model.layers.9.self_attn.k_proj.weight": "model-00001-of-00001.safetensors",
356
+ "model.layers.9.self_attn.k_proj.scales": "model-00001-of-00001.safetensors",
357
+ "model.layers.9.self_attn.o_proj.weight": "model-00001-of-00001.safetensors",
358
+ "model.layers.9.self_attn.o_proj.scales": "model-00001-of-00001.safetensors",
359
+ "model.layers.9.self_attn.q_proj.weight": "model-00001-of-00001.safetensors",
360
+ "model.layers.9.self_attn.q_proj.scales": "model-00001-of-00001.safetensors",
361
+ "model.layers.9.self_attn.v_proj.weight": "model-00001-of-00001.safetensors",
362
+ "model.layers.9.self_attn.v_proj.scales": "model-00001-of-00001.safetensors",
363
+ "model.norm.weight": "model-00001-of-00001.safetensors"
364
+ }
365
+ }
osaurus-x-banner.png ADDED
special_tokens_map.json ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<|endoftext|>"
4
+ ],
5
+ "bos_token": {
6
+ "content": "<|im_start|>",
7
+ "lstrip": false,
8
+ "normalized": false,
9
+ "rstrip": false,
10
+ "single_word": false
11
+ },
12
+ "eos_token": {
13
+ "content": "<|im_end|>",
14
+ "lstrip": false,
15
+ "normalized": false,
16
+ "rstrip": false,
17
+ "single_word": false
18
+ },
19
+ "pad_token": {
20
+ "content": "<unk>",
21
+ "lstrip": false,
22
+ "normalized": true,
23
+ "rstrip": false,
24
+ "single_word": false
25
+ },
26
+ "unk_token": {
27
+ "content": "<unk>",
28
+ "lstrip": false,
29
+ "normalized": true,
30
+ "rstrip": false,
31
+ "single_word": false
32
+ }
33
+ }
tokenizer.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1d858a0fc007f22af6ae18bfa1ae52d30e398aa9cd1ea06e7777176869346a3f
3
+ size 18450979
tokenizer.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:fb41d04798b714520a9b075727b0226538b7330254299062742c50ec8374bc36
3
+ size 2782298
tokenizer_config.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": true,
3
+ "add_eos_token": false,
4
+ "add_prefix_space": true,
5
+ "added_tokens_decoder": {
6
+ "0": {
7
+ "content": "<unk>",
8
+ "lstrip": false,
9
+ "normalized": true,
10
+ "rstrip": false,
11
+ "single_word": false,
12
+ "special": true
13
+ },
14
+ "1": {
15
+ "content": "<s>",
16
+ "lstrip": false,
17
+ "normalized": true,
18
+ "rstrip": false,
19
+ "single_word": false,
20
+ "special": true
21
+ },
22
+ "2": {
23
+ "content": "</s>",
24
+ "lstrip": false,
25
+ "normalized": true,
26
+ "rstrip": false,
27
+ "single_word": false,
28
+ "special": true
29
+ },
30
+ "166100": {
31
+ "content": "<|im_start|>",
32
+ "lstrip": false,
33
+ "normalized": false,
34
+ "rstrip": false,
35
+ "single_word": false,
36
+ "special": true
37
+ },
38
+ "166101": {
39
+ "content": "<|im_end|>",
40
+ "lstrip": false,
41
+ "normalized": false,
42
+ "rstrip": false,
43
+ "single_word": false,
44
+ "special": true
45
+ },
46
+ "166102": {
47
+ "content": "<|endoftext|>",
48
+ "lstrip": false,
49
+ "normalized": false,
50
+ "rstrip": false,
51
+ "single_word": false,
52
+ "special": true
53
+ },
54
+ "166103": {
55
+ "content": "<think>",
56
+ "lstrip": false,
57
+ "normalized": true,
58
+ "rstrip": false,
59
+ "single_word": false,
60
+ "special": false
61
+ },
62
+ "166104": {
63
+ "content": "</think>",
64
+ "lstrip": false,
65
+ "normalized": true,
66
+ "rstrip": false,
67
+ "single_word": false,
68
+ "special": false
69
+ },
70
+ "166105": {
71
+ "content": "<tool_call>",
72
+ "lstrip": false,
73
+ "normalized": true,
74
+ "rstrip": false,
75
+ "single_word": false,
76
+ "special": false
77
+ },
78
+ "166106": {
79
+ "content": "</tool_call>",
80
+ "lstrip": false,
81
+ "normalized": true,
82
+ "rstrip": false,
83
+ "single_word": false,
84
+ "special": false
85
+ }
86
+ },
87
+ "additional_special_tokens": [
88
+ "<|endoftext|>"
89
+ ],
90
+ "bos_token": "<|im_start|>",
91
+ "chat_template": "\n\n{%- macro visible_text(content) -%}\n {%- if content is string -%}\n {{- content }}\n {%- elif content is iterable and content is not mapping -%}\n {%- for item in content -%}\n {%- if item is mapping and item.type == 'text' -%}\n {{- item.text }}\n {%- elif item is string -%}\n {{- item }}\n {%- elif item is mapping and item.type in ['image', 'image_url', 'video', 'video_url', 'audio', 'audio_url', 'input_audio'] -%}\n {%- set media_type = item.type | replace('_url', '') | replace('input_', '') -%}\n {{- \"<reminder>You are unable to process this \" ~ media_type ~ \" because you don't have multi-modal input ability. Try different methods.</reminder>\" }}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{- content }}\n {%- endif -%}\n{%- endmacro -%}\n\n\n{%- set tool_call_format = tool_call_format if tool_call_format is defined else 'xml' %}\n{%- if tools %}\n {{- '<|im_start|>system\\n' }} \n {%- if messages|length > 0 and messages[0].get('role', '') == 'system' %}\n {{- visible_text(messages[0].content) + '\\n\\n' }}\n {%- else %} \n {{- '你是一位工具函数调用专家,你会得到一个问题和一组可能的工具函数。根据问题,你需要进行一个或多个函数/工具调用以实现目的,请尽量尝试探索通过工具解决问题。\\n如果没有一个函数可以使用,请直接使用自然语言回复用户。\\n如果给定的问题缺少函数所需的参数,请使用自然语言进行提问,向用户询问必要信息。\\n如果调用结果已经足够回答用户问题,请对历史结果进行总结,使用自然语言回复用户。' }} \n {%- endif %}\n\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n \n {%- if tool_call_format == 'json' %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n\" }}\n {{- '<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n' }}\n {%- else %}\n {{- \"\\n</tools>\\n\\nFor each function call, output the function name and arguments within the following XML format:\\n\" }}\n {{- '<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call><|im_end|>\\n' }}\n {%- endif %}\n \n{%- else %}\n {%- if messages|length > 0 and messages[0].get('role', '') == 'system' %}\n {{- '<|im_start|>system\\n' + visible_text(messages[0].content) + '<|im_end|>\\n' }}\n {%- else %} \n {{- '<|im_start|>system\\n你是南北阁,一款由BOSS直聘自主研发并训练的专业大语言模型。<|im_end|>\\n' }} \n {%- endif %}\n{%- endif %}\n\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.get('role', '') == \"user\" and visible_text(message.content) is string and not(visible_text(message.content).startswith('<tool_response>') and visible_text(message.content).endswith('</tool_response>')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n\n{%- for message in messages %}\n {%- if visible_text(message.content) is string %}\n {%- set content = visible_text(message.content) %}\n {%- else %}\n {%- set content = '' %}\n {%- endif %}\n \n {%- if message.get('role', '') == \"system\" %}\n {%- if not loop.first %}\n {{- raise_exception('System message must be at the beginning.') }}\n {%- endif %}\n \n {%- elif message.get('role', '') == \"assistant\" %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is string %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in content %}\n {%- set reasoning_content = content.split('</think>')[0].rstrip('\\n').split('<think>')[-1].lstrip('\\n') %}\n {%- set content = content.split('</think>')[-1].lstrip('\\n').rstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- set reasoning_content = reasoning_content|trim %}\n \n {%- if (preserve_thinking is defined and preserve_thinking is false) and (loop.index0 < ns.last_query_index) %}\n {{- '<|im_start|>' + message.get('role', '') + '\\n<think>\\n\\n</think>\\n\\n' + content }}\n {%- else %}\n {{- '<|im_start|>' + message.get('role', '') + '\\n<think>\\n' + reasoning_content + '\\n</think>\\n\\n' + content }}\n {%- endif %}\n \n {%- if message.tool_calls and message.tool_calls is iterable and message.tool_calls is not mapping %}\n {%- if tool_call_format == 'json' %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- else %}\n {%- for tool_call in message.tool_calls %}\n {%- if tool_call.function is defined %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n \n {%- if loop.first %}\n {%- if content|trim %}\n {{- '\n\n<tool_call>\n<function=' + tool_call.name + '>\n' }}\n {%- else %}\n {{- '<tool_call>\n<function=' + tool_call.name + '>\n' }}\n {%- endif %}\n {%- else %}\n {{- '\n<tool_call>\n<function=' + tool_call.name + '>\n' }}\n {%- endif %}\n \n {%- if tool_call.arguments is defined %}\n {%- for args_name, args_value in tool_call.arguments|items %}\n {{- '<parameter=' + args_name + '>\n' }}\n {%- set args_value = args_value | string if args_value is string else args_value | tojson | safe %}\n {{- args_value }}\n {{- '\n</parameter>\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '</function>\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n \n {%- elif message.get('role', '') == \"tool\" %}\n {%- if loop.previtem and loop.previtem.get('role', '') != \"tool\" %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or loop.nextitem.get('role', '') != \"tool\" %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- elif message.get('role', '') != '' %}\n {{- '<|im_start|>' + message.get('role', '') + '\\n' + content + '<|im_end|>' + '\\n' }}\n {%- endif %}\n{%- endfor %}\n\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n \n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '<think>\n\n</think>\n\n' }}\n {%- else %}\n {{- '<think>\n' }}\n {%- endif %}\n \n{%- endif %}\n",
92
+ "clean_up_tokenization_spaces": false,
93
+ "eos_token": "<|im_end|>",
94
+ "extra_special_tokens": {},
95
+ "legacy": false,
96
+ "model_max_length": 1000000000000000019884624838656,
97
+ "pad_token": "<unk>",
98
+ "sp_model_kwargs": {},
99
+ "spaces_between_special_tokens": false,
100
+ "tokenizer_class": "LlamaTokenizer",
101
+ "unk_token": "<unk>",
102
+ "use_default_system_prompt": false
103
+ }