{{- '<|im_start|><|object_ref_start|>' -}} {%- if tools -%} {{- '' -}} {{- tools | tojson -}} {{- '\n' -}} {%- endif -%} {%- for message in messages -%} {%- if message['role'] == 'system' -%} {{- '\n' + message['content'] + '\n\n' -}} {%- elif message['role'] == 'user' -%} {{- '\n' + message['content'] + '\n\n' -}} {%- elif message['role'] == 'assistant' -%} {{- '\n' -}} {%- if message.get('content') -%} {{- message['content'] -}} {%- endif -%} {%- for tool_call in message.get('tool_calls', []) -%} {{- '' -}} {{- {'arguments': tool_call['function']['arguments'], 'name': tool_call['function']['name']} | tojson -}} {{- '' -}} {%- endfor -%} {{- '\n' -}} {%- elif message['role'] == 'tool' -%} {{- '' + message['content'] + '\n' -}} {%- else -%} {{- raise_exception('Unsupported message role: ' + message['role']) -}} {%- endif -%} {%- endfor -%} {%- if add_generation_prompt -%} {{- '\n' -}} {%- endif -%} {{- '<|im_end|>' -}}