初始化项目,由ModelHub XC社区提供模型
Model: thliang01/gemma-3-4B-T1-it-mlx-fp16 Source: Original Platform
This commit is contained in:
121
chat_template.jinja
Normal file
121
chat_template.jinja
Normal file
@@ -0,0 +1,121 @@
|
||||
{{ bos_token }}
|
||||
{%- if tools %}
|
||||
{%- if messages[0]['role'] == 'system' %}
|
||||
{%- set system_message = messages[0]['content'] %}
|
||||
{%- if messages[1]['role'] == 'user' %}
|
||||
{%- set first_user_message = messages[1]['content'] %}
|
||||
{%- set loop_messages = messages[2:] %}
|
||||
{%- else %}
|
||||
{%- set first_user_message = '' %}
|
||||
{%- set loop_messages = messages[1:] %}
|
||||
{%- endif %}
|
||||
{%- else %}
|
||||
{%- set system_message = "You are a function calling AI model." %}
|
||||
{%- if messages[0]['role'] == 'user' %}
|
||||
{%- set first_user_message = messages[0]['content'] %}
|
||||
{%- set loop_messages = messages[1:] %}
|
||||
{%- else %}
|
||||
{%- set first_user_message = '' %}
|
||||
{%- set loop_messages = messages %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
<start_of_turn>user
|
||||
{{ system_message }} You are provided with function signatures within <tools> </tools> XML tags. You may call one or more functions to assist with the user query. Don't make assumptions about what values to plug into functions. Here are the available tools:
|
||||
|
||||
<tools>
|
||||
{{ tools | tojson }}
|
||||
</tools>
|
||||
|
||||
For each function call return a json object with function name and arguments within <tool_call> </tool_call> tags with the following schema:
|
||||
<tool_call>
|
||||
{"arguments": <args-dict>, "name": <function-name>}
|
||||
</tool_call>
|
||||
{%- if first_user_message %}
|
||||
|
||||
|
||||
{{ first_user_message }}
|
||||
{%- endif %}
|
||||
<end_of_turn>
|
||||
{% set ns = namespace(pairs=[]) %}
|
||||
{%- for message in loop_messages if message['role'] == 'assistant' and message.get('tool_calls') is defined %}
|
||||
{%- for tc in message['tool_calls'] %}
|
||||
{%- set ns.pairs = ns.pairs + [(tc.id, tc.function.name)] %}
|
||||
{%- endfor %}
|
||||
{%- endfor %}
|
||||
{%- set tool_call_map = dict(ns.pairs) %}
|
||||
|
||||
{%- for message in loop_messages %}
|
||||
{%- set is_first_tool = message['role'] == 'tool' and (loop.index0 == 0 or loop_messages[loop.index0-1]['role'] != 'tool') %}
|
||||
{%- set is_last_tool = message['role'] == 'tool' and (loop.last or loop_messages[loop.index0+1]['role'] != 'tool') %}
|
||||
{% if message['role'] == 'user' %}
|
||||
<start_of_turn>user
|
||||
{{ message['content'] | trim }}<end_of_turn>
|
||||
{% elif message['role'] == 'assistant' -%}
|
||||
|
||||
<start_of_turn>model
|
||||
{% if message.get('tool_calls') is defined and message.get('tool_calls') %}
|
||||
{%- for tool_call in message['tool_calls'] %}
|
||||
<tool_call>
|
||||
{"name": "{{ tool_call['function']['name'] }}", "arguments": {{ tool_call['function']['arguments'] | tojson }}}
|
||||
</tool_call>{% if not loop.last %}
|
||||
|
||||
{% endif %}
|
||||
{%- endfor %}
|
||||
{%- else %}
|
||||
{{ message['content'] | trim }}
|
||||
{%- endif %}
|
||||
<end_of_turn>
|
||||
{% elif message['role'] == 'tool' %}
|
||||
{%- if is_first_tool %}
|
||||
<start_of_turn>tool
|
||||
{% endif %}
|
||||
<tool_response>
|
||||
{{ {"name": tool_call_map.get(message.get('tool_call_id', ''), "unknown"), "content": message['content']} | tojson }}
|
||||
</tool_response>
|
||||
{%- if not is_last_tool %}
|
||||
|
||||
{% else %}
|
||||
<end_of_turn>
|
||||
{% endif %}
|
||||
{%- endif -%}
|
||||
{%- endfor %}{% if add_generation_prompt %}
|
||||
<start_of_turn>model
|
||||
{% endif %}
|
||||
{%- else %}
|
||||
{%- if messages[0]['role'] == 'system' -%}
|
||||
{%- if messages[0]['content'] is string -%}
|
||||
{%- set first_user_prefix = messages[0]['content'] + '\n\n' -%}
|
||||
{%- else -%}
|
||||
{%- set first_user_prefix = messages[0]['content'][0]['text'] + '\n\n' -%}
|
||||
{%- endif -%}
|
||||
{%- set loop_messages = messages[1:] -%}
|
||||
{%- else -%}
|
||||
{%- set first_user_prefix = "" -%}
|
||||
{%- set loop_messages = messages -%}
|
||||
{%- endif -%}
|
||||
{%- for message in loop_messages -%}
|
||||
{%- if (message['role'] == 'assistant') -%}
|
||||
{%- set role = "model" -%}
|
||||
{%- else -%}
|
||||
{%- set role = message['role'] -%}
|
||||
{%- endif -%}
|
||||
{{ '<start_of_turn>' + role + '\n' + (first_user_prefix if loop.first else "") }}
|
||||
{%- if message['content'] is string -%}
|
||||
{{ message['content'] | trim }}
|
||||
{%- elif message['content'] is iterable -%}
|
||||
{%- for item in message['content'] -%}
|
||||
{%- if item['type'] == 'image' -%}
|
||||
{{ '<img>' }}
|
||||
{%- elif item['type'] == 'text' -%}
|
||||
{{ item['text'] | trim }}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- else -%}
|
||||
{{ raise_exception("Invalid content type") }}
|
||||
{%- endif -%}
|
||||
{{ '<end_of_turn>\n' }}
|
||||
{%- endfor -%}
|
||||
{%- if add_generation_prompt -%}
|
||||
{{'<start_of_turn>model\n'}}
|
||||
{%- endif -%}
|
||||
{%- endif %}
|
||||
Reference in New Issue
Block a user