gemma-4-e4b-it-ov / openvino_tokenizer.xml
doberst's picture
Upload 19 files
ba237ae verified
Raw
History Blame Contribute Delete
43.8 kB
<?xml version="1.0"?>
<net name="tokenizer" version="11">
<layers>
<layer id="0" name="Parameter_209542" type="Parameter" version="opset1">
<data shape="?" element_type="string" />
<output>
<port id="0" precision="STRING" names="Parameter_209542">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="1" name="Constant_209548" type="Const" version="opset1">
<data element_type="i64" shape="" offset="0" size="8" />
<output>
<port id="0" precision="I64" />
</output>
</layer>
<layer id="2" name="StringTensorUnpack_209543" type="StringTensorUnpack" version="opset15">
<input>
<port id="0" precision="STRING">
<dim>-1</dim>
</port>
</input>
<output>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
<port id="3" precision="U8">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="3" name="ShapeOf_209544" type="ShapeOf" version="opset3">
<data output_type="i64" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
</input>
<output>
<port id="1" precision="I64">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="4" name="Constant_209545" type="Const" version="opset1">
<data element_type="i64" shape="" offset="0" size="8" />
<output>
<port id="0" precision="I64" />
</output>
</layer>
<layer id="5" name="Constant_209546" type="Const" version="opset1">
<data element_type="i64" shape="" offset="0" size="8" />
<output>
<port id="0" precision="I64" />
</output>
</layer>
<layer id="6" name="Gather_209547" type="Gather" version="opset8">
<data batch_dims="0" />
<input>
<port id="0" precision="I64">
<dim>1</dim>
</port>
<port id="1" precision="I64" />
<port id="2" precision="I64" />
</input>
<output>
<port id="3" precision="I64" />
</output>
</layer>
<layer id="7" name="Constant_209549" type="Const" version="opset1">
<data element_type="i64" shape="" offset="8" size="8" />
<output>
<port id="0" precision="I64" />
</output>
</layer>
<layer id="8" name="Range_209550" type="Range" version="opset4">
<data output_type="i32" />
<input>
<port id="0" precision="I64" />
<port id="1" precision="I64" />
<port id="2" precision="I64" />
</input>
<output>
<port id="3" precision="I32">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="9" name="Constant_209551" type="Const" version="opset1">
<data element_type="i64" shape="" offset="8" size="8" />
<output>
<port id="0" precision="I64" />
</output>
</layer>
<layer id="10" name="Constant_209552" type="Const" version="opset1">
<data element_type="i64" shape="" offset="8" size="8" />
<output>
<port id="0" precision="I64" />
</output>
</layer>
<layer id="11" name="Add_209553" type="Add" version="opset1">
<data auto_broadcast="numpy" />
<input>
<port id="0" precision="I64" />
<port id="1" precision="I64" />
</input>
<output>
<port id="2" precision="I64" />
</output>
</layer>
<layer id="12" name="Constant_209554" type="Const" version="opset1">
<data element_type="i64" shape="" offset="8" size="8" />
<output>
<port id="0" precision="I64" />
</output>
</layer>
<layer id="13" name="Range_209555" type="Range" version="opset4">
<data output_type="i32" />
<input>
<port id="0" precision="I64" />
<port id="1" precision="I64" />
<port id="2" precision="I64" />
</input>
<output>
<port id="3" precision="I32">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="14" name="Constant_209619" type="Const" version="opset1">
<data element_type="u8" shape="301" offset="16" size="301" />
<output>
<port id="0" precision="U8">
<dim>301</dim>
</port>
</output>
</layer>
<layer id="15" name="SpecialTokensSplit_209620" type="SpecialTokensSplit" version="extension">
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
<port id="3" precision="I32">
<dim>-1</dim>
</port>
<port id="4" precision="U8">
<dim>-1</dim>
</port>
<port id="5" precision="U8">
<dim>301</dim>
</port>
</input>
<output>
<port id="6" precision="I32">
<dim>-1</dim>
</port>
<port id="7" precision="I32">
<dim>-1</dim>
</port>
<port id="8" precision="I32">
<dim>-1</dim>
</port>
<port id="9" precision="I32">
<dim>-1</dim>
</port>
<port id="10" precision="U8">
<dim>-1</dim>
</port>
<port id="11" precision="BOOL">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="16" name="Constant_209622" type="Const" version="opset1">
<data element_type="u8" shape="1" offset="317" size="1" />
<output>
<port id="0" precision="U8">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="17" name="Constant_209624" type="Const" version="opset1">
<data element_type="u8" shape="3" offset="318" size="3" />
<output>
<port id="0" precision="U8">
<dim>3</dim>
</port>
</output>
</layer>
<layer id="18" name="RegexNormalization_209625" type="RegexNormalization" version="extension">
<data global_replace="true" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="U8">
<dim>-1</dim>
</port>
<port id="3" precision="BOOL">
<dim>-1</dim>
</port>
<port id="4" precision="U8">
<dim>1</dim>
</port>
<port id="5" precision="U8">
<dim>3</dim>
</port>
</input>
<output>
<port id="6" precision="I32">
<dim>-1</dim>
</port>
<port id="7" precision="I32">
<dim>-1</dim>
</port>
<port id="8" precision="U8">
<dim>-1</dim>
</port>
<port id="9" precision="BOOL">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="19" name="Constant_209627" type="Const" version="opset1">
<data element_type="u8" shape="1" offset="317" size="1" />
<output>
<port id="0" precision="U8">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="20" name="RegexSplit_209628" type="RegexSplit" version="extension">
<data behaviour="mergedwithprevious" invert="false" max_splits="-1" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
<port id="3" precision="I32">
<dim>-1</dim>
</port>
<port id="4" precision="U8">
<dim>-1</dim>
</port>
<port id="5" precision="BOOL">
<dim>-1</dim>
</port>
<port id="6" precision="U8">
<dim>1</dim>
</port>
</input>
<output>
<port id="7" precision="I32">
<dim>-1</dim>
</port>
<port id="8" precision="I32">
<dim>-1</dim>
</port>
<port id="9" precision="I32">
<dim>-1</dim>
</port>
<port id="10" precision="I32">
<dim>-1</dim>
</port>
<port id="11" precision="U8">
<dim>-1</dim>
</port>
<port id="12" precision="BOOL">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="21" name="Constant_209630" type="Const" version="opset1">
<data element_type="i32" shape="262144" offset="321" size="1048576" />
<output>
<port id="0" precision="I32">
<dim>262144</dim>
</port>
</output>
</layer>
<layer id="22" name="Constant_209632" type="Const" version="opset1">
<data element_type="i32" shape="262144" offset="1048897" size="1048576" />
<output>
<port id="0" precision="I32">
<dim>262144</dim>
</port>
</output>
</layer>
<layer id="23" name="Constant_209634" type="Const" version="opset1">
<data element_type="u8" shape="2316295" offset="2097473" size="2316295" />
<output>
<port id="0" precision="U8">
<dim>2316295</dim>
</port>
</output>
</layer>
<layer id="24" name="Constant_209642" type="Const" version="opset1">
<data element_type="i32" shape="514906" offset="4413768" size="2059624" />
<output>
<port id="0" precision="I32">
<dim>514906</dim>
</port>
</output>
</layer>
<layer id="25" name="Constant_209644" type="Const" version="opset1">
<data element_type="i32" shape="514906" offset="6473392" size="2059624" />
<output>
<port id="0" precision="I32">
<dim>514906</dim>
</port>
</output>
</layer>
<layer id="26" name="Constant_209646" type="Const" version="opset1">
<data element_type="u8" shape="2714340" offset="8533016" size="2714340" />
<output>
<port id="0" precision="U8">
<dim>2714340</dim>
</port>
</output>
</layer>
<layer id="27" name="Constant_209648" type="Const" version="opset1">
<data element_type="i32" shape="514906" offset="11247356" size="2059624" />
<output>
<port id="0" precision="I32">
<dim>514906</dim>
</port>
</output>
</layer>
<layer id="28" name="Constant_209650" type="Const" version="opset1">
<data element_type="i32" shape="514906" offset="13306980" size="2059624" />
<output>
<port id="0" precision="I32">
<dim>514906</dim>
</port>
</output>
</layer>
<layer id="29" name="Constant_209652" type="Const" version="opset1">
<data element_type="u8" shape="1903225" offset="15366604" size="1903225" />
<output>
<port id="0" precision="U8">
<dim>1903225</dim>
</port>
</output>
</layer>
<layer id="30" name="Constant_209636" type="Const" version="opset1">
<data element_type="i32" shape="23" offset="17269829" size="92" />
<output>
<port id="0" precision="I32">
<dim>23</dim>
</port>
</output>
</layer>
<layer id="31" name="Constant_209638" type="Const" version="opset1">
<data element_type="i32" shape="23" offset="17269921" size="92" />
<output>
<port id="0" precision="I32">
<dim>23</dim>
</port>
</output>
</layer>
<layer id="32" name="Constant_209640" type="Const" version="opset1">
<data element_type="u8" shape="198" offset="17270013" size="198" />
<output>
<port id="0" precision="U8">
<dim>198</dim>
</port>
</output>
</layer>
<layer id="33" name="Constant_209653" type="Const" version="opset1">
<data element_type="i32" shape="23" offset="17270211" size="92" />
<output>
<port id="0" precision="I32">
<dim>23</dim>
</port>
</output>
</layer>
<layer id="34" name="BPETokenizer_209654" type="BPETokenizer" version="extension">
<data unk_token="&lt;unk>" fuse_unk="true" suffix_indicator="" end_suffix="" byte_fallback="true" cache_capacity="52428" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
<port id="3" precision="I32">
<dim>-1</dim>
</port>
<port id="4" precision="U8">
<dim>-1</dim>
</port>
<port id="5" precision="I32">
<dim>262144</dim>
</port>
<port id="6" precision="I32">
<dim>262144</dim>
</port>
<port id="7" precision="U8">
<dim>2316295</dim>
</port>
<port id="8" precision="I32">
<dim>514906</dim>
</port>
<port id="9" precision="I32">
<dim>514906</dim>
</port>
<port id="10" precision="U8">
<dim>2714340</dim>
</port>
<port id="11" precision="I32">
<dim>514906</dim>
</port>
<port id="12" precision="I32">
<dim>514906</dim>
</port>
<port id="13" precision="U8">
<dim>1903225</dim>
</port>
<port id="14" precision="I32">
<dim>23</dim>
</port>
<port id="15" precision="I32">
<dim>23</dim>
</port>
<port id="16" precision="U8">
<dim>198</dim>
</port>
<port id="17" precision="I32">
<dim>23</dim>
</port>
</input>
<output>
<port id="18" precision="I32">
<dim>-1</dim>
</port>
<port id="19" precision="I32">
<dim>-1</dim>
</port>
<port id="20" precision="I32">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="35" name="Constant_209655" type="Const" version="opset1">
<data element_type="i32" shape="" offset="17270303" size="4" />
<output>
<port id="0" precision="I32" />
</output>
</layer>
<layer id="36" name="Constant_209657" type="Const" version="opset1">
<data element_type="u8" shape="4" offset="17270307" size="4" />
<output>
<port id="0" precision="U8">
<dim>4</dim>
</port>
</output>
</layer>
<layer id="37" name="Constant_209659" type="Const" version="opset1">
<data element_type="u8" shape="13" offset="17270311" size="13" />
<output>
<port id="0" precision="U8">
<dim>13</dim>
</port>
</output>
</layer>
<layer id="38" name="Truncate_209660" type="Truncate" version="extension">
<data m_num_inputs="1" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
<port id="3" precision="I32" />
<port id="4" precision="U8">
<dim>4</dim>
</port>
<port id="5" precision="U8">
<dim>13</dim>
</port>
</input>
<output>
<port id="6" precision="I32">
<dim>-1</dim>
</port>
<port id="7" precision="I32">
<dim>-1</dim>
</port>
<port id="8" precision="I32">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="39" name="Constant_209661" type="Const" version="opset1">
<data element_type="i32" shape="1" offset="17270324" size="4" />
<output>
<port id="0" precision="I32">
<dim>1</dim>
</port>
</output>
</layer>
<layer id="40" name="CombineSegments_209662" type="CombineSegments" version="extension">
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
<port id="3" precision="I32">
<dim>1</dim>
</port>
</input>
<output>
<port id="4" precision="I32">
<dim>-1</dim>
</port>
<port id="5" precision="I32">
<dim>-1</dim>
</port>
<port id="6" precision="I32">
<dim>-1</dim>
</port>
<port id="7" precision="I32">
<dim>-1</dim>
</port>
<port id="8" precision="I32">
<dim>-1</dim>
</port>
<port id="9" precision="I32">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="41" name="Subtract_209663" type="Subtract" version="opset1">
<data auto_broadcast="numpy" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
</input>
<output>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="42" name="Constant_209664" type="Const" version="opset1">
<data element_type="i32" shape="" offset="17270324" size="4" />
<output>
<port id="0" precision="I32" />
</output>
</layer>
<layer id="43" name="ReduceMax_209665" type="ReduceMax" version="opset1">
<data keep_dims="false" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32" />
</input>
<output>
<port id="2" precision="I32" />
</output>
</layer>
<layer id="44" name="Constant_209666" type="Const" version="opset1">
<data element_type="i32" shape="" offset="17270324" size="4" />
<output>
<port id="0" precision="I32" />
</output>
</layer>
<layer id="45" name="RaggedToDense_209667" type="RaggedToDense" version="extension">
<data pad_right="false" m_pad_max_length="false" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
</port>
<port id="1" precision="I32">
<dim>-1</dim>
</port>
<port id="2" precision="I32">
<dim>-1</dim>
</port>
<port id="3" precision="I32" />
<port id="4" precision="I32" />
</input>
<output>
<port id="5" precision="I32">
<dim>-1</dim>
<dim>-1</dim>
</port>
<port id="6" precision="BOOL">
<dim>-1</dim>
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="46" name="Convert_209668" type="Convert" version="opset1">
<data destination_type="i32" />
<input>
<port id="0" precision="BOOL">
<dim>-1</dim>
<dim>-1</dim>
</port>
</input>
<output>
<port id="1" precision="I32">
<dim>-1</dim>
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="47" name="Convert_209668.0" type="Convert" version="opset1">
<data destination_type="i64" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
<dim>-1</dim>
</port>
</input>
<output>
<port id="1" precision="I64" names="attention_mask">
<dim>-1</dim>
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="48" name="RaggedToDense_209667.0" type="Convert" version="opset1">
<data destination_type="i64" />
<input>
<port id="0" precision="I32">
<dim>-1</dim>
<dim>-1</dim>
</port>
</input>
<output>
<port id="1" precision="I64" names="input_ids">
<dim>-1</dim>
<dim>-1</dim>
</port>
</output>
</layer>
<layer id="49" name="Result_209671" type="Result" version="opset1" output_names="input_ids">
<input>
<port id="0" precision="I64">
<dim>-1</dim>
<dim>-1</dim>
</port>
</input>
</layer>
<layer id="50" name="Result_209673" type="Result" version="opset1" output_names="attention_mask">
<input>
<port id="0" precision="I64">
<dim>-1</dim>
<dim>-1</dim>
</port>
</input>
</layer>
</layers>
<edges>
<edge from-layer="0" from-port="0" to-layer="2" to-port="0" />
<edge from-layer="1" from-port="0" to-layer="8" to-port="0" />
<edge from-layer="2" from-port="1" to-layer="3" to-port="0" />
<edge from-layer="2" from-port="3" to-layer="15" to-port="4" />
<edge from-layer="2" from-port="2" to-layer="15" to-port="3" />
<edge from-layer="2" from-port="1" to-layer="15" to-port="2" />
<edge from-layer="3" from-port="1" to-layer="6" to-port="0" />
<edge from-layer="4" from-port="0" to-layer="6" to-port="1" />
<edge from-layer="5" from-port="0" to-layer="6" to-port="2" />
<edge from-layer="6" from-port="3" to-layer="11" to-port="0" />
<edge from-layer="6" from-port="3" to-layer="8" to-port="1" />
<edge from-layer="7" from-port="0" to-layer="8" to-port="2" />
<edge from-layer="8" from-port="3" to-layer="15" to-port="0" />
<edge from-layer="9" from-port="0" to-layer="13" to-port="0" />
<edge from-layer="10" from-port="0" to-layer="11" to-port="1" />
<edge from-layer="11" from-port="2" to-layer="13" to-port="1" />
<edge from-layer="12" from-port="0" to-layer="13" to-port="2" />
<edge from-layer="13" from-port="3" to-layer="15" to-port="1" />
<edge from-layer="14" from-port="0" to-layer="15" to-port="5" />
<edge from-layer="15" from-port="11" to-layer="18" to-port="3" />
<edge from-layer="15" from-port="7" to-layer="20" to-port="1" />
<edge from-layer="15" from-port="6" to-layer="20" to-port="0" />
<edge from-layer="15" from-port="10" to-layer="18" to-port="2" />
<edge from-layer="15" from-port="9" to-layer="18" to-port="1" />
<edge from-layer="15" from-port="8" to-layer="18" to-port="0" />
<edge from-layer="16" from-port="0" to-layer="18" to-port="4" />
<edge from-layer="17" from-port="0" to-layer="18" to-port="5" />
<edge from-layer="18" from-port="6" to-layer="20" to-port="2" />
<edge from-layer="18" from-port="7" to-layer="20" to-port="3" />
<edge from-layer="18" from-port="8" to-layer="20" to-port="4" />
<edge from-layer="18" from-port="9" to-layer="20" to-port="5" />
<edge from-layer="19" from-port="0" to-layer="20" to-port="6" />
<edge from-layer="20" from-port="7" to-layer="34" to-port="0" />
<edge from-layer="20" from-port="8" to-layer="34" to-port="1" />
<edge from-layer="20" from-port="9" to-layer="34" to-port="2" />
<edge from-layer="20" from-port="10" to-layer="34" to-port="3" />
<edge from-layer="20" from-port="11" to-layer="34" to-port="4" />
<edge from-layer="21" from-port="0" to-layer="34" to-port="5" />
<edge from-layer="22" from-port="0" to-layer="34" to-port="6" />
<edge from-layer="23" from-port="0" to-layer="34" to-port="7" />
<edge from-layer="24" from-port="0" to-layer="34" to-port="8" />
<edge from-layer="25" from-port="0" to-layer="34" to-port="9" />
<edge from-layer="26" from-port="0" to-layer="34" to-port="10" />
<edge from-layer="27" from-port="0" to-layer="34" to-port="11" />
<edge from-layer="28" from-port="0" to-layer="34" to-port="12" />
<edge from-layer="29" from-port="0" to-layer="34" to-port="13" />
<edge from-layer="30" from-port="0" to-layer="34" to-port="14" />
<edge from-layer="31" from-port="0" to-layer="34" to-port="15" />
<edge from-layer="32" from-port="0" to-layer="34" to-port="16" />
<edge from-layer="33" from-port="0" to-layer="34" to-port="17" />
<edge from-layer="34" from-port="18" to-layer="38" to-port="0" />
<edge from-layer="34" from-port="19" to-layer="38" to-port="1" />
<edge from-layer="34" from-port="20" to-layer="38" to-port="2" />
<edge from-layer="35" from-port="0" to-layer="38" to-port="3" />
<edge from-layer="36" from-port="0" to-layer="38" to-port="4" />
<edge from-layer="37" from-port="0" to-layer="38" to-port="5" />
<edge from-layer="38" from-port="6" to-layer="40" to-port="0" />
<edge from-layer="38" from-port="8" to-layer="40" to-port="2" />
<edge from-layer="38" from-port="7" to-layer="40" to-port="1" />
<edge from-layer="39" from-port="0" to-layer="40" to-port="3" />
<edge from-layer="40" from-port="5" to-layer="41" to-port="0" />
<edge from-layer="40" from-port="4" to-layer="41" to-port="1" />
<edge from-layer="40" from-port="4" to-layer="45" to-port="0" />
<edge from-layer="40" from-port="5" to-layer="45" to-port="1" />
<edge from-layer="40" from-port="6" to-layer="45" to-port="2" />
<edge from-layer="41" from-port="2" to-layer="43" to-port="0" />
<edge from-layer="42" from-port="0" to-layer="43" to-port="1" />
<edge from-layer="43" from-port="2" to-layer="45" to-port="3" />
<edge from-layer="44" from-port="0" to-layer="45" to-port="4" />
<edge from-layer="45" from-port="6" to-layer="46" to-port="0" />
<edge from-layer="45" from-port="5" to-layer="48" to-port="0" />
<edge from-layer="46" from-port="1" to-layer="47" to-port="0" />
<edge from-layer="47" from-port="1" to-layer="50" to-port="0" />
<edge from-layer="48" from-port="1" to-layer="49" to-port="0" />
</edges>
<rt_info>
<info name="OpenVINO Runtime" value="2026.2.1-21919-ede283a88e3-releases/2026/2" />
<add_attention_mask value="True" />
<add_prefix_space />
<add_special_tokens value="True" />
<bos_token_id value="2" />
<chat_template value="{%- macro format_parameters(properties, required, filter_keys=false) -%}&#10; {%- set standard_keys = ['description', 'type', 'properties', 'required', 'nullable'] -%}&#10; {%- set ns = namespace(found_first=false) -%}&#10; {%- for key, value in properties | dictsort -%}&#10; {%- set add_comma = false -%}&#10; {%- if not filter_keys or key not in standard_keys -%}&#10; {%- if ns.found_first %},{% endif -%}&#10; {%- set ns.found_first = true -%}&#10; {{ key }}:{&#10; {%- if value['description'] -%}&#10; description:&lt;|&quot;|>{{ value['description'] }}&lt;|&quot;|>&#10; {%- set add_comma = true -%}&#10; {%- endif -%}&#10; {%- if value['type'] | upper == 'STRING' -%}&#10; {%- if value['enum'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; enum:{{ format_argument(value['enum']) }}&#10; {%- endif -%}&#10; {%- elif value['type'] | upper == 'ARRAY' -%}&#10; {%- if value['items'] is mapping and value['items'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; items:{&#10; {%- set ns_items = namespace(found_first=false) -%}&#10; {%- for item_key, item_value in value['items'] | dictsort -%}&#10; {%- if item_value is not none -%}&#10; {%- if ns_items.found_first %},{% endif -%}&#10; {%- set ns_items.found_first = true -%}&#10; {%- if item_key == 'properties' -%}&#10; properties:{&#10; {%- if item_value is mapping -%}&#10; {{- format_parameters(item_value, value['items']['required'] | default([])) -}}&#10; {%- endif -%}&#10; }&#10; {%- elif item_key == 'required' -%}&#10; required:[&#10; {%- for req_item in item_value -%}&#10; &lt;|&quot;|>{{- req_item -}}&lt;|&quot;|>&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; ]&#10; {%- elif item_key == 'type' -%}&#10; {%- if item_value is string -%}&#10; type:{{ format_argument(item_value | upper) }}&#10; {%- else -%}&#10; type:{{ format_argument(item_value | map('upper') | list) }}&#10; {%- endif -%}&#10; {%- else -%}&#10; {{ item_key }}:{{ format_argument(item_value) }}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; }&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if value['nullable'] %}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; nullable:true&#10; {%- endif -%}&#10; {%- if value['type'] | upper == 'OBJECT' -%}&#10; {%- if value['properties'] is defined and value['properties'] is mapping -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; properties:{&#10; {{- format_parameters(value['properties'], value['required'] | default([])) -}}&#10; }&#10; {%- elif value is mapping -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; properties:{&#10; {{- format_parameters(value, value['required'] | default([]), filter_keys=true) -}}&#10; }&#10; {%- endif -%}&#10; {%- if value['required'] -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; required:[&#10; {%- for item in value['required'] | default([]) -%}&#10; &lt;|&quot;|>{{- item -}}&lt;|&quot;|>&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; ]&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if add_comma %},{%- else -%} {%- set add_comma = true -%} {% endif -%}&#10; type:&lt;|&quot;|>{{ value['type'] | upper }}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endfor -%}&#10;{%- endmacro -%}&#10;{%- macro format_function_declaration(tool_data) -%}&#10; declaration:{{- tool_data['function']['name'] -}}{description:&lt;|&quot;|>{{- tool_data['function']['description'] -}}&lt;|&quot;|>&#10; {%- set params = tool_data['function']['parameters'] -%}&#10; {%- if params -%}&#10; ,parameters:{&#10; {%- if params['properties'] -%}&#10; properties:{ {{- format_parameters(params['properties'], params['required']) -}} },&#10; {%- endif -%}&#10; {%- if params['required'] -%}&#10; required:[&#10; {%- for item in params['required'] -%}&#10; &lt;|&quot;|>{{- item -}}&lt;|&quot;|>&#10; {{- ',' if not loop.last -}}&#10; {%- endfor -%}&#10; ],&#10; {%- endif -%}&#10; {%- if params['type'] -%}&#10; type:&lt;|&quot;|>{{- params['type'] | upper -}}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- if 'response' in tool_data['function'] -%}&#10; {%- set response_declaration = tool_data['function']['response'] -%}&#10; ,response:{&#10; {%- if response_declaration['description'] -%}&#10; description:&lt;|&quot;|>{{- response_declaration['description'] -}}&lt;|&quot;|>,&#10; {%- endif -%}&#10; {%- if response_declaration['type'] | upper == 'OBJECT' -%}&#10; type:&lt;|&quot;|>{{- response_declaration['type'] | upper -}}&lt;|&quot;|>}&#10; {%- endif -%}&#10; {%- endif -%}&#10; }&#10;{%- endmacro -%}&#10;{%- macro format_argument(argument, escape_keys=True) -%}&#10; {%- if argument is string -%}&#10; {{- '&lt;|&quot;|>' + argument + '&lt;|&quot;|>' -}}&#10; {%- elif argument is boolean -%}&#10; {{- 'true' if argument else 'false' -}}&#10; {%- elif argument is mapping -%}&#10; {{- '{' -}}&#10; {%- set ns = namespace(found_first=false) -%}&#10; {%- for key, value in argument | dictsort -%}&#10; {%- if ns.found_first %},{% endif -%}&#10; {%- set ns.found_first = true -%}&#10; {%- if escape_keys -%}&#10; {{- '&lt;|&quot;|>' + key + '&lt;|&quot;|>' -}}&#10; {%- else -%}&#10; {{- key -}}&#10; {%- endif -%}&#10; :{{- format_argument(value, escape_keys=escape_keys) -}}&#10; {%- endfor -%}&#10; {{- '}' -}}&#10; {%- elif argument is sequence -%}&#10; {{- '[' -}}&#10; {%- for item in argument -%}&#10; {{- format_argument(item, escape_keys=escape_keys) -}}&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; {{- ']' -}}&#10; {%- else -%}&#10; {{- argument -}}&#10; {%- endif -%}&#10;{%- endmacro -%}&#10;{%- macro strip_thinking(text) -%}&#10; {%- set ns = namespace(result='') -%}&#10; {%- for part in text.split('&lt;channel|>') -%}&#10; {%- if '&lt;|channel>' in part -%}&#10; {%- set ns.result = ns.result + part.split('&lt;|channel>')[0] -%}&#10; {%- else -%}&#10; {%- set ns.result = ns.result + part -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {{- ns.result | trim -}}&#10;{%- endmacro -%}&#10;&#10;{%- macro format_tool_response_block(tool_name, response) -%}&#10; {{- '&lt;|tool_response>' -}}&#10; {%- if response is mapping -%}&#10; {{- 'response:' + tool_name + '{' -}}&#10; {%- for key, value in response | dictsort -%}&#10; {{- key -}}:{{- format_argument(value, escape_keys=False) -}}&#10; {%- if not loop.last %},{% endif -%}&#10; {%- endfor -%}&#10; {{- '}' -}}&#10; {%- else -%}&#10; {{- 'response:' + tool_name + '{value:' + format_argument(response, escape_keys=False) + '}' -}}&#10; {%- endif -%}&#10; {{- '&lt;tool_response|>' -}}&#10;{%- endmacro -%}&#10;&#10;{%- set ns = namespace(prev_message_type=None) -%}&#10;{%- set loop_messages = messages -%}&#10;{{- bos_token -}}&#10;{#- Handle System/Tool Definitions Block -#}&#10;{%- if (enable_thinking is defined and enable_thinking) or tools or messages[0]['role'] in ['system', 'developer'] -%}&#10; {{- '&lt;|turn>system\n' -}}&#10; {#- Inject Thinking token at the very top of the FIRST system turn -#}&#10; {%- if enable_thinking is defined and enable_thinking -%}&#10; {{- '&lt;|think|>\n' -}}&#10; {%- set ns.prev_message_type = 'think' -%}&#10; {%- endif -%}&#10; {%- if messages[0]['role'] in ['system', 'developer'] -%}&#10; {%- if messages[0]['content'] is string -%}&#10; {{- messages[0]['content'] | trim -}}&#10; {%- elif messages[0]['content'] is sequence -%}&#10; {%- for item in messages[0]['content'] -%}&#10; {{- item['text'] | trim + ' '-}}&#10; {%- endfor -%}&#10; {%- endif -%}&#10; {%- set loop_messages = messages[1:] -%}&#10; {%- endif -%}&#10; {%- if tools -%}&#10; {%- for tool in tools %}&#10; {{- '&lt;|tool>' -}}&#10; {{- format_function_declaration(tool) | trim -}}&#10; {{- '&lt;tool|>' -}}&#10; {%- endfor %}&#10; {%- set ns.prev_message_type = 'tool' -%}&#10; {%- endif -%}&#10; {{- '&lt;turn|>\n' -}}&#10;{%- endif %}&#10;&#10;{#- Pre-scan: find last user message index for reasoning guard -#}&#10;{%- set ns_turn = namespace(last_user_idx=-1) -%}&#10;{%- for i in range(loop_messages | length) -%}&#10; {%- if loop_messages[i]['role'] == 'user' -%}&#10; {%- set ns_turn.last_user_idx = i -%}&#10; {%- endif -%}&#10;{%- endfor -%}&#10;&#10;{#- Loop through messages -#}&#10;{%- for message in loop_messages -%}&#10; {%- if message['role'] != 'tool' -%}&#10; {%- set ns.prev_message_type = None -%}&#10; {%- set role = 'model' if message['role'] == 'assistant' else message['role'] -%}&#10; {#- Detect continuation: suppress duplicate &lt;|turn>model when previous non-tool message was also assistant -#}&#10; {%- set prev_nt = namespace(role=None, found=false) -%}&#10; {%- if loop.index0 > 0 -%}&#10; {%- for j in range(loop.index0 - 1, -1, -1) -%}&#10; {%- if not prev_nt.found -%}&#10; {%- if loop_messages[j]['role'] != 'tool' -%}&#10; {%- set prev_nt.role = loop_messages[j]['role'] -%}&#10; {%- set prev_nt.found = true -%}&#10; {%- endif -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10; {%- set continue_same_model_turn = (role == 'model' and prev_nt.role == 'assistant') -%}&#10; {%- if not continue_same_model_turn -%}&#10; {{- '&lt;|turn>' + role + '\n' }}&#10; {%- endif -%}&#10;&#10; {#- Render reasoning/reasoning_content as thinking channel -#}&#10; {%- set thinking_text = message.get('reasoning') or message.get('reasoning_content') -%}&#10; {%- if thinking_text and loop.index0 > ns_turn.last_user_idx and message.get('tool_calls') -%}&#10; {{- '&lt;|channel>thought\n' + thinking_text + '\n&lt;channel|>' -}}&#10; {%- endif -%}&#10;&#10; {%- if message['tool_calls'] -%}&#10; {%- for tool_call in message['tool_calls'] -%}&#10; {%- set function = tool_call['function'] -%}&#10; {{- '&lt;|tool_call>call:' + function['name'] + '{' -}}&#10; {%- if function['arguments'] is mapping -%}&#10; {%- set ns_args = namespace(found_first=false) -%}&#10; {%- for key, value in function['arguments'] | dictsort -%}&#10; {%- if ns_args.found_first %},{% endif -%}&#10; {%- set ns_args.found_first = true -%}&#10; {{- key -}}:{{- format_argument(value, escape_keys=False) -}}&#10; {%- endfor -%}&#10; {%- elif function['arguments'] is string -%}&#10; {{- function['arguments'] -}}&#10; {%- endif -%}&#10; {{- '}&lt;tool_call|>' -}}&#10; {%- endfor -%}&#10; {%- set ns.prev_message_type = 'tool_call' -%}&#10; {%- endif -%}&#10;&#10; {%- set ns_tr_out = namespace(flag=false) -%}&#10; {%- if message.get('tool_responses') -%}&#10; {#- Legacy: tool_responses embedded on the assistant message (Google/Gemma native) -#}&#10; {%- for tool_response in message['tool_responses'] -%}&#10; {{- format_tool_response_block(tool_response['name'] | default('unknown'), tool_response['response']) -}}&#10; {%- set ns_tr_out.flag = true -%}&#10; {%- set ns.prev_message_type = 'tool_response' -%}&#10; {%- endfor -%}&#10; {%- elif message.get('tool_calls') -%}&#10; {#- OpenAI Chat Completions: forward-scan consecutive role:tool messages -#}&#10; {%- set ns_tool_scan = namespace(stopped=false) -%}&#10; {%- for k in range(loop.index0 + 1, loop_messages | length) -%}&#10; {%- if ns_tool_scan.stopped -%}&#10; {%- elif loop_messages[k]['role'] != 'tool' -%}&#10; {%- set ns_tool_scan.stopped = true -%}&#10; {%- else -%}&#10; {%- set follow = loop_messages[k] -%}&#10; {#- Resolve tool_call_id to function name -#}&#10; {%- set ns_tname = namespace(name=follow.get('name') | default('unknown')) -%}&#10; {%- for tc in message['tool_calls'] -%}&#10; {%- if tc.get('id') == follow.get('tool_call_id') -%}&#10; {%- set ns_tname.name = tc['function']['name'] -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {#- Handle content as string or content-parts array -#}&#10; {%- set tool_body = follow.get('content') -%}&#10; {%- if tool_body is string -%}&#10; {{- format_tool_response_block(ns_tname.name, tool_body) -}}&#10; {%- elif tool_body is sequence and tool_body is not string -%}&#10; {%- set ns_txt = namespace(s='') -%}&#10; {%- for part in tool_body -%}&#10; {%- if part.get('type') == 'text' -%}&#10; {%- set ns_txt.s = ns_txt.s + (part.get('text') | default('')) -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {{- format_tool_response_block(ns_tname.name, ns_txt.s) -}}&#10; {%- for part in tool_body -%}&#10; {%- if part.get('type') == 'image' -%}&#10; {{- '&lt;|image|>' -}}&#10; {%- elif part.get('type') == 'audio' -%}&#10; {{- '&lt;|audio|>' -}}&#10; {%- elif part.get('type') == 'video' -%}&#10; {{- '&lt;|video|>' -}}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- else -%}&#10; {{- format_tool_response_block(ns_tname.name, tool_body) -}}&#10; {%- endif -%}&#10; {%- set ns_tr_out.flag = true -%}&#10; {%- set ns.prev_message_type = 'tool_response' -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10;&#10; {%- set captured_content -%}&#10; {%- if message['content'] is string -%}&#10; {%- if role == 'model' -%}&#10; {{- strip_thinking(message['content']) -}}&#10; {%- else -%}&#10; {{- message['content'] | trim -}}&#10; {%- endif -%}&#10; {%- elif message['content'] is sequence -%}&#10; {%- for item in message['content'] -%}&#10; {%- if item['type'] == 'text' -%}&#10; {%- if role == 'model' -%}&#10; {{- strip_thinking(item['text']) -}}&#10; {%- else -%}&#10; {{- item['text'] | trim -}}&#10; {%- endif -%}&#10; {%- elif item['type'] == 'image' -%}&#10; {{- '&lt;|image|>' -}}&#10; {%- set ns.prev_message_type = 'image' -%}&#10; {%- elif item['type'] == 'audio' -%}&#10; {{- '&lt;|audio|>' -}}&#10; {%- set ns.prev_message_type = 'audio' -%}&#10; {%- elif item['type'] == 'video' -%}&#10; {{- '&lt;|video|>' -}}&#10; {%- set ns.prev_message_type = 'video' -%}&#10; {%- endif -%}&#10; {%- endfor -%}&#10; {%- endif -%}&#10; {%- endset -%}&#10;&#10; {{- captured_content -}}&#10; {%- set has_content = captured_content | trim | length > 0 -%}&#10;&#10; {%- if ns.prev_message_type == 'tool_call' and not ns_tr_out.flag -%}&#10; {{- '&lt;|tool_response>' -}}&#10; {%- elif not (ns_tr_out.flag and not has_content) -%}&#10; {{- '&lt;turn|>\n' -}}&#10; {%- endif -%}&#10; {%- endif -%}&#10;{%- endfor -%}&#10;&#10;{%- if add_generation_prompt -%}&#10; {%- if ns.prev_message_type != 'tool_response' and ns.prev_message_type != 'tool_call' -%}&#10; {{- '&lt;|turn>model\n' -}}&#10; {%- endif -%}&#10;{%- endif -%}" />
<clean_up_tokenization_spaces />
<detokenizer_input_type value="i64" />
<eos_token_id value="1" />
<handle_special_tokens_with_re />
<max_length />
<number_of_inputs value="1" />
<openvino_tokenizers_version value="2026.2.1.0-682-6da74a793f0" />
<openvino_version value="2026.2.1-21919-ede283a88e3-releases/2026/2" />
<original_post_processor_template value="{&quot;type&quot;: &quot;TemplateProcessing&quot;, &quot;single&quot;: [{&quot;Sequence&quot;: {&quot;id&quot;: &quot;A&quot;, &quot;type_id&quot;: 0}}], &quot;pair&quot;: [{&quot;Sequence&quot;: {&quot;id&quot;: &quot;A&quot;, &quot;type_id&quot;: 0}}, {&quot;Sequence&quot;: {&quot;id&quot;: &quot;B&quot;, &quot;type_id&quot;: 1}}], &quot;special_tokens&quot;: {}}" />
<original_tokenizer_class value="&lt;class 'transformers.models.gemma.tokenization_gemma.GemmaTokenizer'>" />
<pad_token_id value="0" />
<processed_post_processor_template value="{&quot;single&quot;: {&quot;ids&quot;: [-1], &quot;type_ids&quot;: [0]}, &quot;pair&quot;: {&quot;ids&quot;: [-1, -2], &quot;type_ids&quot;: [0, 1]}}" />
<skip_special_tokens value="True" />
<streaming_detokenizer value="False" />
<tokenizer_output_type value="i64" />
<tokenizers_version value="0.22.2" />
<transformers_version value="5.5.0" />
<use_max_padding value="False" />
<use_sentencepiece_backend value="False" />
<utf8_replace_mode value="replace" />
<with_detokenizer value="True" />
</rt_info>
</net>