|
{{bos_token}}{% if messages[0]['role'] == 'system' %} |
|
{%- set system_message = messages[0]['content'] %} |
|
{%- set loop_messages = messages[1:] %} |
|
{%- else %} |
|
{%- set system_message = 'You are a helpful assistant trained by Liquid AI.' %} |
|
{%- set loop_messages = messages %} |
|
{%- endif %} |
|
{%- if tools %} |
|
{%- set system_message = system_message + '\nList of tools: <|tool_list_start|>' + (tools | tojson) + '<|tool_list_end|>' %} |
|
{%- endif %} |
|
{{- '<|im_start|>system\n' + system_message + '<|im_end|>\n'}} |
|
{%- for message in loop_messages %} |
|
{%- if message['role'] == 'user' %} |
|
{{- '<|im_start|>user\n' + message['content'] + '<|im_end|>\n'}} |
|
{%- elif message['role'] == 'assistant' %} |
|
{{- '<|im_start|>assistant\n'}} |
|
{%- if message.get('tool_calls') %} |
|
|
|
{%- set tool_calls_ns = namespace(tool_calls=[])%} |
|
{%- for tool_call in message['tool_calls'] %} |
|
{%- set func_name = tool_call['function']['name'] %} |
|
{%- set func_args = tool_call['function']['arguments'] %} |
|
|
|
{%- set args_ns = namespace(arg_strings=[])%} |
|
{%- for arg_name, arg_value in func_args.items() %} |
|
{%- set formatted_arg_value = arg_value %} |
|
{%- if arg_value is string %} |
|
{%- set formatted_arg_value = '"' + arg_value + '"' %} |
|
{%- elif arg_value is mapping %} |
|
{%- set formatted_arg_value = arg_value | tojson %} |
|
{%- elif arg_value is iterable %} |
|
{%- set formatted_arg_value = '[' + arg_value + ']' %} |
|
{%- endif %} |
|
|
|
{%- set args_ns.arg_strings = args_ns.arg_strings + [(arg_name + '=' + formatted_arg_value)] %} |
|
{%- endfor %} |
|
|
|
{%- set tool_calls_ns.tool_calls = tool_calls_ns.tool_calls + [(func_name + '(' + (args_ns.arg_strings | join(",")) + ')' )]%} |
|
{%- endfor %} |
|
|
|
{{-'<|tool_call_start|>[' + (tool_calls_ns.tool_calls | join(",")) + ']<|tool_call_end|>'}} |
|
{%- if message['content'] %} |
|
{{-message['content']}} |
|
{%- endif %} |
|
{%- else %} |
|
{{-message['content']}} |
|
{%- endif %} |
|
{{-'<|im_end|>\n'}} |
|
{%- elif message['role'] == 'tool' %} |
|
{{-'<|im_start|>tool\n<|tool_response_start|>' + message['content'] + '<|tool_response_end|><|im_end|>\n'}} |
|
{%- elif message['role'] == 'system' %} |
|
{{-'<|im_start|>system\n' + message['content'] + '<|im_end|>\n'}} |
|
{%- endif %} |
|
{%- endfor %} |
|
{%- if add_generation_prompt %} |
|
{{-'<|im_start|>assistant\n'}} |
|
{%- endif %} |