Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {#- Nemotron 3.5 Bolt 74B (DavidAU) - fixed template for Atomic Chat.
- Native ChatML format + <think> reasoning.
- Atomic sends chat_template_kwargs:
- Thinking ON : {"reasoning_effort": "low"|"medium"|"high"}
- Thinking OFF: {"enable_thinking": false, "reasoning_effort": "off"}
- Never raises for any effort value ("high" is mapped to the model's "xhigh" mode). -#}
- {%- macro render_extra_keys(json_dict, handled_keys) %}
- {%- if json_dict is mapping %}
- {%- for json_key in json_dict if json_key not in handled_keys %}
- {%- if json_dict[json_key] is mapping or (json_dict[json_key] is sequence and json_dict[json_key] is not string) %}
- {{- '\n<' ~ json_key ~ '>' ~ (json_dict[json_key] | tojson | safe) ~ '</' ~ json_key ~ '>' }}
- {%- else %}
- {{- '\n<' ~ json_key ~ '>' ~ (json_dict[json_key] | string) ~ '</' ~ json_key ~ '>' }}
- {%- endif %}
- {%- endfor %}
- {%- endif %}
- {% endmacro %}
- {%- macro render_content(content) -%}
- {%- if content is none -%}
- {{- '' -}}
- {%- elif content is string -%}
- {{- content | string -}}
- {%- else -%}
- {%- set text_ns = namespace(val='') -%}
- {%- set counters = namespace(images=0, videos=0) -%}
- {%- for part in content -%}
- {%- if part['type'] == 'image' or part['type'] == 'image_url' or part['type'] == 'input_image' -%}
- {%- set counters.images = counters.images + 1 -%}
- {%- elif part['type'] == 'video' or part['type'] == 'video_url' or part['type'] == 'input_video' -%}
- {%- set counters.videos = counters.videos + 1 -%}
- {%- elif part['type'] == 'text' or part['type'] == 'input_text' -%}
- {%- set text_ns.val = text_ns.val + (part['text'] | default('', true)) -%}
- {%- endif -%}
- {%- endfor -%}
- {%- if '<image>' in text_ns.val -%}
- {%- set counters.images = 0 -%}
- {%- endif -%}
- {%- if '<video>' in text_ns.val -%}
- {%- set counters.videos = 0 -%}
- {%- endif -%}
- {%- set content_ns = namespace(val='') -%}
- {%- set render_ns = namespace(image_index=0) -%}
- {%- for part in content -%}
- {%- if part['type'] == 'image' or part['type'] == 'image_url' or part['type'] == 'input_image' -%}
- {%- set render_ns.image_index = render_ns.image_index + 1 -%}
- {%- if counters.images > 0 -%}
- {%- if counters.images > 1 -%}
- {%- set content_ns.val = content_ns.val + '<image ' + render_ns.image_index|string + '><image>' -%}
- {%- else -%}
- {%- set content_ns.val = content_ns.val + '<image>' -%}
- {%- endif -%}
- {%- endif -%}
- {%- elif part['type'] == 'video' or part['type'] == 'video_url' or part['type'] == 'input_video' -%}
- {%- if counters.videos > 0 -%}
- {%- set content_ns.val = content_ns.val + '<video>' -%}
- {%- endif -%}
- {%- elif part['type'] == 'text' or part['type'] == 'input_text' -%}
- {%- set content_ns.val = content_ns.val + (part['text'] | default('', true)) -%}
- {%- endif -%}
- {%- endfor -%}
- {{- content_ns.val -}}
- {%- endif -%}
- {%- endmacro -%}
- {%- set DAU_xhigh = 'Reasoning effort is set to xhigh. Please think carefully through the task, validate key assumptions, consider plausible alternatives, and prioritize correctness, consistency, and clarity in the final answer.' -%}
- {%- set DAU_low = 'Reasoning effort is set to low. Keep your thinking brief and focused, moving directly to the conclusion without unnecessary elaboration.' -%}
- {%- set enable_thinking = enable_thinking if enable_thinking is defined else true -%}
- {%- if enable_thinking is string and enable_thinking | lower == 'false' -%}
- {%- set enable_thinking = false -%}
- {%- endif -%}
- {%- set eff = reasoning_effort | default('', true) | string | lower | trim -%}
- {%- set resolved = eff -%}
- {%- if resolved == '' -%}
- {%- if enable_thinking -%}
- {%- set resolved = 'off' -%}
- {%- else -%}
- {%- set resolved = 'medium' -%}
- {%- endif -%}
- {%- endif -%}
- {%- set reasoning_instructions = '' -%}
- {%- set medium_effort = false -%}
- {%- if resolved == 'low' -%}
- {%- set reasoning_instructions = DAU_low -%}
- {%- elif resolved == 'medium' -%}
- {%- set medium_effort = true -%}
- {%- elif resolved == 'high' or resolved == 'xhigh' or resolved == 'max' -%}
- {%- set reasoning_instructions = DAU_xhigh -%}
- {%- elif resolved == 'off' -%}
- {#- "off": no extra instruction, same as the model's native template -#}
- {%- elif reasoning_effort not in ['off', 'low', 'medium', 'high'] -%}
- {#- any other effort value: thinking stays enabled, no instruction, never raise -#}
- {%- endif -%}
- {%- if messages[0].role == 'system' -%}
- {%- set system_message = render_content(messages[0].content | default('', true)) -%}
- {%- set loop_messages = messages[1:] -%}
- {%- else -%}
- {%- set system_message = '' -%}
- {%- set loop_messages = messages -%}
- {%- endif -%}
- {%- if reasoning_instructions -%}
- {%- set system_message = (reasoning_instructions + ('\n' if system_message | trim | length > 0 else '') + (system_message | trim)) -%}
- {%- endif -%}
- {%- if not tools is defined -%}
- {%- set tools = [] -%}
- {%- endif -%}
- {%- set truncate_history_thinking = truncate_history_thinking if truncate_history_thinking is defined else true -%}
- {%- set ns = namespace(last_user_idx = -1) -%}
- {%- for m in loop_messages -%}
- {%- if m['role'] == 'user' -%}
- {%- set ns.last_user_idx = loop.index0 -%}
- {%- endif -%}
- {%- endfor -%}
- {{- '<|im_start|>system\n' + system_message }}
- {%- if tools is iterable and tools | length > 0 -%}
- {%- if system_message | length > 0 -%}
- {{- '\n\n' }}
- {%- endif -%}
- {{- '# Tools\n\nYou have access to the following functions:\n\n' }}
- {{- '<tools>' }}
- {%- for tool in tools -%}
- {%- if tool.function is defined -%}
- {%- set tool = tool.function -%}
- {%- endif -%}
- {{- '\n<function>\n<name>' ~ tool.name ~ '</name>' }}
- {%- if tool.description is defined -%}
- {{- '\n<description>' ~ (tool.description | trim) ~ '</description>' }}
- {%- endif -%}
- {{- '\n<parameters>' }}
- {%- if tool.parameters is defined and tool.parameters is mapping and tool.parameters.properties is defined and tool.parameters.properties is mapping -%}
- {%- for param_name, param_fields in tool.parameters.properties | items -%}
- {{- '\n<parameter>' }}
- {{- '\n<name>' ~ param_name ~ '</name>' }}
- {%- if param_fields.type is defined -%}
- {{- '\n<type>' ~ (param_fields.type | string) ~ '</type>' }}
- {%- endif -%}
- {%- if param_fields.description is defined -%}
- {{- '\n<description>' ~ (param_fields.description | trim) ~ '</description>' }}
- {%- endif -%}
- {%- if param_fields.enum is defined -%}
- {{- '\n<enum>' ~ (param_fields.enum | tojson | safe) ~ '</enum>' }}
- {%- endif -%}
- {%- set handled_keys = ['name', 'type', 'description', 'enum'] -%}
- {{- render_extra_keys(param_fields, handled_keys) }}
- {{- '\n</parameter>' }}
- {%- endfor -%}
- {%- endif -%}
- {%- set handled_keys = ['type', 'properties', 'required'] -%}
- {{- render_extra_keys(tool.parameters, handled_keys) }}
- {%- if tool.parameters is defined and tool.parameters.required is defined -%}
- {{- '\n<required>' ~ (tool.parameters.required | tojson | safe) ~ '</required>' }}
- {%- endif -%}
- {{- '\n</parameters>' }}
- {%- set handled_keys = ['type', 'name', 'description', 'parameters'] -%}
- {{- render_extra_keys(tool, handled_keys) }}
- {{- '\n</function>' }}
- {%- endfor -%}
- {{- '\n</tools>' }}
- {{- '\n\nIf you choose to call a function ONLY reply in the following format with NO suffix:\n\n<tool_call>\n<function=example_function_name>\n<parameter=example_parameter_1>\nvalue_1\n</parameter>\n<parameter=example_parameter_2>\nThis is the value for the second parameter\nthat can span\nmultiple lines\n</parameter>\n</function>\n</tool_call>\n\n<IMPORTANT>\nReminder:\n- Function calls MUST follow the specified format: an inner <function=...></function> block must be nested within <tool_call></tool_call> XML tags\n- Required parameters MUST be specified\n- You may provide optional reasoning for your function call in natural language BEFORE the function call, but NOT after\n- If there is no function call available, answer the question like normal with your current knowledge and do not tell the user about function calls\n</IMPORTANT>' }}
- {%- endif -%}
- {{- '<|im_end|>\n' }}
- {%- for message in loop_messages -%}
- {%- set content = render_content(message.content | default('', true)) -%}
- {%- if message.role == 'assistant' -%}
- {%- if message.reasoning_content is defined and message.reasoning_content is string and message.reasoning_content | trim | length > 0 -%}
- {%- set content = '<think>\n' ~ message.reasoning_content ~ '</think>' ~ content -%}
- {%- else -%}
- {%- if content is string -%}
- {%- if '<think>' not in content and '</think>' not in content -%}
- {%- set content = '<think></think>' ~ content -%}
- {%- endif -%}
- {%- endif -%}
- {%- endif -%}
- {%- if message.tool_calls is defined and message.tool_calls is iterable and message.tool_calls | length > 0 -%}
- {{- '<|im_start|>assistant\n' }}
- {%- set include_content = not (truncate_history_thinking and loop.index0 < ns.last_user_idx) -%}
- {%- if content is string and content | trim | length > 0 -%}
- {%- if include_content -%}
- {{- (content | trim) ~ '\n' -}}
- {%- else -%}
- {%- set c = (content | string) -%}
- {%- if '</think>' in c -%}
- {%- set c = c.split('</think>')[-1] -%}
- {%- elif '<think>' in c -%}
- {%- set c = c.split('<think>')[0] -%}
- {%- endif -%}
- {%- set c = '<think></think>' ~ c -%}
- {%- if c | length > 0 -%}
- {{- c ~ '\n' -}}
- {%- endif -%}
- {%- endif -%}
- {%- else -%}
- {{- '<think></think>' -}}
- {%- endif -%}
- {%- for tool_call in message.tool_calls -%}
- {%- if tool_call.function is defined -%}
- {%- set tool_call = tool_call.function -%}
- {%- endif -%}
- {{- '<tool_call>\n<function=' ~ tool_call.name ~ '>\n' -}}
- {%- if tool_call.arguments is defined -%}
- {%- for args_name, args_value in tool_call.arguments | items -%}
- {{- '<parameter=' ~ args_name ~ '>\n' -}}
- {%- set args_value = args_value | tojson | safe if args_value is mapping or (args_value is sequence and args_value is not string) else args_value | string -%}
- {{- args_value ~ '\n</parameter>\n' -}}
- {%- endfor -%}
- {%- endif -%}
- {{- '</function>\n</tool_call>\n' -}}
- {%- endfor -%}
- {{- '<|im_end|>\n' }}
- {%- else -%}
- {%- if not (truncate_history_thinking and loop.index0 < ns.last_user_idx) -%}
- {{- '<|im_start|>assistant\n' ~ (content | default('', true) | string | trim) ~ '<|im_end|>\n' }}
- {%- else -%}
- {%- set c = (content | default('', true) | string) -%}
- {%- if '<think>' in c and '</think>' in c -%}
- {%- set c = '<think></think>' ~ c.split('</think>')[-1] -%}
- {%- endif -%}
- {%- set c = c | trim -%}
- {%- if c | length > 0 -%}
- {{- '<|im_start|>assistant\n' ~ c ~ '<|im_end|>\n' }}
- {%- else -%}
- {{- '<|im_start|>assistant\n<|im_end|>\n' }}
- {%- endif -%}
- {%- endif -%}
- {%- endif -%}
- {%- elif message.role == 'user' or message.role == 'system' -%}
- {{- '<|im_start|>' + message.role + '\n' }}
- {%- if message.role == 'user' and loop.index0 == ns.last_user_idx and medium_effort -%}
- {{- content + '\n\n{reasoning effort: efficient}' }}
- {%- else -%}
- {{- content }}
- {%- endif -%}
- {{- '<|im_end|>\n' }}
- {%- elif message.role == 'tool' -%}
- {%- if loop.previtem and loop.previtem.role != 'tool' -%}
- {{- '<|im_start|>user\n' }}
- {%- endif -%}
- {{- '<tool_response>\n' }}
- {{- content }}
- {{- '\n</tool_response>\n' }}
- {%- if not loop.last and loop.nextitem.role != 'tool' -%}
- {{- '<|im_end|>\n' }}
- {%- elif loop.last -%}
- {{- '<|im_end|>\n' }}
- {%- endif -%}
- {%- else -%}
- {{- '<|im_start|>' ~ message.role ~ '\n' ~ content ~ '<|im_end|>\n' }}
- {%- endif -%}
- {%- endfor -%}
- {%- if add_generation_prompt -%}
- {%- if enable_thinking -%}
- {{- '<|im_start|>assistant\n<think>\n' }}
- {%- else -%}
- {{- '<|im_start|>assistant\n<think></think>' }}
- {%- endif -%}
- {%- endif -%}
Advertisement
Add Comment
Please, Sign In to add comment