File size: 5,472 Bytes
493df70 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
{%- set ns = namespace(enable_thinking=true) -%}
{%- for message in messages -%}
{%- if message['content'] is string -%}
{%- if message['role'] == 'user' or message['role'] == 'system' -%}
{%- if '/think' in message['content'] -%}
{%- set ns.enable_thinking = true -%}
{%- elif '/no_think' in message['content'] -%}
{%- set ns.enable_thinking = false -%}
{%- endif -%}
{%- endif -%}
{%- else -%}
{%- for content in message['content'] -%}
{%- if content['type'] == 'text' -%}
{%- if message['role'] == 'user' or message['role'] == 'system' -%}
{%- if '/think' in content['text'] -%}
{%- set ns.enable_thinking = true -%}
{%- elif '/no_think' in content['text'] -%}
{%- set ns.enable_thinking = false -%}
{%- endif -%}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- endfor -%}
{%- for message in messages -%}
{%- if loop.first -%}
{%- if message['role'] != 'system' -%}
{{- '<SPECIAL_10>System\n\n' }}
{%- endif -%}
{%- endif -%}
{%- if message['role'] == 'system' -%}
{{- '<SPECIAL_10>System\n' }}
{%- if message['content'] is string -%}
{{- message['content'].replace('/think', '').replace('/no_think', '').strip() }}
{%- else -%}
{%- for content in message['content'] -%}
{%- if content['type'] == 'image' -%}
{{- '' }}
{%- elif content['type'] == 'text' -%}
{{- content['text'].replace('/think', '').replace('/no_think', '').strip() }}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{%- if tools -%}
{%- if message['content'].replace('/think', '').replace('/no_think', '').strip() != '' -%}
{{- '\n\n' }}
{%- endif -%}
{{- 'You can use the following tools to assist the user if required:\n<AVAILABLE_TOOLS>[' }}
{%- for tool in tools -%}
{{- (tool.function if tool.function is defined else tool) | tojson -}}
{{- ', ' if not loop.last else '' -}}
{%- endfor -%}
{{- ']</AVAILABLE_TOOLS>\n\nIf you decide to call any tool(s), use the following format:\n<TOOLCALL>[{{\"name\": \"tool_name1\", \"arguments\": "\tool_args1\"}}, {{\"name\": \"tool_name2\", \"arguments\": \"tool_args2\"}}]</TOOLCALL>\n\nThe user will execute tool-calls and return responses from tool(s) in this format:\n<TOOL_RESPONSE>[{{\"tool_response1\"}}, {{\"tool_response2\"}}]</TOOL_RESPONSE>\n\nBased on the tool responses, you can call additional tools if needed, correct tool calls if any errors are found, or just respond to the user.' -}}
{%- endif -%}
{{- '\n' -}}
{%- elif message['role'] == 'user' -%}
{{- '<SPECIAL_11>User\n' }}
{%- if message['content'] is string -%}
{{- message['content'].replace('/think', '').replace('/no_think', '').strip() }}
{%- else -%}
{%- for content in message['content'] -%}
{%- if content['type'] == 'image' -%}
{{- '' }}
{%- elif content['type'] == 'text' -%}
{{- content['text'].replace('/think', '').replace('/no_think', '').strip() }}
{%- endif -%}
{%- endfor -%}
{%- endif -%}
{{- '\n' -}}
{%- elif message['role'] == 'tool' -%}
{%- if loop.first or (messages[loop.index0 - 1].role != 'tool') -%}
{{- '<SPECIAL_11>User\n<TOOL_RESPONSE>[' }}
{%- endif -%}
{{- message.content }}
{{- ', ' if not loop.last and (messages[loop.index0 + 1].role == 'tool') else '' -}}
{%- if loop.last or (messages[loop.index0 + 1].role != 'tool') -%}
{{- ']</TOOL_RESPONSE>\n' -}}
{%- endif -%}
{%- elif message['role'] == 'assistant' -%}
{%- if '</think>' in content -%}
{%- set content = content.split('</think>')[1].strip() -%}
{%- endif -%}
{{- '<SPECIAL_11>Assistant\n' + content.strip() }}
{%- if message.tool_calls -%}
{%- if content.strip() != '' -%}
{{- '\n\n' -}}
{%- endif -%}
{{- '<TOOLCALL>[' -}}
{%- for call in message.tool_calls -%}
{%- set fn = call.function if call.function is defined else call -%}
{{- '{"name": "' + fn.name + '", "arguments": ' -}}
{%- if fn.arguments is string -%}
{{- fn.arguments -}}
{%- else -%}
{{- fn.arguments | tojson -}}
{%- endif -%}
{{- '}' + (', ' if not loop.last else '') -}}
{%- endfor -%}
{{- ']</TOOLCALL>' -}}
{%- endif -%}
{{- '\n<SPECIAL_12>\n' -}}
{%- endif -%}
{%- endfor -%}
{%- if not add_generation_prompt is defined -%}
{%- set add_generation_prompt = false -%}
{%- endif -%}
{%- if add_generation_prompt -%}
{{- '<SPECIAL_11>Assistant\n' }}
{%- if ns.enable_thinking is defined and ns.enable_thinking is false -%}
{{- '<think></think>' }}
{%- else -%}
{{- '<think>\n' }}
{%- endif -%}
{%- endif -%} |