char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
98d5e8ba8
char/aliceai-t5-moe
1{{ - bos_token - }} 2{%- set preserve_thinking = preserve_thinking | default ( false ) - %} 3 4{%- macro format_arg_value ( arg_value ) - %} 5{%- if arg_value is string -%} 6{{ - "'" + arg_value + "'" - }} 7{%- elif arg_value is mapping -%} 8{{ - arg_value | tojson - }} 9{%- else -%} 10{{ - arg_value | string - }} 11{%- endif -%} 12{%- endmacro -%} 13 14{%- macro parse_content ( content ) - %} 15{%- if content is string -%} 16{{ - content - }} 17{%- else -%} 18{%- set _ns = namespace ( result = "" ) - %} 19{%- for item in content -%} 20{%- if item [ "type" ] == "image" -%} 21{%- set _ns . result = _ns . result + "<image>" -%} 22{%- elif item [ "type" ] == "text" -%} 23{%- set _ns . result = _ns . result + item [ "text" ] - %} 24{%- else -%} 25{%- set _ns . result = _ns . result + item | tojson -%} 26{%- endif -%} 27{%- endfor -%} 28{{ - _ns . result - }} 29{%- endif -%} 30{%- endmacro -%} 31 32{%- macro render_tool_calls ( tool_calls ) - %} 33{%- set tool_calls_ns = namespace ( tool_calls =[]) - %} 34{%- for tool_call in tool_calls -%} 35{%- set func_name = tool_call [ "function" ][ "name" ] - %} 36{%- set func_args = tool_call [ "function" ][ "arguments" ] - %} 37{%- set args_ns = namespace ( arg_strings =[]) - %} 38{%- for arg_name , arg_value in func_args . items () - %} 39{%- set args_ns . arg_strings = args_ns . arg_strings + [ arg_name + "=" + format_arg_value ( arg_value )] - %} 40{%- endfor -%} 41{%- set tool_calls_ns . tool_calls = tool_calls_ns . tool_calls + [ func_name + "(" + ( args_ns . arg_strings | join ( ", " )) + ")" ] - %} 42{%- endfor -%} 43{{ - "<|tool_call_start|>[" + ( tool_calls_ns . tool_calls | join ( ", " )) + "]<|tool_call_end|>" - }} 44{%- endmacro -%} 45 46{%- set ns = namespace ( system_prompt = "" , last_user_index =- 1 ) - %} 47{%- if messages [ 0 ][ "role" ] == "system" -%} 48{%- if messages [ 0 ]. get ( "content" ) - %} 49{%- set ns . system_prompt = parse_content ( messages [ 0 ][ "content" ]) - %} 50{%- endif -%} 51{%- set messages = messages [ 1 :] - %} 52{%- endif -%} 53{%- if tools -%} 54{%- set ns . system_prompt = ns . system_prompt + ( "\n" if ns . system_prompt else "" ) + "List of tools: [" -%} 55{%- for tool in tools -%} 56{%- if tool is not string -%} 57{%- set tool = tool | tojson -%} 58{%- endif -%} 59{%- set ns . system_prompt = ns . system_prompt + tool -%} 60{%- if not loop . last -%} 61{%- set ns . system_prompt = ns . system_prompt + ", " -%} 62{%- endif -%} 63{%- endfor -%} 64{%- set ns . system_prompt = ns . system_prompt + "]" -%} 65{%- endif -%} 66{%- if ns . system_prompt -%} 67{{ - "<|im_start|>system\n" + ns . system_prompt + "<|im_end|>\n" - }} 68{%- endif -%} 69{%- for message in messages -%} 70{%- if message [ "role" ] == "user" -%} 71{%- set ns . last_user_index = loop . index0 -%} 72{%- endif -%} 73{%- endfor -%} 74{%- for message in messages -%} 75{{ - "<|im_start|>" + message . role + "\n" - }} 76{%- if message . role == "assistant" -%} 77{%- generation -%} 78{%- if message . thinking is defined and ( preserve_thinking or loop . index0 > ns . last_user_index ) - %} 79{{ - "<think>" + message . thinking + "</think>" - }} 80{%- endif -%} 81{%- set _cfm_tag = "CONTINUE_FINAL_MESSAGE_TAG " -%} 82{%- set _has_cfm = false -%} 83{%- if message . content is defined -%} 84{%- set content = parse_content ( message . content ) - %} 85{%- if not ( preserve_thinking or loop . index0 > ns . last_user_index ) - %} 86{%- if "</think>" in content -%} 87{%- set content = content . split ( "</think>" )[- 1 ] | trim -%} 88{%- endif -%} 89{%- endif -%} 90{%- if message . tool_calls is defined and content . endswith ( _cfm_tag ) - %} 91{%- set _has_cfm = true -%} 92{%- set _trunc_len = ( content | length ) - ( _cfm_tag | length ) - %} 93{{ - content [: _trunc_len ] - }} 94{%- else -%} 95{{ - content - }} 96{%- endif -%} 97{%- endif -%} 98{%- if message . tool_calls is defined -%} 99{{ - render_tool_calls ( message . tool_calls ) - }} 100{%- endif -%} 101{%- if _has_cfm -%} 102{{ - _cfm_tag - }} 103{%- endif -%} 104{{ - "<|im_end|>\n" - }} 105{%- endgeneration -%} 106{%- else %} 107{%- if message . get ( "content" ) - %} 108{{ - parse_content ( message [ "content" ]) - }} 109{%- endif -%} 110{{ - "<|im_end|>\n" - }} 111{%- endif %} 112{%- endfor -%} 113{%- if add_generation_prompt -%} 114{{ - "<|im_start|>assistant\n" - }} 115{%- endif -%}