LFM2-700M / chat_template.jinja
CISCai's picture
Support tool calls
9d72af5 verified
raw
history blame
1.69 kB
{{bos_token}}
{%- if tools %}
{%- set tool_message = 'List of tools: <|tool_list_start|>' + tools|selectattr('type','eq','function')|map(attribute='function')|list|tojson + '<|tool_list_end|>' %}
{%- endif %}
{%- if messages[0]['role'] == 'system' %}
{%- set system_message = messages[0]['content'] + ('\n' + tool_message if tool_message else '') %}
{%- set loop_messages = messages[1:] %}
{%- else %}
{%- set system_message = tool_message if tool_message else none %}
{%- set loop_messages = messages %}
{%- endif %}
{{- '<|im_start|>system\n' + system_message + '<|im_end|>\n' if system_message }}
{%- for message in loop_messages %}
{%- set message_content = message['content'] if message['content'] else '' %}
{{- '<|im_start|>' + message['role'] + '\n' }}
{%- if message['role'] == 'assistant' and message['tool_calls'] %}
{{- '<|tool_call_start|>[' }}
{%- for tool_call_function in message['tool_calls']|selectattr('type','eq','function')|map(attribute='function')|list %}
{{- tool_call_function['name'] + '(' }}
{%- for k, v in tool_call_function['arguments'].items() %}
{{- k + '=' + v|tojson }}
{%- if not loop.last %}
{{- ', ' }}
{%- endif %}
{%- endfor %}
{%- if not loop.last %}
{{- '), ' }}
{%- else %}
{{- ')' }}
{%- endif %}
{%- endfor %}
{{- ']<|tool_call_end|>' }}
{%- endif %}
{{- message_content + '<|im_end|>\n' }}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- endif %}