| s = ''' | |
| <s>{%- set names = {'assistant': ' Ассистент:', 'user': ' Пользователь:'} %} | |
| {%- set tools_prefix = 'Тебе доступны следующие функции:' %} | |
| {%- macro __render_tool(tool) %} | |
| {%- set name = tool.function.name %} | |
| {%- set description = tool.function.description|default('') %} | |
| {%- set parameters = tool.function.parameters|tojson %} | |
| {{- '\n' }}function {{ '{' }}'name':'{{ name }}', | |
| {%- if tool.description %}'description':'{{ description }}',{% endif %} | |
| 'parameters':{{ parameters }} | |
| {{- '}' }} | |
| {%- endmacro %} | |
| {%- macro __render_tools(tools) %} | |
| {{- tools_prefix }} | |
| {%- for tool in tools %} | |
| {{- __render_tool(tool) }} | |
| {%- endfor %} | |
| {{- '\n\n' }} | |
| {%- endmacro %} | |
| {%- macro __render_tool_message(message) %} | |
| {{- '\n\nРезультат вызова' }} {{ message.name }}: {{ message.content }} {{ '\n\n' }} | |
| {%- endmacro %} | |
| {%- if tools -%} | |
| {{- __render_tools(tools) }} | |
| {%- endif -%} | |
| {%- macro __render_user_message(message) %} | |
| {{ names.user }} {{ message.content + '\n\n' }} | |
| {%- endmacro %} | |
| {%- macro __render_assistant_message(message) %} | |
| {{- names.assistant }} | |
| {%- set call = message['function_call'] %} | |
| {%- if call %} | |
| {{- '\n[TOOL_CALL_START]' }}{{ call.name }}{{ '\n' }}{{ call.arguments|tojson }} | |
| {%- else %} | |
| {{- ' ' + message.content + '\n\n' }} | |
| {%- endif %} | |
| {%- endmacro %} | |
| {%- for message in messages %} | |
| {%- if message['role'] == 'user' %} | |
| {{- __render_user_message(message) }} | |
| {%- endif %} | |
| {%- if message.role == 'assistant' and not loop.last %} | |
| {{- __render_assistant_message(message) }} | |
| {%- endif %} | |
| {%- if message.role == 'tool' %} | |
| {{- __render_tool_message(message) }} | |
| {%- endif %} | |
| {%- if loop.last and add_generation_prompt %} | |
| {{- ' Ассистент:[SEP]' }} | |
| {%- endif %} | |
| {%- endfor %} | |
| ''' | |
| from transformers import AutoTokenizer | |
| tokenizer = AutoTokenizer.from_pretrained("yandex/YandexGPT-5-Lite-8B-instruct") | |
| tokenizer.chat_template = s.rstrip() | |
| tokenizer.save_pretrained(".") |