Text Generation
Safetensors
English
qwen3
creative
creative writing
fiction writing
plot generation
sub-plot generation
story generation
scene continue
storytelling
fiction story
story
writing
fiction
roleplaying
swearing
extreme swearing
rp
graphic horror
horror
nsfw
Not-For-All-Audiences
finetune
programming
code generation
code
coding
coder
chat
brainstorm
qwen
qwencoder
brainstorm 20x
all uses cases
Jan-V1
science fiction
fantasy
thinking
reasoning
unsloth
conversational
{%- if tools %} | |
{{- '<|im_start|>system\n' }} | |
{%- if messages[0].role == 'system' %} | |
{{- messages[0].content + '\n\n' }} | |
{%- endif %} | |
{{- "In this environment you have access to a set of tools you can use to answer the user's question. You can use one tool per message, and will receive the result of that tool use in the user's response. You use tools step-by-step to accomplish a given task, with each tool use informed by the result of the previous tool use.\n\nTool Use Rules\nHere are the rules you should always follow to solve your task:\n1. Always use the right arguments for the tools. Never use variable names as the action arguments, use the value instead.\n2. Call a tool only when needed: do not call the search agent if you do not need information, try to solve the task yourself.\n3. If no tool call is needed, just answer the question directly.\n4. Never re-do a tool call that you previously did with the exact same parameters.\n5. For tool use, MARK SURE use XML tag format as shown in the examples above. Do not use any other format.\nNow Begin! If you solve the task correctly, you will receive a reward of $1,000,000.\n\n" }} | |
{{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }} | |
{%- for tool in tools %} | |
{{- "\n" }} | |
{{- tool | tojson }} | |
{%- endfor %} | |
{{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }} | |
{%- else %} | |
{%- if messages[0].role == 'system' %} | |
{{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }} | |
{%- endif %} | |
{%- endif %} | |
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %} | |
{%- for message in messages[::-1] %} | |
{%- set index = (messages|length - 1) - loop.index0 %} | |
{%- if ns.multi_step_tool and message.role == "user" and message.content is string and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %} | |
{%- set ns.multi_step_tool = false %} | |
{%- set ns.last_query_index = index %} | |
{%- endif %} | |
{%- endfor %} | |
{%- for message in messages %} | |
{%- if message.content is string %} | |
{%- set content = message.content %} | |
{%- else %} | |
{%- set content = '' %} | |
{%- endif %} | |
{%- if (message.role == "user") or (message.role == "system" and not loop.first) %} | |
{{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }} | |
{%- elif message.role == "assistant" %} | |
{%- set reasoning_content = '' %} | |
{%- if message.reasoning_content is string %} | |
{%- set reasoning_content = message.reasoning_content %} | |
{%- else %} | |
{%- if '</think>' in content %} | |
{%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %} | |
{%- set content = content.split('</think>')[-1].lstrip('\n') %} | |
{%- endif %} | |
{%- endif %} | |
{%- if loop.index0 > ns.last_query_index %} | |
{%- if loop.last or (not loop.last and reasoning_content) %} | |
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }} | |
{%- else %} | |
{{- '<|im_start|>' + message.role + '\n' + content }} | |
{%- endif %} | |
{%- else %} | |
{{- '<|im_start|>' + message.role + '\n' + content }} | |
{%- endif %} | |
{%- if message.tool_calls %} | |
{%- for tool_call in message.tool_calls %} | |
{%- if (loop.first and content) or (not loop.first) %} | |
{{- '\n' }} | |
{%- endif %} | |
{%- if tool_call.function %} | |
{%- set tool_call = tool_call.function %} | |
{%- endif %} | |
{{- '<tool_call>\n{"name": "' }} | |
{{- tool_call.name }} | |
{{- '", "arguments": ' }} | |
{%- if tool_call.arguments is string %} | |
{{- tool_call.arguments }} | |
{%- else %} | |
{{- tool_call.arguments | tojson }} | |
{%- endif %} | |
{{- '}\n</tool_call>' }} | |
{%- endfor %} | |
{%- endif %} | |
{{- '<|im_end|>\n' }} | |
{%- elif message.role == "tool" %} | |
{%- if loop.first or (messages[loop.index0 - 1].role != "tool") %} | |
{{- '<|im_start|>user' }} | |
{%- endif %} | |
{{- '\n<tool_response>\n' }} | |
{{- content }} | |
{{- '\n</tool_response>' }} | |
{%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} | |
{{- '<|im_end|>\n' }} | |
{%- endif %} | |
{%- endif %} | |
{%- endfor %} | |
{%- if add_generation_prompt %} | |
{{- '<|im_start|>assistant\n' }} | |
{%- endif %} |