chat_template system

#2
by pipilok - opened

похоже темплейт чата не учитывает системную подсказку. немного обновил, не знаю на сколько это правильно, но кажется сработало в некоторых тестах

"chat_template": "<s>{%- set names = {'assistant': ' Ассистент:', 'user': ' Пользователь:', 'system': 'Система:'} %}\n{%- set tools_prefix = 'Тебе доступны следующие функции:' %}\n\n{%- macro __render_tool(tool) %}\n    {%- set name = tool.function.name %}\n    {%- set description = tool.function.description|default('') %}\n    {%- set parameters = tool.function.parameters|tojson %}\n    {{- '\\n' }}function {{ '{' }}'name':'{{ name }}',\n    {%- if tool.description %}'description':'{{ description }}',{% endif %}\n'parameters':{{ parameters }}\n    {{- '}' }}\n{%- endmacro %}\n\n{%- macro __render_tools(tools) %}\n    {{- tools_prefix }}\n    {%- for tool in tools %}\n        {{- __render_tool(tool) }}\n    {%- endfor %}\n    {{- '\\n\\n' }}\n{%- endmacro %}\n\n{%- macro __render_tool_message(message) %}\n    {{- '\\n\\nРезультат вызова' }} {{ message.name }}: {{ message.content }} {{ '\\n\\n' }}\n{%- endmacro %}\n\n{%- macro __render_user_message(message) %}\n{{ names.user }} {{ message.content + '\\n\\n' }}\n{%- endmacro %}\n\n{%- macro __render_assistant_message(message) %}\n    {{- names.assistant }}\n    {%- set call = message['function_call'] %}\n    {%- if call %}\n        {{- '\\n[TOOL_CALL_START]' }}{{ call.name }}{{ '\\n' }}{{ call.arguments|tojson }}\n    {%- else %}\n        {{- ' ' + message.content + '\\n\\n' }}\n    {%- endif %}\n{%- endmacro %}\n\n{%- macro __render_system_message(message) %}\nСистема: {{ message.content + '\\n\\n' }}\n{%- endmacro %}\n\n{%- if not add_generation_prompt is defined %}\n{%- set add_generation_prompt = false %}\n{%- endif %}\n\n{%- for message in messages %}\n    {%- if message['role'] == 'system' %}\n        {{- __render_system_message(message) }}\n    {%- endif %}\n    {%- if message['role'] == 'user' %}\n        {{- __render_user_message(message) }}\n    {%- endif %}\n    {%- if message.role == 'assistant' and not loop.last %}\n        {{- __render_assistant_message(message) }}\n    {%- endif %}\n    {%- if message.role == 'tool' %}\n        {{- __render_tool_message(message) }}\n    {%- endif %}\n    {%- if loop.last %}\n        {{- ' Ассистент:[SEP]' }}\n    {%- endif %}\n{%- endfor %}\n",
{%- set names = {'assistant': ' Ассистент:', 'user': ' Пользователь:', 'system': 'Система:'} %}
{%- 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 %}

{%- 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 %}

{%- macro __render_system_message(message) %}
Система: {{ message.content + '\n\n' }}
{%- endmacro %}

{%- if not add_generation_prompt is defined %}
{%- set add_generation_prompt = false %}
{%- endif %}

{%- for message in messages %}
    {%- if message['role'] == 'system' %}
        {{- __render_system_message(message) }}
    {%- endif %}
    {%- 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 %}
        {{- ' Ассистент:[SEP]' }}
    {%- endif %}
{%- endfor %}

image.png

Yandex org

Привет! В нашем обучении мы не использовали system prompt. Модель, скорее всего, будет его понимать, но мы тут не можем дать гарантию.

Привет! В нашем обучении мы не использовали system prompt. Модель, скорее всего, будет его понимать, но мы тут не можем дать гарантию.

пол дня гоняю модель по всякому, вроде хорошо вспринимает, следует всему что указано в system prompt с этим темплейтом, без отклонений.

Привет! В нашем обучении мы не использовали system prompt. Модель, скорее всего, будет его понимать, но мы тут не можем дать гарантию.

пол дня гоняю модель по всякому, вроде хорошо вспринимает, следует всему что указано в system prompt с этим темплейтом, без отклонений.

Подскажите куда и как вы запустили темплейт? я смог только в user добавлять системный промт, но это не совсем корректно.

Your need to confirm your account before you can post a new comment.

Sign up or log in to comment