char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
e121edc43
char/aliceai-t5-moe
1{%- if tools %} 2{{ - '<|im_start|>system\n' }} 3{%- if messages [ 0 ]. role == 'system' %} 4{{ - messages [ 0 ]. content + '\n\n' }} 5{%- endif %} 6{{ - "# 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>" }} 7{%- for tool in tools %} 8{{ - "\n" }} 9{{ - tool | tojson }} 10{%- endfor %} 11{{ - "\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" }} 12{%- else %} 13{%- if messages [ 0 ]. role == 'system' %} 14{{ - '<|im_start|>system\n' + messages [ 0 ]. content + '<|im_end|>\n' }} 15{%- endif %} 16{%- endif %} 17{%- set ns = namespace ( multi_step_tool = true , last_query_index = messages | length - 1 ) %} 18{%- for message in messages [::- 1 ] %} 19{%- set index = ( messages | length - 1 ) - loop . index0 %} 20{%- if ns . multi_step_tool and message . role == "user" and not ( message . content . startswith ( '<tool_response>' ) and message . content . endswith ( '</tool_response>' )) %} 21{%- set ns . multi_step_tool = false %} 22{%- set ns . last_query_index = index %} 23{%- endif %} 24{%- endfor %} 25{%- for message in messages %} 26{%- if ( message . role == "user" ) or ( message . role == "system" and not loop . first ) %} 27{{ - '<|im_start|>' + message . role + '\n' + message . content + '<|im_end|>' + '\n' }} 28{%- elif message . role == "assistant" %} 29{%- set content = message . content %} 30{%- set reasoning_content = '' %} 31{%- if message . reasoning_content is defined and message . reasoning_content is not none %} 32{%- set reasoning_content = message . reasoning_content %} 33{%- else %} 34{%- if '</think>' in message . content %} 35{%- set content = message . content . split ( '</think>' )[- 1 ]. lstrip ( '\n' ) %} 36{%- set reasoning_content = message . content . split ( '</think>' )[ 0 ]. rstrip ( '\n' ). split ( '<think>' )[- 1 ]. lstrip ( '\n' ) %} 37{%- endif %} 38{%- endif %} 39{%- if loop . index0 > ns . last_query_index %} 40{%- if loop . last or ( not loop . last and reasoning_content ) %} 41{{ - '<|im_start|>' + message . role + '\n<think>\n' + reasoning_content . strip ( '\n' ) + '\n</think>\n\n' + content . lstrip ( '\n' ) }} 42{%- else %} 43{{ - '<|im_start|>' + message . role + '\n' + content }} 44{%- endif %} 45{%- else %} 46{{ - '<|im_start|>' + message . role + '\n' + content }} 47{%- endif %} 48{%- if message . tool_calls %} 49{%- for tool_call in message . tool_calls %} 50{%- if ( loop . first and content ) or ( not loop . first ) %} 51{{ - '\n' }} 52{%- endif %} 53{%- if tool_call . function %} 54{%- set tool_call = tool_call . function %} 55{%- endif %} 56{{ - '<tool_call>\n{" name ": "' }} 57{{- tool_call.name }} 58{{- '", " arguments ": ' }} 59{%- if tool_call . arguments is string %} 60{{ - tool_call . arguments }} 61{%- else %} 62{{ - tool_call . arguments | tojson }} 63{%- endif %} 64{{ - '}\n</tool_call>' }} 65{%- endfor %} 66{%- endif %} 67{{ - '<|im_end|>\n' }} 68{%- elif message . role == "tool" %} 69{%- if loop . first or ( messages [ loop . index0 - 1 ]. role != "tool" ) %} 70{{ - '<|im_start|>user' }} 71{%- endif %} 72{{ - '\n<tool_response>\n' }} 73{{ - message . content }} 74{{ - '\n</tool_response>' }} 75{%- if loop . last or ( messages [ loop . index0 + 1 ]. role != "tool" ) %} 76{{ - '<|im_end|>\n' }} 77{%- endif %} 78{%- endif %} 79{%- endfor %} 80{%- if add_generation_prompt %} 81{{ - '<|im_start|>assistant\n' }} 82{%- if enable_thinking is defined and enable_thinking is false %} 83{{ - '<think>\n\n</think>\n\n' }} 84{%- endif %} 85{%- endif %}