char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
b2426e469
char/aliceai-t5-moe
1{%- set ns = namespace ( enable_thinking = true ) - %} 2{%- for message in messages -%} 3{%- set content = message [ 'content' ] - %} 4{%- if message [ 'role' ] == 'user' or message [ 'role' ] == 'system' -%} 5{%- if '/think' in content -%} 6{%- set ns . enable_thinking = true -%} 7{%- elif '/no_think' in content -%} 8{%- set ns . enable_thinking = false -%} 9{%- endif -%} 10{%- endif -%} 11{%- endfor -%} 12 13{%- if messages [ 0 ][ 'role' ] != 'system' -%} 14{%- set ns . non_tool_system_content = '' -%} 15{{ - '<SPECIAL_10>System 16' - }} 17{%- else -%} 18{%- set ns . non_tool_system_content = ( messages [ 0 ][ 'content' ] | default ( '' , true )). replace ( '/think' , '' ). replace ( '/no_think' , '' ). strip () - %} 19{{ - '<SPECIAL_10>System 20' + ns . non_tool_system_content }} 21{%- endif -%} 22 23{%- if tools -%} 24{%- if ns . non_tool_system_content is defined and ns . non_tool_system_content != '' -%} 25{{ - ' 26 27' - }} 28{%- endif -%} 29{{ - 'You can use the following tools to assist the user if required:' - }} 30{{ - ' 31<AVAILABLE_TOOLS>[' - }} 32{%- for tool in tools -%} 33{{ - ( tool . function if tool . function is defined else tool ) | tojson - }} 34{{ - ', ' if not loop . last else '' - }} 35{%- endfor -%} 36{{ - ']</AVAILABLE_TOOLS> 37 38' - }} 39{{ - 'If you decide to call any tool(s), use the following format: 40' - }} 41{{ - '<TOOLCALL>[{{" name ": " tool_name1 ", " arguments ": " tool_args1 "}}, ' - }} 42{{ - '{{" name ": " tool_name2 ", " arguments ": " tool_args2 "}}]</TOOLCALL> 43 44' - }} 45{{ - 'The user will execute tool-calls and return responses from tool(s) in this format: 46' - }} 47{{ - '<TOOL_RESPONSE>[{{" tool_response1 "}}, {{" tool_response2 "}}]</TOOL_RESPONSE> 48 49' - }} 50{{ - 'Based 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.' - }} 51{%- endif -%} 52{{ - ' 53 54' - }} 55{%- set messages = messages [ 1 :] if messages [ 0 ][ 'role' ] == 'system' else messages -%} 56{%- if messages [- 1 ][ 'role' ] == 'assistant' -%} 57{%- set ns . last_turn_assistant_content = ( messages [- 1 ][ 'content' ] | default ( '' , true )). strip () - %} 58{%- set ns . last_turn_assistant_tool_calls = messages [- 1 ][ 'tool_calls' ] if 'tool_calls' in messages [- 1 ] else [] - %} 59{%- set messages = messages [:- 1 ] - %} 60{%- endif -%} 61 62{%- for message in messages %} 63{%- set content = message [ 'content' ] %} 64{%- if message [ 'role' ] == 'user' -%} 65{{ - '<SPECIAL_11>User 66' + ( content | default ( '' , true )). replace ( '/think' , '' ). replace ( '/no_think' , '' ). strip () + ' 67' }} 68{%- elif message [ 'role' ] == 'tool' -%} 69{%- if loop . first or ( messages [ loop . index0 - 1 ]. role != 'tool' ) - %} 70{{ - '<SPECIAL_11>User 71' + '<TOOL_RESPONSE>[' }} 72{%- endif -%} 73{{ - message [ 'content' ] - }} 74{{ - ', ' if not loop . last and ( messages [ loop . index0 + 1 ]. role == 'tool' ) else '' - }} 75{%- if loop . last or ( messages [ loop . index0 + 1 ]. role != 'tool' ) - %} 76{{ - ']</TOOL_RESPONSE>' - }} 77{%- endif -%} 78{%- elif message [ 'role' ] == 'assistant' -%} 79{%- if content and '</think>' in content -%} 80{%- set content = ( content . split ( '</think>' )[ 1 ] | default ( '' , true )). strip () %} 81{%- endif -%} 82{{ - '<SPECIAL_11>Assistant 83' + (( content | default ( '' , true )). strip () if content is not none else '' ) }} 84{%- if message . tool_calls -%} 85{%- if ( content | default ( '' , true )). strip () != '' -%} 86{{ - ' 87' - }} 88{%- endif -%} 89{{ - '<TOOLCALL>[' - }} 90{%- for call in message . tool_calls -%} 91{%- set fn = call . function if call . function is defined else call -%} 92{{ - '{" name ": "' + fn.name + '", " arguments ": ' - }} 93{%- if fn . arguments is string -%} 94{{ - fn . arguments - }} 95{%- else -%} 96{{ - fn . arguments | tojson - }} 97{%- endif -%} 98{{ - '}' + ( ', ' if not loop . last else '' ) - }} 99{%- endfor -%} 100{{ - ']</TOOLCALL>' - }} 101{%- endif -%} 102{{ - ' 103<SPECIAL_12> 104' - }} 105{%- endif -%} 106{%- endfor -%} 107 108{%- if add_generation_prompt -%} 109{{ - '<SPECIAL_11>Assistant 110' - }} 111{%- if ns . enable_thinking is defined and ns . enable_thinking is false -%} 112{{ - '<think></think>' - }} 113{%- else -%} 114{{ - '<think> 115' - }} 116{%- endif -%} 117{%- if ns . last_turn_assistant_content is defined and ns . last_turn_assistant_content != '' -%} 118{{ - ns . last_turn_assistant_content - }} 119{%- endif -%} 120{%- else -%} 121{%- if ns . last_turn_assistant_content is defined and ns . last_turn_assistant_content != '' -%} 122{{ - '<SPECIAL_11>Assistant 123' - }} 124{%- if ns . enable_thinking is defined and ns . enable_thinking is false -%} 125{{ - '<think></think>' - }} 126{%- else -%} 127{{ - '<think> 128' - }} 129{%- endif -%} 130{{ - ns . last_turn_assistant_content - }} 131{%- if continue_final_message is defined -%} 132{%- if continue_final_message is false -%} 133{{ - ' 134<SPECIAL_12> 135' - }} 136{%- endif -%} 137{%- else -%} 138{{ - ' 139<SPECIAL_12> 140' - }} 141{%- endif -%} 142{%- endif -%} 143{%- if ns . last_turn_assistant_tool_calls is defined and ns . last_turn_assistant_tool_calls | length > 0 -%} 144{{ - '<SPECIAL_11>Assistant 145' - }} 146{{ - '<TOOLCALL>[' - }} 147{%- for call in ns . last_turn_assistant_tool_calls -%} 148{%- set fn = call . function if call . function is defined else call -%} 149{{ - '{" name ": "' + fn.name + '", " arguments ": ' - }} 150{%- if fn . arguments is string -%} 151{{ - fn . arguments - }} 152{%- else -%} 153{{ - fn . arguments | tojson - }} 154{%- endif -%} 155{{ - '}' + ( ', ' if not loop . last else '' ) - }} 156{%- endfor -%} 157{{ - ']</TOOLCALL>' - }} 158{{ - '<SPECIAL_12> 159 160' - }} 161{%- endif -%} 162{%- endif -%}