| {%- if tools %} | |
| {{- '<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n' -}} | |
| {%- if messages[0].role == 'system' -%} | |
| {{- messages[0].content + '\n\n' -}} | |
| {%- endif -%} | |
| {{- '<AVAILABLE_TOOLS>[' -}} | |
| {%- for tool in tools -%} | |
| {{- (tool.function if tool.function is defined else tool) | tojson -}}{{- ', ' if not loop.last else '' -}} | |
| {%- endfor -%} | |
| {{- ']</AVAILABLE_TOOLS>' -}}{{- '<|eot_id|>' -}} | |
| {%- else %} | |
| {%- if messages[0].role == 'system' %} | |
| {{- '<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n' + messages[0].content + '<|eot_id|>' -}} | |
| {%- endif %} | |
| {%- endif %} | |
| {%- for message in messages -%} | |
| {%- if (message.role == 'user') -%} | |
| {{- '<|start_header_id|>user<|end_header_id|>\n\n' + message.content + '<|eot_id|>' -}} | |
| {%- elif message.role == 'assistant' -%} | |
| {%- set content = message.content -%} | |
| {{- '<|start_header_id|>assistant<|end_header_id|>\n\n' + content -}} | |
| {%- if message.tool_calls -%} | |
| {{- '<TOOLCALL>[' -}} | |
| {%- for tool_call in message.tool_calls -%} | |
| {%- if tool_call.function -%} | |
| {%- set tool_call = tool_call.function -%} | |
| {%- endif -%} | |
| {{- '{"name": "' }}{{- tool_call.name }}{{- '", "arguments": ' -}} | |
| {%- if tool_call.arguments is string -%} | |
| {{- tool_call.arguments -}} | |
| {%- else -%} | |
| {{- tool_call.arguments | tojson -}} | |
| {%- endif -%} | |
| {{- ', ' if not loop.last else '' -}} | |
| {%- endfor -%} | |
| {{- ']</TOOLCALL>' -}} | |
| {%- endif %} | |
| {{- '<|eot_id|>' -}} | |
| {%- elif message.role == 'tool' -%} | |
| {%- if loop.first or (messages[loop.index0 - 1].role != 'tool') -%} | |
| {{- '<|start_header_id|>user<|end_header_id|>\n\n' }}{{- '<TOOL_RESPONSE>[' -}} | |
| {%- endif -%} | |
| {{- message.content -}}{{- ', ' if not loop.last and (messages[loop.index0 + 1].role == 'tool') else '' -}} | |
| {%- if loop.last or (messages[loop.index0 + 1].role != 'tool') -%} | |
| {{- ']</TOOL_RESPONSE>' -}}{{- '<|eot_id|>' -}} | |
| {%- endif %} | |
| {%- endif %} | |
| {%- endfor %} | |
| {%- if add_generation_prompt %} | |
| {{- '<|start_header_id|>assistant<|end_header_id|>\n\n' -}} | |
| {%- endif %} |