char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
636fc17a3
char/aliceai-t5-moe
1{%- macro render_content ( msg ) - %} 2{%- set c = msg . get ( 'content' ) - %} 3{%- if c is string -%} 4{{ c }} 5{%- elif c is not none -%} 6{% for content in c -%} 7{% if content [ 'type' ] == 'image' or 'image' in content or 'image_url' in content -%} 8 <|media_start|>image<|media_content|><|media_pad|><|media_end|> 9{% else -%} 10{{ content [ 'text' ] }} 11{%- endif -%} 12{%- endfor -%} 13{%- endif -%} 14{%- endmacro -%} 15 16{% macro set_roles ( message ) - %} 17{%- set role_name = message . get ( 'name' ) or message [ 'role' ] - %} 18{%- if message [ 'role' ] == 'user' -%} 19 <|im_user|>{{ role_name }} <|im_middle|> 20{%- elif message [ 'role' ] == 'assistant' -%} 21 <|im_assistant|>{{ role_name }} <|im_middle|> 22{%- else -%} 23 <|im_system|>{{ role_name }} <|im_middle|> 24{%- endif -%} 25{%- endmacro -%} 26 27{%- set tool_response_queue = namespace ( ids =[]) - %} 28{%- set tool_call_counter = namespace ( value = 0 ) - %} 29 30{%- macro render_toolcalls ( message ) - %} 31 <|tool_calls_section_begin|> 32{%- for tool_call in message [ 'tool_calls' ] - %} 33{%- set formatted_id = 'functions.' + tool_call [ 'function' ][ 'name' ] + ':' + ( tool_call_counter . value | string ) - %} 34{%- set tool_call_counter . value = tool_call_counter . value + 1 -%} 35{%- set _ = tool_response_queue . ids . append ( formatted_id ) - %} 36 <|tool_call_begin|>{{ formatted_id }} <|tool_call_argument_begin|>{% if tool_call [ 'function' ][ 'arguments' ] is string %} {{ tool_call [ 'function' ][ 'arguments' ] }} {% else %} {{ tool_call [ 'function' ][ 'arguments' ] | tojson }} {% endif %} <|tool_call_end|> 37{%- endfor -%} 38 <|tool_calls_section_end|> 39{%- endmacro -%} 40 41 42{# Find last non-tool-call assisitant message #} 43{%- set ns = namespace ( last_non_tool_call_assistant_msg =- 1 ) - %} 44{%- for idx in range ( messages | length-1 , - 1 , - 1 ) - %} 45{%- if messages [ idx ][ 'role' ] == 'assistant' and not messages [ idx ]. get ( 'tool_calls' ) - %} 46{%- set ns . last_non_tool_call_assistant_msg = idx -%} 47{%- endif -%} 48{%- endfor -%} 49 50{# split all messages into history & suffix, reasoning_content in suffix should be reserved.#} 51{%- set hist_msgs = messages [: ns . last_non_tool_call_assistant_msg+1 ] - %} 52{%- set suffix_msgs = messages [ ns . last_non_tool_call_assistant_msg+1 :] - %} 53 54{%- if tools -%} 55 <|im_system|>tool_declare<|im_middle|>{{ tools | tojson }} <|im_end|> 56{%- endif -%} 57 58{%- if messages | length == 0 or messages [ 0 ][ 'role' ] != 'system' -%} 59 <|im_system|>system<|im_middle|>You are Kimi, an AI assistant created by Moonshot AI.<|im_end|> 60{%- endif -%} 61 62{%- for message in hist_msgs -%} 63{{ set_roles ( message ) }} 64{%- if message [ 'role' ] == 'assistant' -%} 65 <think></think>{{ render_content ( message ) }} 66{%- if message . get ( 'tool_calls' ) - %} 67{{ render_toolcalls ( message ) }} 68{%- endif -%} 69{%- elif message [ 'role' ] == 'tool' -%} 70{%- if tool_response_queue . ids -%} 71{%- set tool_call_id = tool_response_queue . ids . pop ( 0 ) - %} 72{%- else -%} 73{%- set tool_call_id = 'functions.' + message . get ( 'name' , 'unknown' ) + ':' + ( tool_call_counter . value | string ) - %} 74{%- endif -%} 75 ## Return of{{ tool_call_id }} 76{{ render_content ( message ) }} 77{%- elif message [ 'content' ] is not none -%} 78{{ render_content ( message ) }} 79{%- endif -%} 80 <|im_end|> 81{%- endfor -%} 82 83{%- for message in suffix_msgs -%} 84{{ set_roles ( message ) }} 85{%- if message [ 'role' ] == 'assistant' -%} 86{%- set rc = message . get ( 'reasoning_content' , '' ) - %} 87 <think>{{ rc }} </think>{{ render_content ( message ) }} 88{%- if message . get ( 'tool_calls' ) - %} 89{{ render_toolcalls ( message ) }} 90{%- endif -%} 91{%- elif message [ 'role' ] == 'tool' -%} 92{%- if tool_response_queue . ids -%} 93{%- set tool_call_id = tool_response_queue . ids . pop ( 0 ) - %} 94{%- else -%} 95{%- set tool_call_id = 'functions.' + message . get ( 'name' , 'unknown' ) + ':' + ( tool_call_counter . value | string ) - %} 96{%- endif -%} 97 ## Return of{{ tool_call_id }} 98{{ render_content ( message ) }} 99{%- elif message [ 'content' ] is not none -%} 100{{ render_content ( message ) }} 101{%- endif -%} 102 <|im_end|> 103{%- endfor -%} 104 105 106{%- if add_generation_prompt -%} 107 <|im_assistant|>assistant<|im_middle|> 108{%- endif -%}