char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
8b576b6c5
char/aliceai-t5-moe
1{{ - bos_token }} 2{%- if custom_tools is defined %} 3{%- set tools = custom_tools %} 4{%- endif %} 5{%- if not tools_in_user_message is defined %} 6{%- set tools_in_user_message = true %} 7{%- endif %} 8{%- if not date_string is defined %} 9{%- if strftime_now is defined %} 10{%- set date_string = strftime_now ( "%d %b %Y" ) %} 11{%- else %} 12{%- set date_string = "26 Jul 2024" %} 13{%- endif %} 14{%- endif %} 15{%- if not tools is defined %} 16{%- set tools = none %} 17{%- endif %} 18 19{#- This block extracts the system message, so we can slot it into the right place. #} 20{%- if messages [ 0 ][ 'role' ] == 'system' %} 21{%- set system_message = messages [ 0 ][ 'content' ]| trim %} 22{%- set messages = messages [ 1 :] %} 23{%- else %} 24{%- set system_message = "" %} 25{%- endif %} 26 27{#- System message #} 28{{ - "<|start_header_id|>system<|end_header_id|>\n\n" }} 29{%- if tools is not none %} 30{{ - "Environment: ipython\n" }} 31{%- endif %} 32{{ - "Cutting Knowledge Date: December 2023\n" }} 33{{ - "Today Date: " + date_string + "\n\n" }} 34{%- if tools is not none and not tools_in_user_message %} 35{{ - "You have access to the following functions. To call a function, please respond with JSON for a function call." }} 36{{ - 'Respond in the format {" name ": function name, " parameters ": dictionary of argument name and its value}.' }} 37{{ - "Do not use variables.\n\n" }} 38{%- for t in tools %} 39{{ - t | tojson ( indent = 4 ) }} 40{{ - "\n\n" }} 41{%- endfor %} 42{%- endif %} 43{{ - system_message }} 44{{ - "<|eot_id|>" }} 45 46{#- Custom tools are passed in a user message with some extra guidance #} 47{%- if tools_in_user_message and not tools is none %} 48{#- Extract the first user message so we can plug it in here #} 49{%- if messages | length != 0 %} 50{%- set first_user_message = messages [ 0 ][ 'content' ]| trim %} 51{%- set messages = messages [ 1 :] %} 52{%- else %} 53 {{- raise_exception ( "Cannot put tools in the first user message when there' s no first user message ! ") }} 54{%- endif %} 55{{- ' <| start_header_id |> user <| end_header_id |>\ n \ n ' -}} 56{{- " Given the following functions , please respond with a JSON for a function call " }} 57{{- " with its proper arguments that best answers the given prompt .\ n \ n " }} 58{{- ' Respond in the format {"name" : function name , "parameters" : dictionary of argument name and its value }. ' }} 59{{- " Do not use variables .\ n \ n " }} 60{%- for t in tools %} 61{{- t | tojson(indent=4) }} 62{{- " \ n \ n " }} 63{%- endfor %} 64{{- first_user_message + " <| eot_id |> "}} 65{%- endif %} 66 67{%- for message in messages %} 68{%- if not (message.role == ' ipython ' or message.role == ' tool ' or ' tool_calls ' in message) %} 69{{- ' <| start_header_id |> ' + message[' role '] + ' <| end_header_id |>\ n \ n '+ message[' content '] | trim + ' <| eot_id |> ' }} 70{%- elif ' tool_calls ' in message %} 71{%- if not message.tool_calls|length == 1 %} 72{{- raise_exception(" This model only supports single tool - calls at once ! ") }} 73{%- endif %} 74{%- set tool_call = message.tool_calls[0].function %} 75{{- ' <| start_header_id |> assistant <| end_header_id |>\ n \ n ' -}} 76{{- ' {"name" : "' + tool_call . name + '" , ' }} 77{{- '"parameters" : ' }} 78{{- tool_call.arguments | tojson }} 79{{- " }" }} 80{{- " <| eot_id |> " }} 81{%- elif message.role == " tool " or message.role == " ipython " %} 82{{- " <| start_header_id |> ipython <| end_header_id |>\ n \ n " }} 83{%- if message.content is mapping or message.content is iterable %} 84{{- message.content | tojson }} 85{%- else %} 86{{- message.content }} 87{%- endif %} 88{{- " <| eot_id |> " }} 89{%- endif %} 90{%- endfor %} 91{%- if add_generation_prompt %} 92{{- ' <| start_header_id |> assistant <| end_header_id |>\ n \ n ' }} 93{%- endif %}