trl-internal-testing/tiny-Gemma3ForConditionalGeneration
0265k
1{{ bos_token }}2{%- if messages[0]['role'] == 'system' -%}3 {%- if messages[0]['content'] is string -%}4 {%- set first_user_prefix = messages[0]['content'] + '5 6' -%}7 {%- else -%}8 {%- set first_user_prefix = messages[0]['content'][0]['text'] + '9 10' -%}11 {%- endif -%}12 {%- set loop_messages = messages[1:] -%}13{%- else -%}14 {%- set first_user_prefix = "" -%}15 {%- set loop_messages = messages -%}16{%- endif -%}17{%- for message in loop_messages -%}18 {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) -%}19 {{ raise_exception("Conversation roles must alternate user/assistant/user/assistant/...") }}20 {%- endif -%}21 {%- if (message['role'] == 'assistant') -%}22 {%- set role = "model" -%}23 {%- else -%}24 {%- set role = message['role'] -%}25 {%- endif -%}26 {{ '<start_of_turn>' + role + '27' + (first_user_prefix if loop.first else "") }}28 {%- if message['content'] is string -%}29 {{ message['content'] | trim }}30 {%- elif message['content'] is iterable -%}31 {%- for item in message['content'] -%}32 {%- if item['type'] == 'image' -%}33 {{ '<start_of_image>' }}34 {%- elif item['type'] == 'text' -%}35 {{ item['text'] | trim }}36 {%- endif -%}37 {%- endfor -%}38 {%- else -%}39 {{ raise_exception("Invalid content type") }}40 {%- endif -%}41 {{ '<end_of_turn>42' }}43{%- endfor -%}44{%- if add_generation_prompt -%}45 {{'<start_of_turn>model46'}}47{%- endif -%}48 