| |
| |
| |
| |
| {%- macro render_content(content) -%} |
| {%- if content is string -%} |
| {{ content }} |
| {%- elif content is iterable -%} |
| {%- for part in content -%} |
| {%- if part.type == 'text' -%} |
| {{ part.text }} |
| {%- elif part.type == 'tool_call' -%} |
| <|tool_call|>{{ part.text }}<|/tool_call|> |
| {%- elif part.type == 'tool_result' -%} |
| <|tool_result|>{{ part.text }}<|/tool_result|> |
| {%- elif part.type == 'python' -%} |
| <|python|>{{ part.text }}<|/python|> |
| {%- elif part.type == 'output' -%} |
| <|output|>{{ part.text }}<|/output|> |
| {%- elif part.type == 'think' -%} |
| <|think|>{{ part.text }}<|/think|> |
| {%- endif -%} |
| {%- endfor -%} |
| {%- else -%} |
| {{ content }} |
| {%- endif -%} |
| {%- endmacro -%} |
| |
| |
| {%- for message in messages -%} |
| {%- if message.role == 'system' -%} |
| <|im_start|>system |
| {{ message.content }}<|im_end|> |
| {% elif message.role == 'user' -%} |
| <|im_start|>user |
| {{ message.content }}<|im_end|> |
| {% elif message.role == 'assistant' -%} |
| <|im_start|>assistant |
| {% generation %}{{ render_content(message.content) }}<|im_end|>{% endgeneration %} |
| {% elif message.role == 'tool' -%} |
| <|tool_result|>{{ message.content }}<|/tool_result|> |
| {%- endif -%} |
| {%- endfor -%} |
| |
| |
| {%- if add_generation_prompt -%} |
| <|im_start|>assistant |
| {% generation %}{% endgeneration %} |
| {%- endif -%} |
| |
| |