mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2025-12-09 22:55:51 +08:00
39 lines
1.5 KiB
Django/Jinja
39 lines
1.5 KiB
Django/Jinja
{%- if messages[0]["role"] == "system" %}
|
|
{%- set system_message = messages[0]["content"] %}
|
|
{%- set loop_messages = messages[1:] %}
|
|
{%- else %}
|
|
{%- set loop_messages = messages %}
|
|
{%- endif %}
|
|
|
|
{{- bos_token }}
|
|
{%- for message in loop_messages %}
|
|
{%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}
|
|
{{- raise_exception('After the optional system message, conversation roles must alternate user/assistant/user/assistant/...') }}
|
|
{%- endif %}
|
|
{%- if message["role"] == "user" %}
|
|
{%- if loop.last and system_message is defined %}
|
|
{{- "[INST]" + system_message + "\n" }}
|
|
{%- else %}
|
|
{{- "[INST]" }}
|
|
{%- endif %}
|
|
{%- if message["content"] is not string %}
|
|
{%- for chunk in message["content"] %}
|
|
{%- if chunk["type"] == "text" %}
|
|
{{- chunk["text"] }}
|
|
{%- elif chunk["type"] == "image" %}
|
|
{{- "[IMG]" }}
|
|
{%- else %}
|
|
{{- raise_exception("Unrecognized content type!") }}
|
|
{%- endif %}
|
|
{%- endfor %}
|
|
{%- else %}
|
|
{{- message["content"] }}
|
|
{%- endif %}
|
|
{{- "[/INST]" }}
|
|
{%- elif message["role"] == "assistant" %}
|
|
{{- message["content"] + eos_token}}
|
|
{%- else %}
|
|
{{- raise_exception("Only user and assistant roles are supported, with the exception of an initial optional system message!") }}
|
|
{%- endif %}
|
|
{%- endfor %}
|