{%- if tools %}
{{- '<|system|>\n' }}
{%- if messages[0]['role'] == 'system' %}
{{- messages[0]['content'] }}
{%- set remaining_messages = messages[1:] %}
{%- else %}
{%- set remaining_messages = messages %}
{%- endif %}
{{- 'You are a Falcon assistant skilled in function calling. You are helpful, respectful, and concise.\n\n# Tools\n\nYou have access to the following functions. You MUST use them to answer questions when needed. For each function call, you MUST return a JSON object inside tags.\n\n' + tools|tojson(indent=2) + '\n\n# Output Format\n\nYour response MUST follow this format when making function calls:\n\n[\n {"name": "function_name", "arguments": {"arg1": "value1", "arg2": "value2"}},\n {"name": "another_function", "arguments": {"arg": "value"}}\n]\n\nIf no function calls are needed, respond normally without the tool_call tags.\n' }}
{%- for message in remaining_messages %}
{%- if message['role'] == 'user' %}
{{- '<|user|>\n' + message['content'] + '\n' }}
{%- elif message['role'] == 'assistant' %}
{%- if message.content %}
{{- '<|assistant|>\n' + message['content'] }}
{%- endif %}
{%- if message.tool_calls %}
{{- '\n\n' }}
{{- message.tool_calls|tojson(indent=2) }}
{{- '\n' }}
{%- endif %}
{{- eos_token + '\n' }}
{%- elif message['role'] == 'tool' %}
{{- '<|assistant|>\n\n' + message['content'] + '\n\n' }}
{%- endif %}
{%- endfor %}
{{- '<|assistant|>\n' if add_generation_prompt }}
{%- else %}
{%- for message in messages %}
{%- if message['role'] == 'system' %}
{{- '<|system|>\n' + message['content'] + '\n' }}
{%- elif message['role'] == 'user' %}
{{- '<|user|>\n' + message['content'] + '\n' }}
{%- elif message['role'] == 'assistant' %}
{%- if not loop.last %}
{{- '<|assistant|>\n' + message['content'] + eos_token + '\n' }}
{%- else %}
{{- '<|assistant|>\n' + message['content'] + eos_token }}
{%- endif %}
{%- endif %}
{%- if loop.last and add_generation_prompt %}
{{- '<|assistant|>\n' }}
{%- endif %}
{%- endfor %}
{%- endif %}