Support tool calls
Browse files- chat_template.jinja +49 -4
chat_template.jinja
CHANGED
@@ -1,4 +1,49 @@
|
|
1 |
-
{{bos_token}}
|
2 |
-
|
3 |
-
|
4 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{{bos_token}}
|
2 |
+
{%- if tools %}
|
3 |
+
{%- set tool_message = 'List of tools: <|tool_list_start|>' + tools|selectattr('type','eq','function')|map(attribute='function')|list|tojson + '<|tool_list_end|>' %}
|
4 |
+
{%- endif %}
|
5 |
+
|
6 |
+
{%- if messages[0]['role'] == 'system' %}
|
7 |
+
{%- set system_message = messages[0]['content'] + ('\n' + tool_message if tool_message else '') %}
|
8 |
+
{%- set loop_messages = messages[1:] %}
|
9 |
+
{%- else %}
|
10 |
+
{%- set system_message = tool_message if tool_message else none %}
|
11 |
+
{%- set loop_messages = messages %}
|
12 |
+
{%- endif %}
|
13 |
+
|
14 |
+
{{- '<|im_start|>system\n' + system_message + '<|im_end|>\n' if system_message }}
|
15 |
+
|
16 |
+
{%- for message in loop_messages %}
|
17 |
+
{%- set message_content = message['content'] if message['content'] else '' %}
|
18 |
+
{{- '<|im_start|>' + message['role'] + '\n' }}
|
19 |
+
|
20 |
+
{%- if message['role'] == 'assistant' and message['tool_calls'] %}
|
21 |
+
{{- '<|tool_call_start|>[' }}
|
22 |
+
|
23 |
+
{%- for tool_call_function in message['tool_calls']|selectattr('type','eq','function')|map(attribute='function')|list %}
|
24 |
+
{{- tool_call_function['name'] + '(' }}
|
25 |
+
|
26 |
+
{%- for k, v in tool_call_function['arguments'].items() %}
|
27 |
+
{{- k + '=' + v|tojson }}
|
28 |
+
|
29 |
+
{%- if not loop.last %}
|
30 |
+
{{- ', ' }}
|
31 |
+
{%- endif %}
|
32 |
+
{%- endfor %}
|
33 |
+
|
34 |
+
{%- if not loop.last %}
|
35 |
+
{{- '), ' }}
|
36 |
+
{%- else %}
|
37 |
+
{{- ')' }}
|
38 |
+
{%- endif %}
|
39 |
+
{%- endfor %}
|
40 |
+
|
41 |
+
{{- ']<|tool_call_end|>' }}
|
42 |
+
{%- endif %}
|
43 |
+
|
44 |
+
{{- message_content + '<|im_end|>\n' }}
|
45 |
+
{%- endfor %}
|
46 |
+
|
47 |
+
{%- if add_generation_prompt %}
|
48 |
+
{{- '<|im_start|>assistant\n' }}
|
49 |
+
{%- endif %}
|