iamPi commited on
Commit
089f940
·
verified ·
1 Parent(s): 124c3a1

Create chat_template.jinja

Browse files
Files changed (1) hide show
  1. chat_template.jinja +101 -0
chat_template.jinja ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {%- macro render_content(msg) -%}
2
+ {%- set c = msg.get('content') -%}
3
+ {%- if c is string -%}
4
+ {{ c }}
5
+ {%- elif c is not none -%}
6
+ {% for content in c -%}
7
+ {% if content['type'] == 'image' or content['type'] == 'image_url' -%}
8
+ <|media_begin|>image<|media_content|><|media_pad|><|media_end|>
9
+ {% elif content['type'] == 'video' or content['type']== 'video_url'-%}
10
+ <|kimi_k25_video_placeholder|>
11
+ {% else -%}
12
+ {{ content['text'] }}
13
+ {%- endif -%}
14
+ {%- endfor -%}
15
+ {%- endif -%}
16
+ {%- endmacro -%}
17
+ {% macro set_roles(message) -%}
18
+ {%- set role_name = message.get('name') or message['role'] -%}
19
+ {%- if message['role'] == 'user' -%}
20
+ <|im_user|>{{role_name}}<|im_middle|>
21
+ {%- elif message['role'] == 'assistant' -%}
22
+ <|im_assistant|>{{role_name}}<|im_middle|>
23
+ {%- else -%}
24
+ <|im_system|>{{role_name}}<|im_middle|>
25
+ {%- endif -%}
26
+ {%- endmacro -%}
27
+ {%- macro render_toolcalls(message) -%}
28
+ <|tool_calls_section_begin|>
29
+ {%- for tool_call in message['tool_calls'] -%}
30
+ {%- set formatted_id = tool_call['id'] -%}
31
+ <|tool_call_begin|>{{ formatted_id }}<|tool_call_argument_begin|>{% if tool_call['function']['arguments'] is string %}{{ tool_call['function']['arguments'] }}{% else %}{{ tool_call['function']['arguments'] | tojson }}{% endif %}<|tool_call_end|>
32
+ {%- endfor -%}
33
+ <|tool_calls_section_end|>
34
+ {%- endmacro -%}
35
+ {%- set preserve_thinking = preserve_thinking | default(false) -%}
36
+ {# Find last non-tool-call assistant message. If preserve_thinking, keep -1 so hist is empty and all msgs use suffix (retain reasoning). #}
37
+ {%- set ns = namespace(last_non_tool_call_assistant_msg=-1) -%}
38
+ {%- if not preserve_thinking -%}
39
+ {%- for idx in range(messages|length-1, -1, -1) -%}
40
+ {%- if messages[idx]['role'] == 'assistant' and not messages[idx].get('tool_calls') -%}
41
+ {%- set ns.last_non_tool_call_assistant_msg = idx -%}
42
+ {%- break -%}
43
+ {%- endif -%}
44
+ {%- endfor -%}
45
+ {%- endif -%}
46
+ {# split all messages into history & suffix, reasoning_content in suffix should be reserved.#}
47
+ {%- set hist_msgs = messages[:ns.last_non_tool_call_assistant_msg+1] -%}
48
+ {%- set suffix_msgs = messages[ns.last_non_tool_call_assistant_msg+1:] -%}
49
+ {%- if tools -%}
50
+ {%- if tools_ts_str -%}
51
+ <|im_system|>tool_declare<|im_middle|>{{ tools_ts_str }}<|im_end|>
52
+ {%- else -%}
53
+ <|im_system|>tool_declare<|im_middle|>{{ tools | tojson(separators=(',', ':')) }}<|im_end|>
54
+ {%- endif -%}
55
+ {%- endif -%}
56
+
57
+ {%- for message in hist_msgs -%}
58
+ {{set_roles(message)}}
59
+ {%- if message['role'] == 'assistant' -%}
60
+ <think></think>{{render_content(message)}}
61
+ {%- if message.get('tool_calls') -%}
62
+ {{render_toolcalls(message)}}
63
+ {%- endif -%}
64
+ {%- elif message['role'] == 'tool' -%}
65
+ {%- set tool_call_id = message.tool_call_id -%}
66
+ ## Return of {{ tool_call_id }}
67
+ {{render_content(message)}}
68
+ {%- elif message['content'] is not none -%}
69
+ {{render_content(message)}}
70
+ {%- endif -%}
71
+ <|im_end|>
72
+ {%- endfor -%}
73
+ {%- for message in suffix_msgs -%}
74
+ {{set_roles(message)}}
75
+ {%- if message['role'] == 'assistant' -%}
76
+ {%- if thinking is defined and thinking is false and preserve_thinking is false -%}
77
+ <think></think>{{render_content(message)}}
78
+ {%- else -%}
79
+ {%- set rc = message.get('reasoning', message.get('reasoning_content', '')) -%}
80
+ <think>{{rc}}</think>{{render_content(message)}}
81
+ {%- endif -%}
82
+ {%- if message.get('tool_calls') -%}
83
+ {{render_toolcalls(message)}}
84
+ {%- endif -%}
85
+ {%- elif message['role'] == 'tool' -%}
86
+ {%- set tool_call_id = message.tool_call_id -%}
87
+ ## Return of {{ tool_call_id }}
88
+ {{render_content(message)}}
89
+ {%- elif message['content'] is not none -%}
90
+ {{render_content(message)}}
91
+ {%- endif -%}
92
+ <|im_end|>
93
+ {%- endfor -%}
94
+ {%- if add_generation_prompt -%}
95
+ <|im_assistant|>assistant<|im_middle|>
96
+ {%- if thinking is defined and thinking is false -%}
97
+ <think></think>
98
+ {%- else -%}
99
+ <think>
100
+ {%- endif -%}
101
+ {%- endif -%}