{%- if messages | length != 1 -%} {{- raise_exception("This chat template requires exactly one message, but got " ~ (messages | length) ~ ".") -}} {%- endif -%} {%- for message in messages -%} {%- if message['role'] != 'user' -%} {{- raise_exception("The message role must be 'user', but got '" ~ message['role'] ~ "'.") -}} {%- endif -%} {%- set content = message['content'] -%} {%- if content is not iterable or content is string -%} {{- raise_exception("The 'content' field must be a list.") -}} {%- endif -%} {%- if content | length != 1 -%} {{- raise_exception("The 'content' list must contain exactly one item, but got " ~ (content|length) ~ ".") -}} {%- endif -%} {%- set item = content[0] -%} {%- if 'type' not in item or item['type'] != 'text' -%} {{- raise_exception("The content item must have a 'type' of 'text'.") -}} {%- endif -%} {%- if 'text' not in item or not item['text'] is string -%} {{- raise_exception("The content item must have a 'text' key with a string value.") -}} {%- endif -%} {%- endfor -%} {%- for message in messages -%} {{- bos_token -}} {{- '[0]' -}} {%- set text = message['content'][0]['text'] -%} {%- if text.endswith('.') -%} {{- text[:-1] -}} {%- else -%} {{- text -}} {%- endif -%} {{- eos_token -}} {%- endfor -%}