23 lines
1.0 KiB
Python
23 lines
1.0 KiB
Python
# Copyright (c) ModelScope Contributors. All rights reserved.
|
|
from swift.template import TemplateMeta
|
|
|
|
|
|
def test_replace_system_preserves_non_string_elements():
|
|
"""_replace_system must not drop list elements like ['bos_token_id'].
|
|
|
|
Templates such as ziya, bluelm and emu3_chat use
|
|
``prefix=[['bos_token_id'], '{{SYSTEM}}']``. When no system message is
|
|
provided the prefix is produced by _replace_system, which should keep every
|
|
non-string element intact and only strip the placeholder from strings.
|
|
"""
|
|
meta = TemplateMeta(
|
|
template_type='_test_replace_system_bug',
|
|
prefix=[['bos_token_id'], '{{SYSTEM}}'],
|
|
prompt=['{{QUERY}}'],
|
|
chat_sep=['\n'],
|
|
)
|
|
# __post_init__ moves prefix to system_prefix and builds a no-system prefix
|
|
# via _replace_system. The list element must survive.
|
|
assert any(isinstance(p, list) for p in meta.prefix), (f'_replace_system dropped the bos_token_id list; '
|
|
f'meta.prefix={meta.prefix!r}')
|