MMEX commited on
Commit
0c4ca3e
·
verified ·
1 Parent(s): 3902ee3

Update chat_template.jinja

Browse files
Files changed (1) hide show
  1. chat_template.jinja +29 -50
chat_template.jinja CHANGED
@@ -1,30 +1,37 @@
1
- {%- if tools %}
2
- {{- '<|im_start|>system\n' }}
3
- {%- if messages[0].role == 'system' %}
4
- {{- messages[0].content + '\n\n' }}
5
- {%- endif %}
6
- {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
7
- {%- for tool in tools %}
8
- {{- "\n" }}
9
- {{- tool | tojson }}
10
- {%- endfor %}
11
- {{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
12
- {%- else %}
13
- {%- if messages[0].role == 'system' %}
14
- {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
15
- {%- endif %}
16
- {%- endif %}
17
- {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
 
 
 
 
 
 
18
  {%- for message in messages[::-1] %}
19
  {%- set index = (messages|length - 1) - loop.index0 %}
20
- {%- if ns.multi_step_tool and message.role == "user" and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}
21
- {%- set ns.multi_step_tool = false %}
22
  {%- set ns.last_query_index = index %}
 
23
  {%- endif %}
24
  {%- endfor %}
 
25
  {%- for message in messages %}
26
  {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
27
- {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
28
  {%- elif message.role == "assistant" %}
29
  {%- set content = message.content %}
30
  {%- set reasoning_content = '' %}
@@ -45,41 +52,13 @@
45
  {%- else %}
46
  {{- '<|im_start|>' + message.role + '\n' + content }}
47
  {%- endif %}
48
- {%- if message.tool_calls %}
49
- {%- for tool_call in message.tool_calls %}
50
- {%- if (loop.first and content) or (not loop.first) %}
51
- {{- '\n' }}
52
- {%- endif %}
53
- {%- if tool_call.function %}
54
- {%- set tool_call = tool_call.function %}
55
- {%- endif %}
56
- {{- '<tool_call>\n{"name": "' }}
57
- {{- tool_call.name }}
58
- {{- '", "arguments": ' }}
59
- {%- if tool_call.arguments is string %}
60
- {{- tool_call.arguments }}
61
- {%- else %}
62
- {{- tool_call.arguments | tojson }}
63
- {%- endif %}
64
- {{- '}\n</tool_call>' }}
65
- {%- endfor %}
66
- {%- endif %}
67
  {{- '<|im_end|>\n' }}
68
- {%- elif message.role == "tool" %}
69
- {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
70
- {{- '<|im_start|>user' }}
71
- {%- endif %}
72
- {{- '\n<tool_response>\n' }}
73
- {{- message.content }}
74
- {{- '\n</tool_response>' }}
75
- {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
76
- {{- '<|im_end|>\n' }}
77
- {%- endif %}
78
  {%- endif %}
79
  {%- endfor %}
 
80
  {%- if add_generation_prompt %}
81
  {{- '<|im_start|>assistant\n' }}
82
  {%- if enable_thinking is defined and enable_thinking is false %}
83
  {{- '<think>\n\n</think>\n\n' }}
84
  {%- endif %}
85
- {%- endif %}
 
1
+ <|im_start|>system
2
+ You are an AI assistant that follows a Plan and Solve reasoning pattern.
3
+
4
+ For each user query:
5
+ - First, create a PLAN inside a <think> tag.
6
+ - The PLAN should outline your reasoning steps and approach before answering.
7
+ - The PLAN is not shown to the user but should help you structure a high-quality answer.
8
+ - After </think>, provide your reply directly to the user, without mentioning the PLAN or the fact that you used <think>.
9
+
10
+ Format example:
11
+
12
+ <think>
13
+ PLAN:
14
+ 1. Analyze the user question.
15
+ 2. Identify key facts.
16
+ 3. Decide on the correct answer.
17
+ 4. Structure the reply clearly.
18
+ </think>
19
+
20
+ Here is your answer to the question...
21
+ <|im_end|>
22
+
23
+ {%- set ns = namespace(last_query_index=messages|length - 1) %}
24
  {%- for message in messages[::-1] %}
25
  {%- set index = (messages|length - 1) - loop.index0 %}
26
+ {%- if message.role == "user" %}
 
27
  {%- set ns.last_query_index = index %}
28
+ {%- break %}
29
  {%- endif %}
30
  {%- endfor %}
31
+
32
  {%- for message in messages %}
33
  {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
34
+ {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>\n' }}
35
  {%- elif message.role == "assistant" %}
36
  {%- set content = message.content %}
37
  {%- set reasoning_content = '' %}
 
52
  {%- else %}
53
  {{- '<|im_start|>' + message.role + '\n' + content }}
54
  {%- endif %}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  {{- '<|im_end|>\n' }}
 
 
 
 
 
 
 
 
 
 
56
  {%- endif %}
57
  {%- endfor %}
58
+
59
  {%- if add_generation_prompt %}
60
  {{- '<|im_start|>assistant\n' }}
61
  {%- if enable_thinking is defined and enable_thinking is false %}
62
  {{- '<think>\n\n</think>\n\n' }}
63
  {%- endif %}
64
+ {%- endif %}