Source code for lmflow.utils.conversation_template

#!/usr/bin/env python
# coding=utf-8
# Copyright 2024 Statistics and Machine Learning Research Group. All rights reserved.
import logging

from lmflow.utils.versioning import is_package_version_at_least

from .base import EMPTY_TEMPLATE, EMPTY_NO_SPECIAL_TOKENS_TEMPLATE, ConversationTemplate, ConversationTemplateForTool
from .chatglm import CHATGLM3_TEMPLATE
from .chatml import CHATML_TEMPLATE
from .deepseek import (
    DEEPSEEK_V2_TEMPLATE,
    DEEPSEEK_V3_TEMPLATE,
    DEEPSEEK_R1_TEMPLATE,
    DEEPSEEK_R1_DISTILL_TEMPLATE
)
from .gemma import GEMMA_TEMPLATE
from .hymba import HYMBA_TEMPLATE
from .internlm import INTERNLM2_TEMPLATE
from .llama import LLAMA2_TEMPLATE, LLAMA3_TEMPLATE, LLAMA3_TEMPLATE_FOR_TOOL
from .phi import PHI3_TEMPLATE
from .qwen import (
    QWEN2_TEMPLATE,
    QWEN2_TEMPLATE_FOR_TOOL,
    QWEN2_5_TEMPLATE,
    QWEN2_5_1M_TEMPLATE,
    QWEN2_5_MATH_TEMPLATE,
    QWEN_QWQ_TEMPLATE
)
from .yi import YI1_5_TEMPLATE
from .zephyr import ZEPHYR_TEMPLATE


[docs] logger = logging.getLogger(__name__)
[docs] PRESET_TEMPLATES = { 'chatglm3': CHATGLM3_TEMPLATE, 'chatml': CHATML_TEMPLATE, 'deepseek': DEEPSEEK_V2_TEMPLATE, 'deepseek_v2': DEEPSEEK_V2_TEMPLATE, 'disable': EMPTY_TEMPLATE, 'empty': EMPTY_TEMPLATE, 'empty_no_special_tokens': EMPTY_NO_SPECIAL_TOKENS_TEMPLATE, 'gemma': GEMMA_TEMPLATE, 'hymba': HYMBA_TEMPLATE, 'internlm2': INTERNLM2_TEMPLATE, 'llama2': LLAMA2_TEMPLATE, 'llama3': LLAMA3_TEMPLATE, 'llama3_for_tool': LLAMA3_TEMPLATE_FOR_TOOL, 'phi3': PHI3_TEMPLATE, 'qwen2': QWEN2_TEMPLATE, 'qwen2_for_tool': QWEN2_TEMPLATE_FOR_TOOL, 'yi': CHATML_TEMPLATE, 'yi1_5': YI1_5_TEMPLATE, 'zephyr': ZEPHYR_TEMPLATE }
[docs] JINJA_TEMPLATES = { 'deepseek_r1': DEEPSEEK_R1_TEMPLATE, 'deepseek_r1_distill': DEEPSEEK_R1_DISTILL_TEMPLATE, 'deepseek_v3': DEEPSEEK_V3_TEMPLATE, 'qwen2_5': QWEN2_5_TEMPLATE, 'qwen2_5_1m': QWEN2_5_1M_TEMPLATE, 'qwen2_5_math': QWEN2_5_MATH_TEMPLATE, 'qwen_qwq': QWEN_QWQ_TEMPLATE, }
if is_package_version_at_least("transformers", "4.43.0"): for template_name, template in JINJA_TEMPLATES.items(): PRESET_TEMPLATES[template_name] = template else: logger.warning( f"The following conversation templates require transformers>=4.43.0: {JINJA_TEMPLATES.keys()}. " f"Please upgrade `transformers` to use them." )