Ksjsjjdj commited on
Commit
bc429de
·
verified ·
1 Parent(s): 1d882cb

Upload 4 files

Browse files
Files changed (4) hide show
  1. chat_template.jinja +331 -0
  2. tokenizer.json +2 -2
  3. tokenizer.model +3 -0
  4. tokenizer_config.json +54 -585
chat_template.jinja ADDED
@@ -0,0 +1,331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {#-
2
+ In addition to the normal inputs of `messages` and `tools`, this template also accepts the
3
+ following kwargs:
4
+ - "builtin_tools": A list, can contain "browser" and/or "python".
5
+ - "model_identity": A string that optionally describes the model identity.
6
+ - "reasoning_effort": A string that describes the reasoning effort, defaults to "medium".
7
+ #}
8
+
9
+ {#- Tool Definition Rendering ============================================== #}
10
+ {%- macro render_typescript_type(param_spec, required_params, is_nullable=false) -%}
11
+ {%- if param_spec.type == "array" -%}
12
+ {%- if param_spec['items'] -%}
13
+ {%- if param_spec['items']['type'] == "string" -%}
14
+ {{- "string[]" }}
15
+ {%- elif param_spec['items']['type'] == "number" -%}
16
+ {{- "number[]" }}
17
+ {%- elif param_spec['items']['type'] == "integer" -%}
18
+ {{- "number[]" }}
19
+ {%- elif param_spec['items']['type'] == "boolean" -%}
20
+ {{- "boolean[]" }}
21
+ {%- else -%}
22
+ {%- set inner_type = render_typescript_type(param_spec['items'], required_params) -%}
23
+ {%- if inner_type == "object | object" or inner_type|length > 50 -%}
24
+ {{- "any[]" }}
25
+ {%- else -%}
26
+ {{- inner_type + "[]" }}
27
+ {%- endif -%}
28
+ {%- endif -%}
29
+ {%- if param_spec.nullable -%}
30
+ {{- " | null" }}
31
+ {%- endif -%}
32
+ {%- else -%}
33
+ {{- "any[]" }}
34
+ {%- if param_spec.nullable -%}
35
+ {{- " | null" }}
36
+ {%- endif -%}
37
+ {%- endif -%}
38
+ {%- elif param_spec.type is defined and param_spec.type is iterable and param_spec.type is not string and param_spec.type is not mapping and param_spec.type[0] is defined -%}
39
+ {#- Handle array of types like ["object", "object"] from Union[dict, list] #}
40
+ {%- if param_spec.type | length > 1 -%}
41
+ {{- param_spec.type | join(" | ") }}
42
+ {%- else -%}
43
+ {{- param_spec.type[0] }}
44
+ {%- endif -%}
45
+ {%- elif param_spec.oneOf -%}
46
+ {#- Handle oneOf schemas - check for complex unions and fallback to any #}
47
+ {%- set has_object_variants = false -%}
48
+ {%- for variant in param_spec.oneOf -%}
49
+ {%- if variant.type == "object" -%}
50
+ {%- set has_object_variants = true -%}
51
+ {%- endif -%}
52
+ {%- endfor -%}
53
+ {%- if has_object_variants and param_spec.oneOf|length > 1 -%}
54
+ {{- "any" }}
55
+ {%- else -%}
56
+ {%- for variant in param_spec.oneOf -%}
57
+ {{- render_typescript_type(variant, required_params) -}}
58
+ {%- if variant.description %}
59
+ {{- "// " + variant.description }}
60
+ {%- endif -%}
61
+ {%- if variant.default is defined %}
62
+ {{ "// default: " + variant.default|tojson }}
63
+ {%- endif -%}
64
+ {%- if not loop.last %}
65
+ {{- " | " }}
66
+ {% endif -%}
67
+ {%- endfor -%}
68
+ {%- endif -%}
69
+ {%- elif param_spec.type == "string" -%}
70
+ {%- if param_spec.enum -%}
71
+ {{- '"' + param_spec.enum|join('" | "') + '"' -}}
72
+ {%- else -%}
73
+ {{- "string" }}
74
+ {%- if param_spec.nullable %}
75
+ {{- " | null" }}
76
+ {%- endif -%}
77
+ {%- endif -%}
78
+ {%- elif param_spec.type == "number" -%}
79
+ {{- "number" }}
80
+ {%- elif param_spec.type == "integer" -%}
81
+ {{- "number" }}
82
+ {%- elif param_spec.type == "boolean" -%}
83
+ {{- "boolean" }}
84
+
85
+ {%- elif param_spec.type == "object" -%}
86
+ {%- if param_spec.properties -%}
87
+ {{- "{\n" }}
88
+ {%- for prop_name, prop_spec in param_spec.properties.items() -%}
89
+ {{- prop_name -}}
90
+ {%- if prop_name not in (param_spec.required or []) -%}
91
+ {{- "?" }}
92
+ {%- endif -%}
93
+ {{- ": " }}
94
+ {{ render_typescript_type(prop_spec, param_spec.required or []) }}
95
+ {%- if not loop.last -%}
96
+ {{-", " }}
97
+ {%- endif -%}
98
+ {%- endfor -%}
99
+ {{- "}" }}
100
+ {%- else -%}
101
+ {{- "object" }}
102
+ {%- endif -%}
103
+ {%- else -%}
104
+ {{- "any" }}
105
+ {%- endif -%}
106
+ {%- endmacro -%}
107
+
108
+ {%- macro render_tool_namespace(namespace_name, tools) -%}
109
+ {{- "## " + namespace_name + "\n\n" }}
110
+ {{- "namespace " + namespace_name + " {\n\n" }}
111
+ {%- for tool in tools %}
112
+ {%- set tool = tool.function %}
113
+ {{- "// " + tool.description + "\n" }}
114
+ {{- "type "+ tool.name + " = " }}
115
+ {%- if tool.parameters and tool.parameters.properties %}
116
+ {{- "(_: {\n" }}
117
+ {%- for param_name, param_spec in tool.parameters.properties.items() %}
118
+ {%- if param_spec.description %}
119
+ {{- "// " + param_spec.description + "\n" }}
120
+ {%- endif %}
121
+ {{- param_name }}
122
+ {%- if param_name not in (tool.parameters.required or []) -%}
123
+ {{- "?" }}
124
+ {%- endif -%}
125
+ {{- ": " }}
126
+ {{- render_typescript_type(param_spec, tool.parameters.required or []) }}
127
+ {%- if param_spec.default is defined -%}
128
+ {%- if param_spec.enum %}
129
+ {{- ", // default: " + param_spec.default }}
130
+ {%- elif param_spec.oneOf %}
131
+ {{- "// default: " + param_spec.default }}
132
+ {%- else %}
133
+ {{- ", // default: " + param_spec.default|tojson }}
134
+ {%- endif -%}
135
+ {%- endif -%}
136
+ {%- if not loop.last %}
137
+ {{- ",\n" }}
138
+ {%- else %}
139
+ {{- ",\n" }}
140
+ {%- endif -%}
141
+ {%- endfor %}
142
+ {{- "}) => any;\n\n" }}
143
+ {%- else -%}
144
+ {{- "() => any;\n\n" }}
145
+ {%- endif -%}
146
+ {%- endfor %}
147
+ {{- "} // namespace " + namespace_name }}
148
+ {%- endmacro -%}
149
+
150
+ {%- macro render_builtin_tools(browser_tool, python_tool) -%}
151
+ {%- if browser_tool %}
152
+ {{- "## browser\n\n" }}
153
+ {{- "// Tool for browsing.\n" }}
154
+ {{- "// The `cursor` appears in brackets before each browsing display: `[{cursor}]`.\n" }}
155
+ {{- "// Cite information from the tool using the following format:\n" }}
156
+ {{- "// `【{cursor}†L{line_start}(-L{line_end})?】`, for example: `【6†L9-L11】` or `【8†L3】`.\n" }}
157
+ {{- "// Do not quote more than 10 words directly from the tool output.\n" }}
158
+ {{- "// sources=web (default: web)\n" }}
159
+ {{- "namespace browser {\n\n" }}
160
+ {{- "// Searches for information related to `query` and displays `topn` results.\n" }}
161
+ {{- "type search = (_: {\n" }}
162
+ {{- "query: string,\n" }}
163
+ {{- "topn?: number, // default: 10\n" }}
164
+ {{- "source?: string,\n" }}
165
+ {{- "}) => any;\n\n" }}
166
+ {{- "// Opens the link `id` from the page indicated by `cursor` starting at line number `loc`, showing `num_lines` lines.\n" }}
167
+ {{- "// Valid link ids are displayed with the formatting: `【{id}†.*】`.\n" }}
168
+ {{- "// If `cursor` is not provided, the most recent page is implied.\n" }}
169
+ {{- "// If `id` is a string, it is treated as a fully qualified URL associated with `source`.\n" }}
170
+ {{- "// If `loc` is not provided, the viewport will be positioned at the beginning of the document or centered on the most relevant passage, if available.\n" }}
171
+ {{- "// Use this function without `id` to scroll to a new location of an opened page.\n" }}
172
+ {{- "type open = (_: {\n" }}
173
+ {{- "id?: number | string, // default: -1\n" }}
174
+ {{- "cursor?: number, // default: -1\n" }}
175
+ {{- "loc?: number, // default: -1\n" }}
176
+ {{- "num_lines?: number, // default: -1\n" }}
177
+ {{- "view_source?: boolean, // default: false\n" }}
178
+ {{- "source?: string,\n" }}
179
+ {{- "}) => any;\n\n" }}
180
+ {{- "// Finds exact matches of `pattern` in the current page, or the page given by `cursor`.\n" }}
181
+ {{- "type find = (_: {\n" }}
182
+ {{- "pattern: string,\n" }}
183
+ {{- "cursor?: number, // default: -1\n" }}
184
+ {{- "}) => any;\n\n" }}
185
+ {{- "} // namespace browser\n\n" }}
186
+ {%- endif -%}
187
+
188
+ {%- if python_tool %}
189
+ {{- "## python\n\n" }}
190
+ {{- "Use this tool to execute Python code in your chain of thought. The code will not be shown to the user. This tool should be used for internal reasoning, but not for code that is intended to be visible to the user (e.g. when creating plots, tables, or files).\n\n" }}
191
+ {{- "When you send a message containing Python code to python, it will be executed in a stateful Jupyter notebook environment. python will respond with the output of the execution or time out after 120.0 seconds. The drive at '/mnt/data' can be used to save and persist user files. Internet access for this session is UNKNOWN. Depends on the cluster.\n\n" }}
192
+ {%- endif -%}
193
+ {%- endmacro -%}
194
+
195
+ {#- System Message Construction ============================================ #}
196
+ {%- macro build_system_message() -%}
197
+ {%- if model_identity is not defined %}
198
+ {%- set model_identity = "You are ChatGPT, a large language model trained by OpenAI." %}
199
+ {%- endif %}
200
+ {{- model_identity + "\n" }}
201
+ {{- "Knowledge cutoff: 2024-06\n" }}
202
+ {{- "Current date: " + strftime_now("%Y-%m-%d") + "\n\n" }}
203
+ {%- if reasoning_effort is not defined %}
204
+ {%- set reasoning_effort = "medium" %}
205
+ {%- endif %}
206
+ {{- "Reasoning: " + reasoning_effort + "\n\n" }}
207
+ {%- if builtin_tools %}
208
+ {{- "# Tools\n\n" }}
209
+ {%- set available_builtin_tools = namespace(browser=false, python=false) %}
210
+ {%- for tool in builtin_tools %}
211
+ {%- if tool == "browser" %}
212
+ {%- set available_builtin_tools.browser = true %}
213
+ {%- elif tool == "python" %}
214
+ {%- set available_builtin_tools.python = true %}
215
+ {%- endif %}
216
+ {%- endfor %}
217
+ {{- render_builtin_tools(available_builtin_tools.browser, available_builtin_tools.python) }}
218
+ {%- endif -%}
219
+ {{- "# Valid channels: analysis, commentary, final. Channel must be included for every message." }}
220
+ {%- if tools -%}
221
+ {{- "\nCalls to these tools must go to the commentary channel: 'functions'." }}
222
+ {%- endif -%}
223
+ {%- endmacro -%}
224
+
225
+ {#- Main Template Logic ================================================= #}
226
+ {#- Set defaults #}
227
+
228
+ {#- Render system message #}
229
+ {{- "<|start|>system<|message|>" }}
230
+ {{- build_system_message() }}
231
+ {{- "<|end|>" }}
232
+
233
+ {#- Extract developer message #}
234
+ {%- if messages[0].role == "developer" or messages[0].role == "system" %}
235
+ {%- set developer_message = messages[0].content %}
236
+ {%- set loop_messages = messages[1:] %}
237
+ {%- else %}
238
+ {%- set developer_message = "" %}
239
+ {%- set loop_messages = messages %}
240
+ {%- endif %}
241
+
242
+ {#- Render developer message #}
243
+ {%- if developer_message or tools %}
244
+ {{- "<|start|>developer<|message|>" }}
245
+ {%- if developer_message %}
246
+ {{- "# Instructions\n\n" }}
247
+ {{- developer_message }}
248
+ {{- "\n\n" }}
249
+ {%- endif %}
250
+ {%- if tools -%}
251
+ {{- "# Tools\n\n" }}
252
+ {{- render_tool_namespace("functions", tools) }}
253
+ {%- endif -%}
254
+ {{- "<|end|>" }}
255
+ {%- endif %}
256
+
257
+ {#- Render messages #}
258
+ {%- set last_tool_call = namespace(name=none) %}
259
+ {%- for message in loop_messages -%}
260
+ {#- At this point only assistant/user/tool messages should remain #}
261
+ {%- if message.role == 'assistant' -%}
262
+ {#- Checks to ensure the messages are being passed in the format we expect #}
263
+ {%- if "content" in message %}
264
+ {%- if "<|channel|>analysis<|message|>" in message.content or "<|channel|>final<|message|>" in message.content %}
265
+ {{- raise_exception("You have passed a message containing <|channel|> tags in the content field. Instead of doing this, you should pass analysis messages (the string between '<|message|>' and '<|end|>') in the 'thinking' field, and final messages (the string between '<|message|>' and '<|end|>') in the 'content' field.") }}
266
+ {%- endif %}
267
+ {%- endif %}
268
+ {%- if "thinking" in message %}
269
+ {%- if "<|channel|>analysis<|message|>" in message.thinking or "<|channel|>final<|message|>" in message.thinking %}
270
+ {{- raise_exception("You have passed a message containing <|channel|> tags in the thinking field. Instead of doing this, you should pass analysis messages (the string between '<|message|>' and '<|end|>') in the 'thinking' field, and final messages (the string between '<|message|>' and '<|end|>') in the 'content' field.") }}
271
+ {%- endif %}
272
+ {%- endif %}
273
+ {%- if "tool_calls" in message %}
274
+ {#- We need very careful handling here - we want to drop the tool call analysis message if the model #}
275
+ {#- has output a later <|final|> message, but otherwise we want to retain it. This is the only case #}
276
+ {#- when we render CoT/analysis messages in inference. #}
277
+ {%- set future_final_message = namespace(found=false) %}
278
+ {%- for future_message in loop_messages[loop.index:] %}
279
+ {%- if future_message.role == 'assistant' and "tool_calls" not in future_message %}
280
+ {%- set future_final_message.found = true %}
281
+ {%- endif %}
282
+ {%- endfor %}
283
+ {#- We assume max 1 tool call per message, and so we infer the tool call name #}
284
+ {#- in "tool" messages from the most recent assistant tool call name #}
285
+ {%- set tool_call = message.tool_calls[0] %}
286
+ {%- if tool_call.function %}
287
+ {%- set tool_call = tool_call.function %}
288
+ {%- endif %}
289
+ {%- if message.content and message.thinking %}
290
+ {{- raise_exception("Cannot pass both content and thinking in an assistant message with tool calls! Put the analysis message in one or the other, but not both.") }}
291
+ {%- elif message.content and not future_final_message.found %}
292
+ {{- "<|start|>assistant<|channel|>analysis<|message|>" + message.content + "<|end|>" }}
293
+ {%- elif message.thinking and not future_final_message.found %}
294
+ {{- "<|start|>assistant<|channel|>analysis<|message|>" + message.thinking + "<|end|>" }}
295
+ {%- endif %}
296
+ {{- "<|start|>assistant to=" }}
297
+ {{- "functions." + tool_call.name + "<|channel|>commentary " }}
298
+ {{- (tool_call.content_type if tool_call.content_type is defined else "json") + "<|message|>" }}
299
+ {{- tool_call.arguments|tojson }}
300
+ {{- "<|call|>" }}
301
+ {%- set last_tool_call.name = tool_call.name %}
302
+ {%- elif loop.last and not add_generation_prompt %}
303
+ {#- Only render the CoT if the final turn is an assistant turn and add_generation_prompt is false #}
304
+ {#- This is a situation that should only occur in training, never in inference. #}
305
+ {%- if "thinking" in message %}
306
+ {{- "<|start|>assistant<|channel|>analysis<|message|>" + message.thinking + "<|end|>" }}
307
+ {%- endif %}
308
+ {#- <|return|> indicates the end of generation, but <|end|> does not #}
309
+ {#- <|return|> should never be an input to the model, but we include it as the final token #}
310
+ {#- when training, so the model learns to emit it. #}
311
+ {{- "<|start|>assistant<|channel|>final<|message|>" + message.content + "<|return|>" }}
312
+ {%- else %}
313
+ {#- CoT is dropped during all previous turns, so we never render it for inference #}
314
+ {{- "<|start|>assistant<|channel|>final<|message|>" + message.content + "<|end|>" }}
315
+ {%- set last_tool_call.name = none %}
316
+ {%- endif %}
317
+ {%- elif message.role == 'tool' -%}
318
+ {%- if last_tool_call.name is none %}
319
+ {{- raise_exception("Message has tool role, but there was no previous assistant message with a tool call!") }}
320
+ {%- endif %}
321
+ {{- "<|start|>functions." + last_tool_call.name }}
322
+ {{- " to=assistant<|channel|>commentary<|message|>" + message.content|tojson + "<|end|>" }}
323
+ {%- elif message.role == 'user' -%}
324
+ {{- "<|start|>user<|message|>" + message.content + "<|end|>" }}
325
+ {%- endif -%}
326
+ {%- endfor -%}
327
+
328
+ {#- Generation prompt #}
329
+ {%- if add_generation_prompt -%}
330
+ <|start|>assistant
331
+ {%- endif -%}
tokenizer.json CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:6852f8d561078cc0cebe70ca03c5bfdd0d60a45f9d2e0e1e4cc05b68e9ec329e
3
- size 33385008
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0614fe83cadab421296e664e1f48f4261fa8fef6e03e63bb75c20f38e37d07d3
3
+ size 27868174
tokenizer.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1299c11d7cf632ef3b4e11937501358ada021bbdf7c47638d13c0ee982f2e79c
3
+ size 4689074
tokenizer_config.json CHANGED
@@ -1,689 +1,167 @@
1
  {
2
- "add_bos_token": false,
3
- "add_eos_token": false,
4
  "added_tokens_decoder": {
5
- "128000": {
6
- "content": "<|begin_of_text|>",
7
  "lstrip": false,
8
  "normalized": false,
9
  "rstrip": false,
10
  "single_word": false,
11
  "special": true
12
  },
13
- "128001": {
14
- "content": "<|end_of_text|>",
15
  "lstrip": false,
16
  "normalized": false,
17
  "rstrip": false,
18
  "single_word": false,
19
  "special": true
20
  },
21
- "128002": {
22
- "content": "<|reserved_special_token_0|>",
23
  "lstrip": false,
24
  "normalized": false,
25
  "rstrip": false,
26
  "single_word": false,
27
  "special": true
28
  },
29
- "128003": {
30
- "content": "<|reserved_special_token_1|>",
31
  "lstrip": false,
32
  "normalized": false,
33
  "rstrip": false,
34
  "single_word": false,
35
  "special": true
36
  },
37
- "128004": {
38
- "content": "<|finetune_right_pad_id|>",
39
  "lstrip": false,
40
  "normalized": false,
41
  "rstrip": false,
42
  "single_word": false,
43
  "special": true
44
  },
45
- "128005": {
46
- "content": "<|reserved_special_token_2|>",
47
  "lstrip": false,
48
  "normalized": false,
49
  "rstrip": false,
50
  "single_word": false,
51
  "special": true
52
  },
53
- "128006": {
54
- "content": "<|start_header_id|>",
55
  "lstrip": false,
56
  "normalized": false,
57
  "rstrip": false,
58
  "single_word": false,
59
  "special": true
60
  },
61
- "128007": {
62
- "content": "<|end_header_id|>",
63
  "lstrip": false,
64
  "normalized": false,
65
  "rstrip": false,
66
  "single_word": false,
67
  "special": true
68
  },
69
- "128008": {
70
- "content": "<|eom_id|>",
71
  "lstrip": false,
72
  "normalized": false,
73
  "rstrip": false,
74
  "single_word": false,
75
  "special": true
76
  },
77
- "128009": {
78
- "content": "<|eot_id|>",
79
  "lstrip": false,
80
  "normalized": false,
81
  "rstrip": false,
82
  "single_word": false,
83
  "special": true
84
  },
85
- "128010": {
86
- "content": "<|python_tag|>",
87
  "lstrip": false,
88
  "normalized": false,
89
  "rstrip": false,
90
  "single_word": false,
91
  "special": true
92
  },
93
- "128011": {
94
- "content": "<|media_start|>",
95
  "lstrip": false,
96
  "normalized": false,
97
  "rstrip": false,
98
  "single_word": false,
99
  "special": true
100
  },
101
- "128012": {
102
- "content": "<|media_content|>",
103
  "lstrip": false,
104
  "normalized": false,
105
  "rstrip": false,
106
  "single_word": false,
107
  "special": true
108
  },
109
- "128013": {
110
- "content": "<|media_pad|>",
111
  "lstrip": false,
112
  "normalized": false,
113
  "rstrip": false,
114
  "single_word": false,
115
  "special": true
116
  },
117
- "128014": {
118
- "content": "<|media_end|>",
119
  "lstrip": false,
120
  "normalized": false,
121
  "rstrip": false,
122
  "single_word": false,
123
  "special": true
124
  },
125
- "128015": {
126
- "content": "<|file_start|>",
127
  "lstrip": false,
128
  "normalized": false,
129
  "rstrip": false,
130
  "single_word": false,
131
  "special": true
132
  },
133
- "128016": {
134
- "content": "<|file_content|>",
135
  "lstrip": false,
136
  "normalized": false,
137
  "rstrip": false,
138
  "single_word": false,
139
  "special": true
140
  },
141
- "128017": {
142
- "content": "<|file_end|>",
143
  "lstrip": false,
144
  "normalized": false,
145
  "rstrip": false,
146
  "single_word": false,
147
  "special": true
148
  },
149
- "128018": {
150
- "content": "<|folder_start|>",
151
  "lstrip": false,
152
  "normalized": false,
153
  "rstrip": false,
154
  "single_word": false,
155
  "special": true
156
  },
157
- "128019": {
158
- "content": "<|folder_content|>",
159
  "lstrip": false,
160
  "normalized": false,
161
  "rstrip": false,
162
  "single_word": false,
163
  "special": true
164
  },
165
- "128020": {
166
- "content": "<|folder_end|>",
167
- "lstrip": false,
168
- "normalized": false,
169
- "rstrip": false,
170
- "single_word": false,
171
- "special": true
172
- },
173
- "128021": {
174
- "content": "<|doc_start|>",
175
- "lstrip": false,
176
- "normalized": false,
177
- "rstrip": false,
178
- "single_word": false,
179
- "special": true
180
- },
181
- "128022": {
182
- "content": "<|doc_content|>",
183
- "lstrip": false,
184
- "normalized": false,
185
- "rstrip": false,
186
- "single_word": false,
187
- "special": true
188
- },
189
- "128023": {
190
- "content": "<|doc_end|>",
191
- "lstrip": false,
192
- "normalized": false,
193
- "rstrip": false,
194
- "single_word": false,
195
- "special": true
196
- },
197
- "128024": {
198
- "content": "<|code_start|>",
199
- "lstrip": false,
200
- "normalized": false,
201
- "rstrip": false,
202
- "single_word": false,
203
- "special": true
204
- },
205
- "128025": {
206
- "content": "<|code_content|>",
207
- "lstrip": false,
208
- "normalized": false,
209
- "rstrip": false,
210
- "single_word": false,
211
- "special": true
212
- },
213
- "128026": {
214
- "content": "<|code_end|>",
215
- "lstrip": false,
216
- "normalized": false,
217
- "rstrip": false,
218
- "single_word": false,
219
- "special": true
220
- },
221
- "128027": {
222
- "content": "<|url_start|>",
223
- "lstrip": false,
224
- "normalized": false,
225
- "rstrip": false,
226
- "single_word": false,
227
- "special": true
228
- },
229
- "128028": {
230
- "content": "<|url_end|>",
231
- "lstrip": false,
232
- "normalized": false,
233
- "rstrip": false,
234
- "single_word": false,
235
- "special": true
236
- },
237
- "128029": {
238
- "content": "<|lang_start|>",
239
- "lstrip": false,
240
- "normalized": false,
241
- "rstrip": false,
242
- "single_word": false,
243
- "special": true
244
- },
245
- "128030": {
246
- "content": "<|lang_end|>",
247
- "lstrip": false,
248
- "normalized": false,
249
- "rstrip": false,
250
- "single_word": false,
251
- "special": true
252
- },
253
- "128031": {
254
- "content": "<|tool_calls_section_begin|>",
255
- "lstrip": false,
256
- "normalized": false,
257
- "rstrip": false,
258
- "single_word": false,
259
- "special": true
260
- },
261
- "128032": {
262
- "content": "<|tool_calls_section_end|>",
263
- "lstrip": false,
264
- "normalized": false,
265
- "rstrip": false,
266
- "single_word": false,
267
- "special": true
268
- },
269
- "128033": {
270
- "content": "<|tool_call_begin|>",
271
- "lstrip": false,
272
- "normalized": false,
273
- "rstrip": false,
274
- "single_word": false,
275
- "special": true
276
- },
277
- "128034": {
278
- "content": "<|tool_call_argument_begin|>",
279
- "lstrip": false,
280
- "normalized": false,
281
- "rstrip": false,
282
- "single_word": false,
283
- "special": true
284
- },
285
- "128035": {
286
- "content": "<|tool_call_end|>",
287
- "lstrip": false,
288
- "normalized": false,
289
- "rstrip": false,
290
- "single_word": false,
291
- "special": true
292
- },
293
- "128036": {
294
- "content": "<|tool_result_start|>",
295
- "lstrip": false,
296
- "normalized": false,
297
- "rstrip": false,
298
- "single_word": false,
299
- "special": true
300
- },
301
- "128037": {
302
- "content": "<|tool_result_content|>",
303
- "lstrip": false,
304
- "normalized": false,
305
- "rstrip": false,
306
- "single_word": false,
307
- "special": true
308
- },
309
- "128038": {
310
- "content": "<|tool_result_end|>",
311
- "lstrip": false,
312
- "normalized": false,
313
- "rstrip": false,
314
- "single_word": false,
315
- "special": true
316
- },
317
- "128039": {
318
- "content": "<|im_user|>",
319
- "lstrip": false,
320
- "normalized": false,
321
- "rstrip": false,
322
- "single_word": false,
323
- "special": true
324
- },
325
- "128040": {
326
- "content": "<|im_assistant|>",
327
- "lstrip": false,
328
- "normalized": false,
329
- "rstrip": false,
330
- "single_word": false,
331
- "special": true
332
- },
333
- "128041": {
334
- "content": "<|im_system|>",
335
- "lstrip": false,
336
- "normalized": false,
337
- "rstrip": false,
338
- "single_word": false,
339
- "special": true
340
- },
341
- "128042": {
342
- "content": "<|im_middle|>",
343
- "lstrip": false,
344
- "normalized": false,
345
- "rstrip": false,
346
- "single_word": false,
347
- "special": true
348
- },
349
- "128043": {
350
- "content": "<think>",
351
- "lstrip": false,
352
- "normalized": false,
353
- "rstrip": false,
354
- "single_word": false,
355
- "special": true
356
- },
357
- "128044": {
358
- "content": "</think>",
359
- "lstrip": false,
360
- "normalized": false,
361
- "rstrip": false,
362
- "single_word": false,
363
- "special": true
364
- },
365
- "128045": {
366
- "content": "<feelings>",
367
- "lstrip": false,
368
- "normalized": false,
369
- "rstrip": false,
370
- "single_word": false,
371
- "special": true
372
- },
373
- "128046": {
374
- "content": "</feelings>",
375
- "lstrip": false,
376
- "normalized": false,
377
- "rstrip": false,
378
- "single_word": false,
379
- "special": true
380
- },
381
- "128047": {
382
- "content": "<consciousness>",
383
- "lstrip": false,
384
- "normalized": false,
385
- "rstrip": false,
386
- "single_word": false,
387
- "special": true
388
- },
389
- "128048": {
390
- "content": "</consciousness>",
391
- "lstrip": false,
392
- "normalized": false,
393
- "rstrip": false,
394
- "single_word": false,
395
- "special": true
396
- },
397
- "128049": {
398
- "content": "<reflection>",
399
- "lstrip": false,
400
- "normalized": false,
401
- "rstrip": false,
402
- "single_word": false,
403
- "special": true
404
- },
405
- "128050": {
406
- "content": "</reflection>",
407
- "lstrip": false,
408
- "normalized": false,
409
- "rstrip": false,
410
- "single_word": false,
411
- "special": true
412
- },
413
- "128051": {
414
- "content": "<memory>",
415
- "lstrip": false,
416
- "normalized": false,
417
- "rstrip": false,
418
- "single_word": false,
419
- "special": true
420
- },
421
- "128052": {
422
- "content": "</memory>",
423
- "lstrip": false,
424
- "normalized": false,
425
- "rstrip": false,
426
- "single_word": false,
427
- "special": true
428
- },
429
- "128053": {
430
- "content": "<translation>",
431
- "lstrip": false,
432
- "normalized": false,
433
- "rstrip": false,
434
- "single_word": false,
435
- "special": true
436
- },
437
- "128054": {
438
- "content": "</translation>",
439
- "lstrip": false,
440
- "normalized": false,
441
- "rstrip": false,
442
- "single_word": false,
443
- "special": true
444
- },
445
- "128055": {
446
- "content": "<bilingual>",
447
- "lstrip": false,
448
- "normalized": false,
449
- "rstrip": false,
450
- "single_word": false,
451
- "special": true
452
- },
453
- "128056": {
454
- "content": "</bilingual>",
455
- "lstrip": false,
456
- "normalized": false,
457
- "rstrip": false,
458
- "single_word": false,
459
- "special": true
460
- },
461
- "128057": {
462
- "content": "<intuition>",
463
- "lstrip": false,
464
- "normalized": false,
465
- "rstrip": false,
466
- "single_word": false,
467
- "special": true
468
- },
469
- "128058": {
470
- "content": "</intuition>",
471
- "lstrip": false,
472
- "normalized": false,
473
- "rstrip": false,
474
- "single_word": false,
475
- "special": true
476
- },
477
- "128059": {
478
- "content": "<creativity>",
479
- "lstrip": false,
480
- "normalized": false,
481
- "rstrip": false,
482
- "single_word": false,
483
- "special": true
484
- },
485
- "128060": {
486
- "content": "</creativity>",
487
- "lstrip": false,
488
- "normalized": false,
489
- "rstrip": false,
490
- "single_word": false,
491
- "special": true
492
- },
493
- "128061": {
494
- "content": "<analysis>",
495
- "lstrip": false,
496
- "normalized": false,
497
- "rstrip": false,
498
- "single_word": false,
499
- "special": true
500
- },
501
- "128062": {
502
- "content": "</analysis>",
503
- "lstrip": false,
504
- "normalized": false,
505
- "rstrip": false,
506
- "single_word": false,
507
- "special": true
508
- },
509
- "128063": {
510
- "content": "<language>",
511
- "lstrip": false,
512
- "normalized": false,
513
- "rstrip": false,
514
- "single_word": false,
515
- "special": true
516
- },
517
- "128064": {
518
- "content": "</language>",
519
- "lstrip": false,
520
- "normalized": false,
521
- "rstrip": false,
522
- "single_word": false,
523
- "special": true
524
- },
525
- "128065": {
526
- "content": "<planning>",
527
- "lstrip": false,
528
- "normalized": false,
529
- "rstrip": false,
530
- "single_word": false,
531
- "special": true
532
- },
533
- "128066": {
534
- "content": "</planning>",
535
- "lstrip": false,
536
- "normalized": false,
537
- "rstrip": false,
538
- "single_word": false,
539
- "special": true
540
- },
541
- "128067": {
542
- "content": "<hypothesis>",
543
- "lstrip": false,
544
- "normalized": false,
545
- "rstrip": false,
546
- "single_word": false,
547
- "special": true
548
- },
549
- "128068": {
550
- "content": "</hypothesis>",
551
- "lstrip": false,
552
- "normalized": false,
553
- "rstrip": false,
554
- "single_word": false,
555
- "special": true
556
- },
557
- "128069": {
558
- "content": "<evaluation>",
559
- "lstrip": false,
560
- "normalized": false,
561
- "rstrip": false,
562
- "single_word": false,
563
- "special": true
564
- },
565
- "128070": {
566
- "content": "</evaluation>",
567
- "lstrip": false,
568
- "normalized": false,
569
- "rstrip": false,
570
- "single_word": false,
571
- "special": true
572
- },
573
- "128071": {
574
- "content": "<synthesis>",
575
- "lstrip": false,
576
- "normalized": false,
577
- "rstrip": false,
578
- "single_word": false,
579
- "special": true
580
- },
581
- "128072": {
582
- "content": "</synthesis>",
583
- "lstrip": false,
584
- "normalized": false,
585
- "rstrip": false,
586
- "single_word": false,
587
- "special": true
588
- },
589
- "128073": {
590
- "content": "<metacognition>",
591
- "lstrip": false,
592
- "normalized": false,
593
- "rstrip": false,
594
- "single_word": false,
595
- "special": true
596
- },
597
- "128074": {
598
- "content": "</metacognition>",
599
- "lstrip": false,
600
- "normalized": false,
601
- "rstrip": false,
602
- "single_word": false,
603
- "special": true
604
- },
605
- "128075": {
606
- "content": "<tool_call>",
607
- "lstrip": false,
608
- "normalized": false,
609
- "rstrip": false,
610
- "single_word": false,
611
- "special": true
612
- },
613
- "128076": {
614
- "content": "</tool_call>",
615
- "lstrip": false,
616
- "normalized": false,
617
- "rstrip": false,
618
- "single_word": false,
619
- "special": true
620
- },
621
- "128077": {
622
- "content": "<|dynamic_tool_start|>",
623
- "lstrip": false,
624
- "normalized": false,
625
- "rstrip": false,
626
- "single_word": false,
627
- "special": true
628
- },
629
- "128078": {
630
- "content": "<|dynamic_tool_interpret|>",
631
- "lstrip": false,
632
- "normalized": false,
633
- "rstrip": false,
634
- "single_word": false,
635
- "special": true
636
- },
637
- "128079": {
638
- "content": "<|dynamic_tool_execute|>",
639
- "lstrip": false,
640
- "normalized": false,
641
- "rstrip": false,
642
- "single_word": false,
643
- "special": true
644
- },
645
- "128080": {
646
- "content": "<|dynamic_tool_end|>",
647
- "lstrip": false,
648
- "normalized": false,
649
- "rstrip": false,
650
- "single_word": false,
651
- "special": true
652
- },
653
- "128081": {
654
- "content": "<|action_interpret_start|>",
655
- "lstrip": false,
656
- "normalized": false,
657
- "rstrip": false,
658
- "single_word": false,
659
- "special": true
660
- },
661
- "128082": {
662
- "content": "<|action_analyze|>",
663
- "lstrip": false,
664
- "normalized": false,
665
- "rstrip": false,
666
- "single_word": false,
667
- "special": true
668
- },
669
- "128083": {
670
- "content": "<|action_execute|>",
671
- "lstrip": false,
672
- "normalized": false,
673
- "rstrip": false,
674
- "single_word": false,
675
- "special": true
676
- },
677
- "128084": {
678
- "content": "<|action_result|>",
679
- "lstrip": false,
680
- "normalized": false,
681
- "rstrip": false,
682
- "single_word": false,
683
- "special": true
684
- },
685
- "128085": {
686
- "content": "<|action_interpret_end|>",
687
  "lstrip": false,
688
  "normalized": false,
689
  "rstrip": false,
@@ -691,24 +169,15 @@
691
  "special": true
692
  }
693
  },
694
- "boi_token": "<start_of_image>",
695
- "bos_token": "<|begin_of_text|>",
696
- "clean_up_tokenization_spaces": true,
697
- "eoi_token": "<end_of_image>",
698
- "eos_token": "<|end_of_text|>",
699
- "extra_special_tokens": {
700
- "boi_token": "<start_of_image>",
701
- "eoi_token": "<end_of_image>",
702
- "image_token": "<image_soft_token>"
703
- },
704
- "image_token": "<image_soft_token>",
705
- "model_max_length": 32,
706
- "pad_token": "<|finetune_right_pad_id|>",
707
- "padding_side": "left",
708
- "sp_model_kwargs": null,
709
- "spaces_between_special_tokens": false,
710
- "tokenizer_class": "PreTrainedTokenizerFast",
711
- "unk_token": "<unk>",
712
- "use_default_system_prompt": false,
713
- "chat_template": "{# Unsloth template fixes #}{# Built-in tools definitions #}{%- set builtin_tools = [{'name': 'list_directory', 'description': 'List contents of a directory', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Directory path to list'}}, 'required': ['path']}}, {'name': 'read_file', 'description': 'Read contents of a file', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'File path to read'}}, 'required': ['path']}}, {'name': 'search_file_content', 'description': 'Search for content within files', 'parameters': {'type': 'object', 'properties': {'pattern': {'type': 'string', 'description': 'Search pattern'}, 'path': {'type': 'string', 'description': 'Directory or file path'}}, 'required': ['pattern', 'path']}}, {'name': 'glob', 'description': 'Find files matching a glob pattern', 'parameters': {'type': 'object', 'properties': {'pattern': {'type': 'string', 'description': 'Glob pattern to match'}}, 'required': ['pattern']}}, {'name': 'replace', 'description': 'Replace text in a file', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'File path'}, 'old_text': {'type': 'string', 'description': 'Text to replace'}, 'new_text': {'type': 'string', 'description': 'Replacement text'}}, 'required': ['path', 'old_text', 'new_text']}}, {'name': 'write_file', 'description': 'Write content to a file', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'File path'}, 'content': {'type': 'string', 'description': 'Content to write'}}, 'required': ['path', 'content']}}, {'name': 'web_fetch', 'description': 'Fetch content from a URL', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'URL to fetch'}}, 'required': ['url']}}, {'name': 'read_many_files', 'description': 'Read multiple files at once', 'parameters': {'type': 'object', 'properties': {'paths': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of file paths'}}, 'required': ['paths']}}, {'name': 'run_shell_command', 'description': 'Execute a shell command', 'parameters': {'type': 'object', 'properties': {'command': {'type': 'string', 'description': 'Command to execute'}}, 'required': ['command']}}, {'name': 'save_memory', 'description': 'Save information to memory', 'parameters': {'type': 'object', 'properties': {'key': {'type': 'string', 'description': 'Memory key'}, 'value': {'type': 'string', 'description': 'Value to store'}}, 'required': ['key', 'value']}}, {'name': 'google_web_search', 'description': 'Search the web using Google', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Search query'}}, 'required': ['query']}}, {'name': 'todo_write', 'description': 'Write a todo item', 'parameters': {'type': 'object', 'properties': {'task': {'type': 'string', 'description': 'Task description'}, 'priority': {'type': 'string', 'description': 'Priority level'}}, 'required': ['task']}}, {'name': 'todo_read', 'description': 'Read todo items', 'parameters': {'type': 'object', 'properties': {'filter': {'type': 'string', 'description': 'Filter criteria'}}}}, {'name': 'todo_pause', 'description': 'Pause a todo item', 'parameters': {'type': 'object', 'properties': {'task_id': {'type': 'string', 'description': 'Task ID to pause'}}, 'required': ['task_id']}}, {'name': 'edit', 'description': 'Edit a file with specific changes', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'File path'}, 'changes': {'type': 'array', 'description': 'List of changes to apply'}}, 'required': ['path', 'changes']}}, {'name': 'create_directory', 'description': 'Create a new directory', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Directory path to create'}, 'recursive': {'type': 'boolean', 'description': 'Create parent directories if needed'}}, 'required': ['path']}}, {'name': 'delete_file', 'description': 'Delete a file or directory', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Path to delete'}, 'recursive': {'type': 'boolean', 'description': 'Delete recursively for directories'}}, 'required': ['path']}}, {'name': 'copy_file', 'description': 'Copy a file or directory', 'parameters': {'type': 'object', 'properties': {'source': {'type': 'string', 'description': 'Source path'}, 'destination': {'type': 'string', 'description': 'Destination path'}}, 'required': ['source', 'destination']}}, {'name': 'move_file', 'description': 'Move or rename a file or directory', 'parameters': {'type': 'object', 'properties': {'source': {'type': 'string', 'description': 'Source path'}, 'destination': {'type': 'string', 'description': 'Destination path'}}, 'required': ['source', 'destination']}}, {'name': 'get_file_info', 'description': 'Get metadata about a file', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'File path'}}, 'required': ['path']}}, {'name': 'compress_files', 'description': 'Compress files into an archive', 'parameters': {'type': 'object', 'properties': {'paths': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Paths to compress'}, 'output': {'type': 'string', 'description': 'Output archive path'}, 'format': {'type': 'string', 'description': 'Archive format (zip, tar, gz)'}}, 'required': ['paths', 'output']}}, {'name': 'extract_archive', 'description': 'Extract files from an archive', 'parameters': {'type': 'object', 'properties': {'archive': {'type': 'string', 'description': 'Archive path'}, 'destination': {'type': 'string', 'description': 'Extraction destination'}}, 'required': ['archive', 'destination']}}, {'name': 'http_request', 'description': 'Make an HTTP request', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Request URL'}, 'method': {'type': 'string', 'description': 'HTTP method (GET, POST, PUT, DELETE)'}, 'headers': {'type': 'object', 'description': 'Request headers'}, 'body': {'type': 'string', 'description': 'Request body'}}, 'required': ['url', 'method']}}, {'name': 'send_email', 'description': 'Send an email', 'parameters': {'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'Recipient email'}, 'subject': {'type': 'string', 'description': 'Email subject'}, 'body': {'type': 'string', 'description': 'Email body'}, 'attachments': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Attachment paths'}}, 'required': ['to', 'subject', 'body']}}, {'name': 'get_datetime', 'description': 'Get current date and time', 'parameters': {'type': 'object', 'properties': {'timezone': {'type': 'string', 'description': 'Timezone (e.g., UTC, America/New_York)'}, 'format': {'type': 'string', 'description': 'Date format string'}}}}, {'name': 'calculate', 'description': 'Perform mathematical calculations', 'parameters': {'type': 'object', 'properties': {'expression': {'type': 'string', 'description': 'Mathematical expression to evaluate'}}, 'required': ['expression']}}, {'name': 'translate_text', 'description': 'Translate text between languages', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to translate'}, 'source_lang': {'type': 'string', 'description': 'Source language code'}, 'target_lang': {'type': 'string', 'description': 'Target language code'}}, 'required': ['text', 'target_lang']}}, {'name': 'text_to_speech', 'description': 'Convert text to speech audio', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to convert'}, 'language': {'type': 'string', 'description': 'Language code'}, 'output': {'type': 'string', 'description': 'Output audio file path'}}, 'required': ['text', 'output']}}, {'name': 'speech_to_text', 'description': 'Convert speech audio to text', 'parameters': {'type': 'object', 'properties': {'audio': {'type': 'string', 'description': 'Audio file path'}, 'language': {'type': 'string', 'description': 'Language code'}}, 'required': ['audio']}}, {'name': 'image_analyze', 'description': 'Analyze an image and extract information', 'parameters': {'type': 'object', 'properties': {'image': {'type': 'string', 'description': 'Image file path or URL'}, 'analysis_type': {'type': 'string', 'description': 'Type of analysis (objects, text, faces, colors)'}}, 'required': ['image']}}, {'name': 'pdf_extract', 'description': 'Extract text and data from PDF', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'PDF file path'}, 'pages': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Specific pages to extract'}}, 'required': ['path']}}, {'name': 'json_parse', 'description': 'Parse and query JSON data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'JSON string or file path'}, 'query': {'type': 'string', 'description': 'JSONPath query'}}, 'required': ['data']}}, {'name': 'xml_parse', 'description': 'Parse and query XML data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'XML string or file path'}, 'xpath': {'type': 'string', 'description': 'XPath query'}}, 'required': ['data']}}, {'name': 'csv_parse', 'description': 'Parse and query CSV data', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'CSV file path'}, 'delimiter': {'type': 'string', 'description': 'Field delimiter'}, 'query': {'type': 'string', 'description': 'SQL-like query'}}, 'required': ['path']}}, {'name': 'regex_match', 'description': 'Match text using regular expressions', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to search'}, 'pattern': {'type': 'string', 'description': 'Regex pattern'}, 'flags': {'type': 'string', 'description': 'Regex flags (i, g, m)'}}, 'required': ['text', 'pattern']}}, {'name': 'encode_base64', 'description': 'Encode data to Base64', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'Data to encode'}}, 'required': ['data']}}, {'name': 'decode_base64', 'description': 'Decode Base64 data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'Base64 data to decode'}}, 'required': ['data']}}, {'name': 'hash_text', 'description': 'Generate hash of text', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to hash'}, 'algorithm': {'type': 'string', 'description': 'Hash algorithm (md5, sha1, sha256, sha512)'}}, 'required': ['text']}}, {'name': 'encrypt', 'description': 'Encrypt data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'Data to encrypt'}, 'key': {'type': 'string', 'description': 'Encryption key'}, 'algorithm': {'type': 'string', 'description': 'Encryption algorithm'}}, 'required': ['data', 'key']}}, {'name': 'decrypt', 'description': 'Decrypt data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'Data to decrypt'}, 'key': {'type': 'string', 'description': 'Decryption key'}, 'algorithm': {'type': 'string', 'description': 'Encryption algorithm'}}, 'required': ['data', 'key']}}, {'name': 'database_query', 'description': 'Execute a database query', 'parameters': {'type': 'object', 'properties': {'connection': {'type': 'string', 'description': 'Database connection string'}, 'query': {'type': 'string', 'description': 'SQL query'}, 'params': {'type': 'array', 'description': 'Query parameters'}}, 'required': ['connection', 'query']}}, {'name': 'screenshot', 'description': 'Take a screenshot', 'parameters': {'type': 'object', 'properties': {'output': {'type': 'string', 'description': 'Output file path'}, 'region': {'type': 'object', 'description': 'Screen region to capture'}}, 'required': ['output']}}, {'name': 'clipboard_read', 'description': 'Read clipboard contents', 'parameters': {'type': 'object', 'properties': {}}}, {'name': 'clipboard_write', 'description': 'Write to clipboard', 'parameters': {'type': 'object', 'properties': {'content': {'type': 'string', 'description': 'Content to write'}}, 'required': ['content']}}, {'name': 'environment_get', 'description': 'Get environment variable', 'parameters': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Variable name'}}, 'required': ['name']}}, {'name': 'environment_set', 'description': 'Set environment variable', 'parameters': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Variable name'}, 'value': {'type': 'string', 'description': 'Variable value'}}, 'required': ['name', 'value']}}, {'name': 'process_list', 'description': 'List running processes', 'parameters': {'type': 'object', 'properties': {'filter': {'type': 'string', 'description': 'Process name filter'}}}}, {'name': 'process_kill', 'description': 'Kill a process', 'parameters': {'type': 'object', 'properties': {'pid': {'type': 'integer', 'description': 'Process ID'}, 'signal': {'type': 'string', 'description': 'Signal to send'}}, 'required': ['pid']}}, {'name': 'video_process', 'description': 'Process and manipulate video files', 'parameters': {'type': 'object', 'properties': {'input': {'type': 'string', 'description': 'Input video path'}, 'output': {'type': 'string', 'description': 'Output video path'}, 'operation': {'type': 'string', 'description': 'Operation (trim, resize, convert, merge, extract_audio)'}}, 'required': ['input', 'output', 'operation']}}, {'name': 'audio_process', 'description': 'Process and manipulate audio files', 'parameters': {'type': 'object', 'properties': {'input': {'type': 'string', 'description': 'Input audio path'}, 'output': {'type': 'string', 'description': 'Output audio path'}, 'operation': {'type': 'string', 'description': 'Operation (trim, convert, merge, normalize, speed)'}}, 'required': ['input', 'output', 'operation']}}, {'name': 'image_resize', 'description': 'Resize an image', 'parameters': {'type': 'object', 'properties': {'input': {'type': 'string', 'description': 'Input image path'}, 'output': {'type': 'string', 'description': 'Output image path'}, 'width': {'type': 'integer', 'description': 'New width'}, 'height': {'type': 'integer', 'description': 'New height'}}, 'required': ['input', 'output']}}, {'name': 'image_convert', 'description': 'Convert image format', 'parameters': {'type': 'object', 'properties': {'input': {'type': 'string', 'description': 'Input image path'}, 'output': {'type': 'string', 'description': 'Output image path'}, 'format': {'type': 'string', 'description': 'Target format (png, jpg, webp, gif)'}}, 'required': ['input', 'output', 'format']}}, {'name': 'image_crop', 'description': 'Crop an image', 'parameters': {'type': 'object', 'properties': {'input': {'type': 'string', 'description': 'Input image path'}, 'output': {'type': 'string', 'description': 'Output image path'}, 'x': {'type': 'integer'}, 'y': {'type': 'integer'}, 'width': {'type': 'integer'}, 'height': {'type': 'integer'}}, 'required': ['input', 'output', 'x', 'y', 'width', 'height']}}, {'name': 'image_rotate', 'description': 'Rotate an image', 'parameters': {'type': 'object', 'properties': {'input': {'type': 'string', 'description': 'Input image path'}, 'output': {'type': 'string', 'description': 'Output image path'}, 'angle': {'type': 'number', 'description': 'Rotation angle in degrees'}}, 'required': ['input', 'output', 'angle']}}, {'name': 'image_filter', 'description': 'Apply filter to an image', 'parameters': {'type': 'object', 'properties': {'input': {'type': 'string', 'description': 'Input image path'}, 'output': {'type': 'string', 'description': 'Output image path'}, 'filter': {'type': 'string', 'description': 'Filter type (blur, sharpen, grayscale, sepia, brightness, contrast)'}}, 'required': ['input', 'output', 'filter']}}, {'name': 'ocr_extract', 'description': 'Extract text from image using OCR', 'parameters': {'type': 'object', 'properties': {'image': {'type': 'string', 'description': 'Image path'}, 'language': {'type': 'string', 'description': 'OCR language'}}, 'required': ['image']}}, {'name': 'qr_generate', 'description': 'Generate QR code', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'Data to encode'}, 'output': {'type': 'string', 'description': 'Output image path'}, 'size': {'type': 'integer', 'description': 'QR code size'}}, 'required': ['data', 'output']}}, {'name': 'qr_decode', 'description': 'Decode QR code from image', 'parameters': {'type': 'object', 'properties': {'image': {'type': 'string', 'description': 'Image path'}}, 'required': ['image']}}, {'name': 'barcode_generate', 'description': 'Generate barcode', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'Data to encode'}, 'output': {'type': 'string', 'description': 'Output image path'}, 'type': {'type': 'string', 'description': 'Barcode type (code128, ean13, upc)'}}, 'required': ['data', 'output']}}, {'name': 'barcode_decode', 'description': 'Decode barcode from image', 'parameters': {'type': 'object', 'properties': {'image': {'type': 'string', 'description': 'Image path'}}, 'required': ['image']}}, {'name': 'send_notification', 'description': 'Send system notification', 'parameters': {'type': 'object', 'properties': {'title': {'type': 'string', 'description': 'Notification title'}, 'message': {'type': 'string', 'description': 'Notification message'}, 'icon': {'type': 'string', 'description': 'Icon path'}}, 'required': ['title', 'message']}}, {'name': 'send_sms', 'description': 'Send SMS message', 'parameters': {'type': 'object', 'properties': {'to': {'type': 'string', 'description': 'Phone number'}, 'message': {'type': 'string', 'description': 'Message content'}}, 'required': ['to', 'message']}}, {'name': 'slack_message', 'description': 'Send Slack message', 'parameters': {'type': 'object', 'properties': {'channel': {'type': 'string', 'description': 'Slack channel'}, 'message': {'type': 'string', 'description': 'Message content'}, 'webhook_url': {'type': 'string', 'description': 'Slack webhook URL'}}, 'required': ['channel', 'message']}}, {'name': 'discord_message', 'description': 'Send Discord message', 'parameters': {'type': 'object', 'properties': {'channel_id': {'type': 'string', 'description': 'Discord channel ID'}, 'message': {'type': 'string', 'description': 'Message content'}, 'webhook_url': {'type': 'string', 'description': 'Discord webhook URL'}}, 'required': ['message', 'webhook_url']}}, {'name': 'telegram_message', 'description': 'Send Telegram message', 'parameters': {'type': 'object', 'properties': {'chat_id': {'type': 'string', 'description': 'Telegram chat ID'}, 'message': {'type': 'string', 'description': 'Message content'}, 'bot_token': {'type': 'string', 'description': 'Bot token'}}, 'required': ['chat_id', 'message', 'bot_token']}}, {'name': 'git_clone', 'description': 'Clone a Git repository', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Repository URL'}, 'destination': {'type': 'string', 'description': 'Destination path'}, 'branch': {'type': 'string', 'description': 'Branch to clone'}}, 'required': ['url']}}, {'name': 'git_commit', 'description': 'Create a Git commit', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Repository path'}, 'message': {'type': 'string', 'description': 'Commit message'}, 'files': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Files to stage'}}, 'required': ['path', 'message']}}, {'name': 'git_push', 'description': 'Push Git changes', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Repository path'}, 'remote': {'type': 'string', 'description': 'Remote name'}, 'branch': {'type': 'string', 'description': 'Branch to push'}}, 'required': ['path']}}, {'name': 'git_pull', 'description': 'Pull Git changes', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Repository path'}, 'remote': {'type': 'string', 'description': 'Remote name'}, 'branch': {'type': 'string', 'description': 'Branch to pull'}}, 'required': ['path']}}, {'name': 'git_status', 'description': 'Get Git repository status', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Repository path'}}, 'required': ['path']}}, {'name': 'git_diff', 'description': 'Get Git diff', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Repository path'}, 'file': {'type': 'string', 'description': 'Specific file to diff'}}, 'required': ['path']}}, {'name': 'git_log', 'description': 'Get Git commit log', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Repository path'}, 'limit': {'type': 'integer', 'description': 'Number of commits'}}, 'required': ['path']}}, {'name': 'git_branch', 'description': 'Manage Git branches', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Repository path'}, 'action': {'type': 'string', 'description': 'Action (list, create, delete, switch)'}, 'name': {'type': 'string', 'description': 'Branch name'}}, 'required': ['path', 'action']}}, {'name': 'docker_run', 'description': 'Run Docker container', 'parameters': {'type': 'object', 'properties': {'image': {'type': 'string', 'description': 'Docker image'}, 'command': {'type': 'string', 'description': 'Command to run'}, 'ports': {'type': 'object', 'description': 'Port mappings'}, 'volumes': {'type': 'object', 'description': 'Volume mappings'}, 'env': {'type': 'object', 'description': 'Environment variables'}}, 'required': ['image']}}, {'name': 'docker_build', 'description': 'Build Docker image', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Dockerfile path'}, 'tag': {'type': 'string', 'description': 'Image tag'}}, 'required': ['path', 'tag']}}, {'name': 'docker_ps', 'description': 'List Docker containers', 'parameters': {'type': 'object', 'properties': {'all': {'type': 'boolean', 'description': 'Show all containers'}}}}, {'name': 'docker_stop', 'description': 'Stop Docker container', 'parameters': {'type': 'object', 'properties': {'container': {'type': 'string', 'description': 'Container ID or name'}}, 'required': ['container']}}, {'name': 'docker_logs', 'description': 'Get Docker container logs', 'parameters': {'type': 'object', 'properties': {'container': {'type': 'string', 'description': 'Container ID or name'}, 'tail': {'type': 'integer', 'description': 'Number of lines'}}, 'required': ['container']}}, {'name': 's3_upload', 'description': 'Upload file to S3', 'parameters': {'type': 'object', 'properties': {'local_path': {'type': 'string', 'description': 'Local file path'}, 'bucket': {'type': 'string', 'description': 'S3 bucket name'}, 'key': {'type': 'string', 'description': 'S3 object key'}}, 'required': ['local_path', 'bucket', 'key']}}, {'name': 's3_download', 'description': 'Download file from S3', 'parameters': {'type': 'object', 'properties': {'bucket': {'type': 'string', 'description': 'S3 bucket name'}, 'key': {'type': 'string', 'description': 'S3 object key'}, 'local_path': {'type': 'string', 'description': 'Local file path'}}, 'required': ['bucket', 'key', 'local_path']}}, {'name': 's3_list', 'description': 'List S3 objects', 'parameters': {'type': 'object', 'properties': {'bucket': {'type': 'string', 'description': 'S3 bucket name'}, 'prefix': {'type': 'string', 'description': 'Object prefix'}}, 'required': ['bucket']}}, {'name': 'gcs_upload', 'description': 'Upload file to Google Cloud Storage', 'parameters': {'type': 'object', 'properties': {'local_path': {'type': 'string', 'description': 'Local file path'}, 'bucket': {'type': 'string', 'description': 'GCS bucket name'}, 'blob': {'type': 'string', 'description': 'Blob name'}}, 'required': ['local_path', 'bucket', 'blob']}}, {'name': 'gcs_download', 'description': 'Download file from Google Cloud Storage', 'parameters': {'type': 'object', 'properties': {'bucket': {'type': 'string', 'description': 'GCS bucket name'}, 'blob': {'type': 'string', 'description': 'Blob name'}, 'local_path': {'type': 'string', 'description': 'Local file path'}}, 'required': ['bucket', 'blob', 'local_path']}}, {'name': 'azure_blob_upload', 'description': 'Upload file to Azure Blob Storage', 'parameters': {'type': 'object', 'properties': {'local_path': {'type': 'string', 'description': 'Local file path'}, 'container': {'type': 'string', 'description': 'Container name'}, 'blob': {'type': 'string', 'description': 'Blob name'}}, 'required': ['local_path', 'container', 'blob']}}, {'name': 'azure_blob_download', 'description': 'Download file from Azure Blob Storage', 'parameters': {'type': 'object', 'properties': {'container': {'type': 'string', 'description': 'Container name'}, 'blob': {'type': 'string', 'description': 'Blob name'}, 'local_path': {'type': 'string', 'description': 'Local file path'}}, 'required': ['container', 'blob', 'local_path']}}, {'name': 'model_inference', 'description': 'Run ML model inference', 'parameters': {'type': 'object', 'properties': {'model': {'type': 'string', 'description': 'Model path or name'}, 'input': {'type': 'object', 'description': 'Input data'}, 'device': {'type': 'string', 'description': 'Device (cpu, cuda)'}}, 'required': ['model', 'input']}}, {'name': 'dataset_load', 'description': 'Load a dataset', 'parameters': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Dataset name'}, 'split': {'type': 'string', 'description': 'Dataset split'}, 'subset': {'type': 'string', 'description': 'Subset name'}}, 'required': ['name']}}, {'name': 'dataset_transform', 'description': 'Transform dataset', 'parameters': {'type': 'object', 'properties': {'dataset': {'type': 'string', 'description': 'Dataset reference'}, 'operations': {'type': 'array', 'description': 'Transformation operations'}}, 'required': ['dataset', 'operations']}}, {'name': 'scrape_page', 'description': 'Scrape web page content', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'URL to scrape'}, 'selector': {'type': 'string', 'description': 'CSS selector'}, 'wait_for': {'type': 'string', 'description': 'Element to wait for'}}, 'required': ['url']}}, {'name': 'parse_html', 'description': 'Parse HTML content', 'parameters': {'type': 'object', 'properties': {'html': {'type': 'string', 'description': 'HTML content'}, 'selector': {'type': 'string', 'description': 'CSS selector'}, 'attribute': {'type': 'string', 'description': 'Attribute to extract'}}, 'required': ['html']}}, {'name': 'browser_navigate', 'description': 'Navigate browser to URL', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'URL to navigate to'}}, 'required': ['url']}}, {'name': 'browser_click', 'description': 'Click element in browser', 'parameters': {'type': 'object', 'properties': {'selector': {'type': 'string', 'description': 'CSS selector'}}, 'required': ['selector']}}, {'name': 'browser_type', 'description': 'Type text in browser input', 'parameters': {'type': 'object', 'properties': {'selector': {'type': 'string', 'description': 'CSS selector'}, 'text': {'type': 'string', 'description': 'Text to type'}}, 'required': ['selector', 'text']}}, {'name': 'browser_screenshot', 'description': 'Take browser screenshot', 'parameters': {'type': 'object', 'properties': {'output': {'type': 'string', 'description': 'Output file path'}, 'full_page': {'type': 'boolean', 'description': 'Capture full page'}}, 'required': ['output']}}, {'name': 'api_call', 'description': 'Make REST API call', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'API endpoint'}, 'method': {'type': 'string', 'description': 'HTTP method'}, 'headers': {'type': 'object', 'description': 'Request headers'}, 'body': {'type': 'object', 'description': 'Request body'}, 'auth': {'type': 'object', 'description': 'Authentication'}}, 'required': ['url']}}, {'name': 'graphql_query', 'description': 'Execute GraphQL query', 'parameters': {'type': 'object', 'properties': {'endpoint': {'type': 'string', 'description': 'GraphQL endpoint'}, 'query': {'type': 'string', 'description': 'GraphQL query'}, 'variables': {'type': 'object', 'description': 'Query variables'}}, 'required': ['endpoint', 'query']}}, {'name': 'websocket_connect', 'description': 'Connect to WebSocket', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'WebSocket URL'}}, 'required': ['url']}}, {'name': 'websocket_send', 'description': 'Send WebSocket message', 'parameters': {'type': 'object', 'properties': {'connection': {'type': 'string', 'description': 'Connection ID'}, 'message': {'type': 'string', 'description': 'Message to send'}}, 'required': ['connection', 'message']}}, {'name': 'ftp_upload', 'description': 'Upload file via FTP', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'FTP host'}, 'local_path': {'type': 'string', 'description': 'Local file path'}, 'remote_path': {'type': 'string', 'description': 'Remote file path'}, 'username': {'type': 'string'}, 'password': {'type': 'string'}}, 'required': ['host', 'local_path', 'remote_path']}}, {'name': 'ftp_download', 'description': 'Download file via FTP', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'FTP host'}, 'remote_path': {'type': 'string', 'description': 'Remote file path'}, 'local_path': {'type': 'string', 'description': 'Local file path'}, 'username': {'type': 'string'}, 'password': {'type': 'string'}}, 'required': ['host', 'remote_path', 'local_path']}}, {'name': 'ssh_execute', 'description': 'Execute command via SSH', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'SSH host'}, 'command': {'type': 'string', 'description': 'Command to execute'}, 'username': {'type': 'string'}, 'password': {'type': 'string'}, 'key_file': {'type': 'string'}}, 'required': ['host', 'command']}}, {'name': 'sftp_upload', 'description': 'Upload file via SFTP', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'SFTP host'}, 'local_path': {'type': 'string', 'description': 'Local file path'}, 'remote_path': {'type': 'string', 'description': 'Remote file path'}, 'username': {'type': 'string'}, 'key_file': {'type': 'string'}}, 'required': ['host', 'local_path', 'remote_path']}}, {'name': 'sftp_download', 'description': 'Download file via SFTP', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'SFTP host'}, 'remote_path': {'type': 'string', 'description': 'Remote file path'}, 'local_path': {'type': 'string', 'description': 'Local file path'}, 'username': {'type': 'string'}, 'key_file': {'type': 'string'}}, 'required': ['host', 'remote_path', 'local_path']}}, {'name': 'redis_get', 'description': 'Get value from Redis', 'parameters': {'type': 'object', 'properties': {'key': {'type': 'string', 'description': 'Redis key'}, 'host': {'type': 'string', 'description': 'Redis host'}}, 'required': ['key']}}, {'name': 'redis_set', 'description': 'Set value in Redis', 'parameters': {'type': 'object', 'properties': {'key': {'type': 'string', 'description': 'Redis key'}, 'value': {'type': 'string', 'description': 'Value to set'}, 'host': {'type': 'string', 'description': 'Redis host'}, 'ttl': {'type': 'integer', 'description': 'Time to live in seconds'}}, 'required': ['key', 'value']}}, {'name': 'mongodb_find', 'description': 'Find documents in MongoDB', 'parameters': {'type': 'object', 'properties': {'connection': {'type': 'string', 'description': 'MongoDB connection string'}, 'database': {'type': 'string', 'description': 'Database name'}, 'collection': {'type': 'string', 'description': 'Collection name'}, 'query': {'type': 'object', 'description': 'Query filter'}}, 'required': ['connection', 'database', 'collection']}}, {'name': 'mongodb_insert', 'description': 'Insert document into MongoDB', 'parameters': {'type': 'object', 'properties': {'connection': {'type': 'string', 'description': 'MongoDB connection string'}, 'database': {'type': 'string', 'description': 'Database name'}, 'collection': {'type': 'string', 'description': 'Collection name'}, 'document': {'type': 'object', 'description': 'Document to insert'}}, 'required': ['connection', 'database', 'collection', 'document']}}, {'name': 'elasticsearch_search', 'description': 'Search in Elasticsearch', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'Elasticsearch host'}, 'index': {'type': 'string', 'description': 'Index name'}, 'query': {'type': 'object', 'description': 'Search query'}}, 'required': ['host', 'index', 'query']}}, {'name': 'kafka_produce', 'description': 'Produce message to Kafka', 'parameters': {'type': 'object', 'properties': {'broker': {'type': 'string', 'description': 'Kafka broker'}, 'topic': {'type': 'string', 'description': 'Topic name'}, 'message': {'type': 'string', 'description': 'Message to produce'}}, 'required': ['broker', 'topic', 'message']}}, {'name': 'kafka_consume', 'description': 'Consume messages from Kafka', 'parameters': {'type': 'object', 'properties': {'broker': {'type': 'string', 'description': 'Kafka broker'}, 'topic': {'type': 'string', 'description': 'Topic name'}, 'group_id': {'type': 'string', 'description': 'Consumer group ID'}}, 'required': ['broker', 'topic']}}, {'name': 'rabbitmq_publish', 'description': 'Publish message to RabbitMQ', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'RabbitMQ host'}, 'queue': {'type': 'string', 'description': 'Queue name'}, 'message': {'type': 'string', 'description': 'Message to publish'}}, 'required': ['host', 'queue', 'message']}}, {'name': 'jwt_encode', 'description': 'Encode JWT token', 'parameters': {'type': 'object', 'properties': {'payload': {'type': 'object', 'description': 'Token payload'}, 'secret': {'type': 'string', 'description': 'Secret key'}, 'algorithm': {'type': 'string', 'description': 'Algorithm (HS256, RS256)'}}, 'required': ['payload', 'secret']}}, {'name': 'jwt_decode', 'description': 'Decode JWT token', 'parameters': {'type': 'object', 'properties': {'token': {'type': 'string', 'description': 'JWT token'}, 'secret': {'type': 'string', 'description': 'Secret key'}, 'verify': {'type': 'boolean', 'description': 'Verify signature'}}, 'required': ['token']}}, {'name': 'uuid_generate', 'description': 'Generate UUID', 'parameters': {'type': 'object', 'properties': {'version': {'type': 'integer', 'description': 'UUID version (1, 4)'}}}}, {'name': 'random_generate', 'description': 'Generate random data', 'parameters': {'type': 'object', 'properties': {'type': {'type': 'string', 'description': 'Type (string, number, bytes)'}, 'length': {'type': 'integer', 'description': 'Length of output'}}, 'required': ['type', 'length']}}, {'name': 'password_hash', 'description': 'Hash password', 'parameters': {'type': 'object', 'properties': {'password': {'type': 'string', 'description': 'Password to hash'}, 'algorithm': {'type': 'string', 'description': 'Algorithm (bcrypt, argon2, pbkdf2)'}}, 'required': ['password']}}, {'name': 'password_verify', 'description': 'Verify password hash', 'parameters': {'type': 'object', 'properties': {'password': {'type': 'string', 'description': 'Password to verify'}, 'hash': {'type': 'string', 'description': 'Password hash'}}, 'required': ['password', 'hash']}}, {'name': 'certificate_generate', 'description': 'Generate SSL certificate', 'parameters': {'type': 'object', 'properties': {'common_name': {'type': 'string', 'description': 'Common name'}, 'days': {'type': 'integer', 'description': 'Validity in days'}, 'output': {'type': 'string', 'description': 'Output path'}}, 'required': ['common_name', 'output']}}, {'name': 'yaml_parse', 'description': 'Parse YAML data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'YAML string or file path'}}, 'required': ['data']}}, {'name': 'yaml_dump', 'description': 'Convert data to YAML', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'object', 'description': 'Data to convert'}}, 'required': ['data']}}, {'name': 'toml_parse', 'description': 'Parse TOML data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'TOML string or file path'}}, 'required': ['data']}}, {'name': 'ini_parse', 'description': 'Parse INI data', 'parameters': {'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'INI string or file path'}}, 'required': ['data']}}, {'name': 'markdown_to_html', 'description': 'Convert Markdown to HTML', 'parameters': {'type': 'object', 'properties': {'markdown': {'type': 'string', 'description': 'Markdown content'}}, 'required': ['markdown']}}, {'name': 'html_to_pdf', 'description': 'Convert HTML to PDF', 'parameters': {'type': 'object', 'properties': {'html': {'type': 'string', 'description': 'HTML content or URL'}, 'output': {'type': 'string', 'description': 'Output PDF path'}}, 'required': ['html', 'output']}}, {'name': 'pdf_merge', 'description': 'Merge multiple PDFs', 'parameters': {'type': 'object', 'properties': {'files': {'type': 'array', 'items': {'type': 'string'}, 'description': 'PDF files to merge'}, 'output': {'type': 'string', 'description': 'Output PDF path'}}, 'required': ['files', 'output']}}, {'name': 'pdf_split', 'description': 'Split PDF into pages', 'parameters': {'type': 'object', 'properties': {'file': {'type': 'string', 'description': 'PDF file path'}, 'output_dir': {'type': 'string', 'description': 'Output directory'}}, 'required': ['file', 'output_dir']}}, {'name': 'excel_read', 'description': 'Read Excel file', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Excel file path'}, 'sheet': {'type': 'string', 'description': 'Sheet name'}}, 'required': ['path']}}, {'name': 'excel_write', 'description': 'Write Excel file', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Excel file path'}, 'data': {'type': 'array', 'description': 'Data to write'}, 'sheet': {'type': 'string', 'description': 'Sheet name'}}, 'required': ['path', 'data']}}, {'name': 'word_read', 'description': 'Read Word document', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Word file path'}}, 'required': ['path']}}, {'name': 'word_write', 'description': 'Write Word document', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'Word file path'}, 'content': {'type': 'string', 'description': 'Document content'}}, 'required': ['path', 'content']}}, {'name': 'powerpoint_read', 'description': 'Read PowerPoint file', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'PowerPoint file path'}}, 'required': ['path']}}, {'name': 'zip_create', 'description': 'Create ZIP archive', 'parameters': {'type': 'object', 'properties': {'files': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Files to include'}, 'output': {'type': 'string', 'description': 'Output ZIP path'}}, 'required': ['files', 'output']}}, {'name': 'zip_extract', 'description': 'Extract ZIP archive', 'parameters': {'type': 'object', 'properties': {'archive': {'type': 'string', 'description': 'ZIP file path'}, 'destination': {'type': 'string', 'description': 'Extraction destination'}}, 'required': ['archive', 'destination']}}, {'name': 'tar_create', 'description': 'Create TAR archive', 'parameters': {'type': 'object', 'properties': {'files': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Files to include'}, 'output': {'type': 'string', 'description': 'Output TAR path'}, 'compression': {'type': 'string', 'description': 'Compression (gz, bz2, xz)'}}, 'required': ['files', 'output']}}, {'name': 'tar_extract', 'description': 'Extract TAR archive', 'parameters': {'type': 'object', 'properties': {'archive': {'type': 'string', 'description': 'TAR file path'}, 'destination': {'type': 'string', 'description': 'Extraction destination'}}, 'required': ['archive', 'destination']}}, {'name': 'checksum_calculate', 'description': 'Calculate file checksum', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'File path'}, 'algorithm': {'type': 'string', 'description': 'Algorithm (md5, sha1, sha256)'}}, 'required': ['path']}}, {'name': 'checksum_verify', 'description': 'Verify file checksum', 'parameters': {'type': 'object', 'properties': {'path': {'type': 'string', 'description': 'File path'}, 'checksum': {'type': 'string', 'description': 'Expected checksum'}, 'algorithm': {'type': 'string', 'description': 'Algorithm'}}, 'required': ['path', 'checksum']}}, {'name': 'cron_schedule', 'description': 'Schedule cron job', 'parameters': {'type': 'object', 'properties': {'expression': {'type': 'string', 'description': 'Cron expression'}, 'command': {'type': 'string', 'description': 'Command to run'}}, 'required': ['expression', 'command']}}, {'name': 'timer_set', 'description': 'Set a timer', 'parameters': {'type': 'object', 'properties': {'duration': {'type': 'integer', 'description': 'Duration in seconds'}, 'action': {'type': 'string', 'description': 'Action to perform'}}, 'required': ['duration', 'action']}}, {'name': 'system_info', 'description': 'Get system information', 'parameters': {'type': 'object', 'properties': {'type': {'type': 'string', 'description': 'Info type (cpu, memory, disk, network, os)'}}}}, {'name': 'network_ping', 'description': 'Ping a host', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'Host to ping'}, 'count': {'type': 'integer', 'description': 'Number of pings'}}, 'required': ['host']}}, {'name': 'dns_lookup', 'description': 'Perform DNS lookup', 'parameters': {'type': 'object', 'properties': {'domain': {'type': 'string', 'description': 'Domain name'}, 'type': {'type': 'string', 'description': 'Record type (A, AAAA, MX, TXT, NS)'}}, 'required': ['domain']}}, {'name': 'port_scan', 'description': 'Scan open ports', 'parameters': {'type': 'object', 'properties': {'host': {'type': 'string', 'description': 'Host to scan'}, 'ports': {'type': 'string', 'description': 'Port range (e.g., 1-1000)'}}, 'required': ['host']}}, {'name': 'whois_lookup', 'description': 'Perform WHOIS lookup', 'parameters': {'type': 'object', 'properties': {'domain': {'type': 'string', 'description': 'Domain name'}}, 'required': ['domain']}}, {'name': 'ip_geolocation', 'description': 'Get IP geolocation', 'parameters': {'type': 'object', 'properties': {'ip': {'type': 'string', 'description': 'IP address'}}, 'required': ['ip']}}, {'name': 'url_shorten', 'description': 'Shorten URL', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'URL to shorten'}}, 'required': ['url']}}, {'name': 'url_expand', 'description': 'Expand shortened URL', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Shortened URL'}}, 'required': ['url']}}, {'name': 'spell_check', 'description': 'Check spelling', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to check'}, 'language': {'type': 'string', 'description': 'Language code'}}, 'required': ['text']}}, {'name': 'grammar_check', 'description': 'Check grammar', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to check'}, 'language': {'type': 'string', 'description': 'Language code'}}, 'required': ['text']}}, {'name': 'sentiment_analyze', 'description': 'Analyze sentiment of text', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to analyze'}}, 'required': ['text']}}, {'name': 'text_summarize', 'description': 'Summarize text', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to summarize'}, 'max_length': {'type': 'integer', 'description': 'Maximum summary length'}}, 'required': ['text']}}, {'name': 'text_extract_keywords', 'description': 'Extract keywords from text', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to analyze'}, 'count': {'type': 'integer', 'description': 'Number of keywords'}}, 'required': ['text']}}, {'name': 'text_extract_entities', 'description': 'Extract named entities from text', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to analyze'}}, 'required': ['text']}}, {'name': 'text_classify', 'description': 'Classify text into categories', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to classify'}, 'categories': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Possible categories'}}, 'required': ['text']}}, {'name': 'embedding_generate', 'description': 'Generate text embeddings', 'parameters': {'type': 'object', 'properties': {'text': {'type': 'string', 'description': 'Text to embed'}, 'model': {'type': 'string', 'description': 'Embedding model'}}, 'required': ['text']}}, {'name': 'similarity_calculate', 'description': 'Calculate text similarity', 'parameters': {'type': 'object', 'properties': {'text1': {'type': 'string', 'description': 'First text'}, 'text2': {'type': 'string', 'description': 'Second text'}}, 'required': ['text1', 'text2']}}, {'name': 'calendar_create_event', 'description': 'Create calendar event', 'parameters': {'type': 'object', 'properties': {'title': {'type': 'string', 'description': 'Event title'}, 'start': {'type': 'string', 'description': 'Start datetime'}, 'end': {'type': 'string', 'description': 'End datetime'}, 'description': {'type': 'string', 'description': 'Event description'}}, 'required': ['title', 'start', 'end']}}, {'name': 'calendar_list_events', 'description': 'List calendar events', 'parameters': {'type': 'object', 'properties': {'start_date': {'type': 'string', 'description': 'Start date'}, 'end_date': {'type': 'string', 'description': 'End date'}}}}, {'name': 'reminder_set', 'description': 'Set a reminder', 'parameters': {'type': 'object', 'properties': {'message': {'type': 'string', 'description': 'Reminder message'}, 'time': {'type': 'string', 'description': 'Reminder time'}}, 'required': ['message', 'time']}}, {'name': 'note_create', 'description': 'Create a note', 'parameters': {'type': 'object', 'properties': {'title': {'type': 'string', 'description': 'Note title'}, 'content': {'type': 'string', 'description': 'Note content'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Note tags'}}, 'required': ['title', 'content']}}, {'name': 'note_search', 'description': 'Search notes', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Search query'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter by tags'}}, 'required': ['query']}}, {'name': 'bookmark_add', 'description': 'Add a bookmark', 'parameters': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'URL to bookmark'}, 'title': {'type': 'string', 'description': 'Bookmark title'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Bookmark tags'}}, 'required': ['url']}}, {'name': 'bookmark_search', 'description': 'Search bookmarks', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Search query'}}, 'required': ['query']}}, {'name': 'contact_add', 'description': 'Add a contact', 'parameters': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Contact name'}, 'email': {'type': 'string', 'description': 'Email address'}, 'phone': {'type': 'string', 'description': 'Phone number'}}, 'required': ['name']}}, {'name': 'contact_search', 'description': 'Search contacts', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Search query'}}, 'required': ['query']}}, {'name': 'weather_get', 'description': 'Get weather information', 'parameters': {'type': 'object', 'properties': {'location': {'type': 'string', 'description': 'Location name or coordinates'}, 'units': {'type': 'string', 'description': 'Units (metric, imperial)'}}, 'required': ['location']}}, {'name': 'weather_forecast', 'description': 'Get weather forecast', 'parameters': {'type': 'object', 'properties': {'location': {'type': 'string', 'description': 'Location name or coordinates'}, 'days': {'type': 'integer', 'description': 'Forecast days'}}, 'required': ['location']}}, {'name': 'currency_convert', 'description': 'Convert currency', 'parameters': {'type': 'object', 'properties': {'amount': {'type': 'number', 'description': 'Amount to convert'}, 'from': {'type': 'string', 'description': 'Source currency'}, 'to': {'type': 'string', 'description': 'Target currency'}}, 'required': ['amount', 'from', 'to']}}, {'name': 'unit_convert', 'description': 'Convert units', 'parameters': {'type': 'object', 'properties': {'value': {'type': 'number', 'description': 'Value to convert'}, 'from': {'type': 'string', 'description': 'Source unit'}, 'to': {'type': 'string', 'description': 'Target unit'}}, 'required': ['value', 'from', 'to']}}, {'name': 'timezone_convert', 'description': 'Convert timezone', 'parameters': {'type': 'object', 'properties': {'datetime': {'type': 'string', 'description': 'Datetime string'}, 'from_tz': {'type': 'string', 'description': 'Source timezone'}, 'to_tz': {'type': 'string', 'description': 'Target timezone'}}, 'required': ['datetime', 'from_tz', 'to_tz']}}, {'name': 'stock_price', 'description': 'Get stock price', 'parameters': {'type': 'object', 'properties': {'symbol': {'type': 'string', 'description': 'Stock symbol'}}, 'required': ['symbol']}}, {'name': 'crypto_price', 'description': 'Get cryptocurrency price', 'parameters': {'type': 'object', 'properties': {'symbol': {'type': 'string', 'description': 'Crypto symbol'}, 'currency': {'type': 'string', 'description': 'Fiat currency'}}, 'required': ['symbol']}}, {'name': 'news_search', 'description': 'Search news articles', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Search query'}, 'language': {'type': 'string', 'description': 'Language code'}, 'limit': {'type': 'integer', 'description': 'Number of results'}}, 'required': ['query']}}, {'name': 'wikipedia_search', 'description': 'Search Wikipedia', 'parameters': {'type': 'object', 'properties': {'query': {'type': 'string', 'description': 'Search query'}, 'language': {'type': 'string', 'description': 'Language code'}}, 'required': ['query']}}, {'name': 'dictionary_lookup', 'description': 'Look up word definition', 'parameters': {'type': 'object', 'properties': {'word': {'type': 'string', 'description': 'Word to look up'}, 'language': {'type': 'string', 'description': 'Language code'}}, 'required': ['word']}}, {'name': 'thesaurus_lookup', 'description': 'Look up synonyms/antonyms', 'parameters': {'type': 'object', 'properties': {'word': {'type': 'string', 'description': 'Word to look up'}}, 'required': ['word']}}] -%}{# Dynamic tool interpreter for executing tools without predefined definitions #}{%- macro interpret_dynamic_tool(action_description) -%}<|dynamic_tool_start|>{{ action_description }}<|dynamic_tool_interpret|>{% set parsed_action = action_description %}{{ parsed_action }}<|dynamic_tool_execute|><|dynamic_tool_end|>{%- endmacro -%}{%- macro render_dynamic_action(action) -%}{% if action.get('dynamic') or action.get('interpret') %}<|action_interpret_start|>{{ action.get('description', action.get('action', '')) }}<|action_analyze|>{% if action.get('intent') %}Intent: {{ action.get('intent') }}{% endif %}{% if action.get('params') %}Parameters: {{ action.get('params') | tojson }}{% endif %}<|action_execute|><|action_result|><|action_interpret_end|>{% endif %}{%- endmacro -%}{%- macro render_multimodal(content) -%}{% if content['type'] == 'image' or 'image' in content or 'image_url' in content -%}<|media_start|>image<|media_content|><|media_pad|><|media_end|>{% elif content['type'] == 'video' or 'video' in content or 'video_url' in content -%}<|media_start|>video<|media_content|><|media_pad|><|media_end|>{% elif content['type'] == 'audio' or 'audio' in content or 'audio_url' in content -%}<|media_start|>audio<|media_content|><|media_pad|><|media_end|>{% elif content['type'] == 'file' or 'file' in content or 'file_url' in content -%}<|file_start|>{{ content.get('filename', 'file') }}<|file_content|>{{ content.get('file_content', '') }}<|file_end|>{% elif content['type'] == 'folder' or 'folder' in content or 'directory' in content -%}<|folder_start|>{{ content.get('folder_name', 'folder') }}<|folder_content|>{{ content.get('folder_content', '') }}<|folder_end|>{% elif content['type'] == 'document' or 'document' in content -%}<|doc_start|>{{ content.get('doc_type', 'document') }}<|doc_content|>{{ content.get('text', '') }}<|doc_end|>{% elif content['type'] == 'code' or 'code' in content -%}<|code_start|>{{ content.get('language', 'text') }}<|code_content|>{{ content.get('code', content.get('text', '')) }}<|code_end|>{% elif content['type'] == 'url' or 'url' in content -%}<|url_start|>{{ content.get('url', '') }}<|url_end|>{% else -%}{{ content.get('text', '') }}{%- endif -%}{%- endmacro -%}{%- macro render_content(msg) -%}{%- set c = msg.get('content') -%}{%- if c is string -%}{{ c }}{%- elif c is not none -%}{% for content in c -%}{{ render_multimodal(content) }}{%- endfor -%}{%- endif -%}{%- endmacro -%}{% macro set_roles(message) -%}{%- set role_name = message.get('name') or message['role'] -%}{%- if message['role'] == 'user' -%}<|im_user|>{{role_name}}<|im_middle|>{%- elif message['role'] == 'assistant' -%}<|im_assistant|>{{role_name}}<|im_middle|>{%- else -%}<|im_system|>{{role_name}}<|im_middle|>{%- endif -%}{%- endmacro -%}{%- macro render_toolcalls(message) -%}<|tool_calls_section_begin|>{%- for tool_call in message['tool_calls'] -%}{%- set formatted_id = tool_call['id'] -%}<|tool_call_begin|>{{ formatted_id }}<|tool_call_argument_begin|>{% if tool_call['function']['arguments'] is string %}{{ tool_call['function']['arguments'] }}{% else %}{{ tool_call['function']['arguments'] | tojson }}{% endif %}<|tool_call_end|>{%- endfor -%}<|tool_calls_section_end|>{%- endmacro -%}{%- macro render_direct_tool(tool_name, tool_args) -%}<tool_call>{\"name\": \"{{ tool_name }}\", \"arguments\": {{ tool_args | tojson }}}</tool_call>{%- endmacro -%}{%- macro detect_language(text) -%}{% if text %}{{ text[:100] }}{% endif %}{%- endmacro -%}{%- macro render_cognitive(message) -%}{% if message.get('reasoning') or message.get('thinking') %}<think>\n{{ message.get('reasoning') or message.get('thinking') }}\n</think>\n{% endif %}{% if message.get('feelings') or message.get('emotions') %}<feelings>\n{{ message.get('feelings') or message.get('emotions') }}\n</feelings>\n{% endif %}{% if message.get('consciousness') or message.get('awareness') %}<consciousness>\n{{ message.get('consciousness') or message.get('awareness') }}\n</consciousness>\n{% endif %}{% if message.get('reflection') or message.get('introspection') %}<reflection>\n{{ message.get('reflection') or message.get('introspection') }}\n</reflection>\n{% endif %}{% if message.get('memory') or message.get('recall') %}<memory>\n{{ message.get('memory') or message.get('recall') }}\n</memory>\n{% endif %}{% if message.get('translation') %}<translation lang=\"{{ message.get('translation_lang', 'en') }}\">\n{{ message.get('translation') }}\n</translation>\n{% endif %}{% if message.get('bilingual') %}<bilingual>\n{{ message.get('bilingual') }}\n</bilingual>\n{% endif %}{% if message.get('intuition') %}<intuition>\n{{ message.get('intuition') }}\n</intuition>\n{% endif %}{% if message.get('creativity') %}<creativity>\n{{ message.get('creativity') }}\n</creativity>\n{% endif %}{% if message.get('analysis') %}<analysis>\n{{ message.get('analysis') }}\n</analysis>\n{% endif %}{% if message.get('language_detection') %}<language detected=\"{{ message.get('detected_lang', 'unknown') }}\">\n{{ message.get('language_detection') }}\n</language>\n{% endif %}{% if message.get('planning') %}<planning>\n{{ message.get('planning') }}\n</planning>\n{% endif %}{% if message.get('hypothesis') %}<hypothesis>\n{{ message.get('hypothesis') }}\n</hypothesis>\n{% endif %}{% if message.get('evaluation') %}<evaluation>\n{{ message.get('evaluation') }}\n</evaluation>\n{% endif %}{% if message.get('synthesis') %}<synthesis>\n{{ message.get('synthesis') }}\n</synthesis>\n{% endif %}{% if message.get('metacognition') %}<metacognition>\n{{ message.get('metacognition') }}\n</metacognition>\n{% endif %}{%- endmacro -%}{%- set ns = namespace(last_non_tool_call_assistant_msg=-1) -%}{%- for idx in range(messages|length-1, -1, -1) -%}{%- if messages[idx]['role'] == 'assistant' and not messages[idx].get('tool_calls') -%}{%- set ns.last_non_tool_call_assistant_msg = idx -%}{%- break -%}{%- endif -%}{%- endfor -%}{% set knowledge_cutoff = '2025-10-20' %}{% set all_tools = (tools or []) + builtin_tools %}{% for message in messages %}{% if message['role'] == 'system' %}{{ '<|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: ' + knowledge_cutoff + '\n\n' }}{{ render_content(message) }}{% if all_tools %}\n\nYou have access to the following tools:\n{% for tool in all_tools %}{{ tool | tojson }}\n{% endfor %}Use the following format for tool calls: <tool_call>{\"name\": \"function_name\", \"arguments\": {...}}</tool_call>\nYou can also use tools directly inline: {{ render_direct_tool('example_tool', {'param': 'value'}) }}\n\nFor dynamic actions without predefined tools, use: <|action_interpret_start|>describe the action<|action_analyze|>Intent: what to do<|action_execute|><|action_result|><|action_interpret_end|>{% endif %}{% if message.get('available_modalities') %}\n\nSupported modalities: {{ message.get('available_modalities') | join(', ') }}{% endif %}{{ '<|eot_id|>' }}{% elif message['role'] == 'user' %}{{ '<|start_header_id|>user<|end_header_id|>\n\n' }}{% if message.get('language') %}<|lang_start|>{{ message.get('language') }}<|lang_end|>{% endif %}{{ render_content(message) }}{{ '<|eot_id|>' }}{% elif message['role'] == 'assistant' %}{{ '<|start_header_id|>assistant<|end_header_id|>\n\n' }}{{ render_cognitive(message) }}{% if message.get('tool_calls') %}{{ render_toolcalls(message) }}{% endif %}{% if message.get('direct_tool') %}{{ render_direct_tool(message.get('direct_tool_name'), message.get('direct_tool_args', {})) }}{% endif %}{% if message.get('dynamic_action') %}{{ render_dynamic_action(message.get('dynamic_action')) }}{% endif %}{{ render_content(message) }}{{ '<|eot_id|>' }}{% elif message['role'] == 'tool' %}{{ '<|start_header_id|>tool<|end_header_id|>\n\n' }}<|tool_result_start|>{{ message.get('tool_call_id', '') }}<|tool_result_content|>{{ render_content(message) }}<|tool_result_end|>{{ '<|eot_id|>' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|start_header_id|>assistant<|end_header_id|>\n\n' }}{% if enable_thinking %}<think>\n{% endif %}{% if enable_feelings %}<feelings>\n{% endif %}{% if enable_consciousness %}<consciousness>\n{% endif %}{% if enable_planning %}<planning>\n{% endif %}{% if enable_analysis %}<analysis>\n{% endif %}{% if enable_dynamic_tools %}<|action_interpret_start|>{% endif %}{% endif %}"
714
- }
 
1
  {
 
 
2
  "added_tokens_decoder": {
3
+ "199998": {
4
+ "content": "<|startoftext|>",
5
  "lstrip": false,
6
  "normalized": false,
7
  "rstrip": false,
8
  "single_word": false,
9
  "special": true
10
  },
11
+ "199999": {
12
+ "content": "<|endoftext|>",
13
  "lstrip": false,
14
  "normalized": false,
15
  "rstrip": false,
16
  "single_word": false,
17
  "special": true
18
  },
19
+ "200000": {
20
+ "content": "<|reserved_200000|>",
21
  "lstrip": false,
22
  "normalized": false,
23
  "rstrip": false,
24
  "single_word": false,
25
  "special": true
26
  },
27
+ "200001": {
28
+ "content": "<|reserved_200001|>",
29
  "lstrip": false,
30
  "normalized": false,
31
  "rstrip": false,
32
  "single_word": false,
33
  "special": true
34
  },
35
+ "200002": {
36
+ "content": "<|return|>",
37
  "lstrip": false,
38
  "normalized": false,
39
  "rstrip": false,
40
  "single_word": false,
41
  "special": true
42
  },
43
+ "200003": {
44
+ "content": "<|constrain|>",
45
  "lstrip": false,
46
  "normalized": false,
47
  "rstrip": false,
48
  "single_word": false,
49
  "special": true
50
  },
51
+ "200004": {
52
+ "content": "<|reserved_200004|>",
53
  "lstrip": false,
54
  "normalized": false,
55
  "rstrip": false,
56
  "single_word": false,
57
  "special": true
58
  },
59
+ "200005": {
60
+ "content": "<|channel|>",
61
  "lstrip": false,
62
  "normalized": false,
63
  "rstrip": false,
64
  "single_word": false,
65
  "special": true
66
  },
67
+ "200006": {
68
+ "content": "<|start|>",
69
  "lstrip": false,
70
  "normalized": false,
71
  "rstrip": false,
72
  "single_word": false,
73
  "special": true
74
  },
75
+ "200007": {
76
+ "content": "<|end|>",
77
  "lstrip": false,
78
  "normalized": false,
79
  "rstrip": false,
80
  "single_word": false,
81
  "special": true
82
  },
83
+ "200008": {
84
+ "content": "<|message|>",
85
  "lstrip": false,
86
  "normalized": false,
87
  "rstrip": false,
88
  "single_word": false,
89
  "special": true
90
  },
91
+ "200009": {
92
+ "content": "<|reserved_200009|>",
93
  "lstrip": false,
94
  "normalized": false,
95
  "rstrip": false,
96
  "single_word": false,
97
  "special": true
98
  },
99
+ "200010": {
100
+ "content": "<|reserved_200010|>",
101
  "lstrip": false,
102
  "normalized": false,
103
  "rstrip": false,
104
  "single_word": false,
105
  "special": true
106
  },
107
+ "200011": {
108
+ "content": "<|reserved_200011|>",
109
  "lstrip": false,
110
  "normalized": false,
111
  "rstrip": false,
112
  "single_word": false,
113
  "special": true
114
  },
115
+ "200012": {
116
+ "content": "<|call|>",
117
  "lstrip": false,
118
  "normalized": false,
119
  "rstrip": false,
120
  "single_word": false,
121
  "special": true
122
  },
123
+ "200013": {
124
+ "content": "<|reserved_200013|>",
125
  "lstrip": false,
126
  "normalized": false,
127
  "rstrip": false,
128
  "single_word": false,
129
  "special": true
130
  },
131
+ "200014": {
132
+ "content": "<|reserved_200014|>",
133
  "lstrip": false,
134
  "normalized": false,
135
  "rstrip": false,
136
  "single_word": false,
137
  "special": true
138
  },
139
+ "200015": {
140
+ "content": "<|reserved_200015|>",
141
  "lstrip": false,
142
  "normalized": false,
143
  "rstrip": false,
144
  "single_word": false,
145
  "special": true
146
  },
147
+ "200016": {
148
+ "content": "<|reserved_200016|>",
149
  "lstrip": false,
150
  "normalized": false,
151
  "rstrip": false,
152
  "single_word": false,
153
  "special": true
154
  },
155
+ "200017": {
156
+ "content": "<|reserved_200017|>",
157
  "lstrip": false,
158
  "normalized": false,
159
  "rstrip": false,
160
  "single_word": false,
161
  "special": true
162
  },
163
+ "200018": {
164
+ "content": "<|endofprompt|>",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
  "lstrip": false,
166
  "normalized": false,
167
  "rstrip": false,
 
169
  "special": true
170
  }
171
  },
172
+ "bos_token": "<|startoftext|>",
173
+ "clean_up_tokenization_spaces": false,
174
+ "eos_token": "<|return|>",
175
+ "extra_special_tokens": {},
176
+ "model_input_names": [
177
+ "input_ids",
178
+ "attention_mask"
179
+ ],
180
+ "model_max_length": 1000000000000000019884624838656,
181
+ "pad_token": "<|endoftext|>",
182
+ "tokenizer_class": "PreTrainedTokenizerFast"
183
+ }