from dataclasses import dataclass from typing import Dict @dataclass class Template: template_name:str system_format: str user_format: str assistant_format: str system: str stop_word: str # stop_token_id: int template_dict: Dict[str, Template] = dict() def register_template(template_name, system_format, user_format, assistant_format, system, stop_word=None): template_dict[template_name] = Template( template_name=template_name, system_format=system_format, user_format=user_format, assistant_format=assistant_format, system=system, stop_word=stop_word, # stop_token_id=stop_token_id ) # 注册template register_template( template_name='default', system_format='System: {content}\n\n', user_format='User: {content}\nAssistant: ', assistant_format='{content} {stop_token}', system=None, stop_word=None ) register_template( template_name='internlm', system_format="<|System|>:{content}\n", user_format='<|User|>:{content}\n<|Bot|>:', assistant_format='{content}\n', system="You are an AI assistant whose name is InternLM (书生·浦语).\n" "- InternLM (书生·浦语) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能实验室). It is designed to be helpful, honest, and harmless.\n" "- InternLM (书生·浦语) can understand and communicate fluently in the language chosen by the user such as English and 中文.", stop_word='' ) register_template( template_name='internlm2', system_format='<|im_start|>system\n{content}<|im_end|>\n', user_format='<|im_start|>user\n{content}<|im_end|>\n<|im_start|>assistant\n', assistant_format='{content}<|im_end|>\n', system="You are an AI assistant whose name is InternLM (书生·浦语).\n" "- InternLM (书生·浦语) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能实验室). It is designed to be helpful, honest, and harmless.\n" "- InternLM (书生·浦语) can understand and communicate fluently in the language chosen by the user such as English and 中文.", stop_word='<|im_end|>' ) register_template( template_name='qwen', system_format='<|im_start|>system\n{content}<|im_end|>\n', user_format='<|im_start|>user\n{content}<|im_end|>\n<|im_start|>assistant\n', assistant_format='{content}<|im_end|>\n', system="You are a helpful assistant.", stop_word='<|im_end|>' ) register_template( template_name='yi', system_format='<|im_start|>system\n{content}<|im_end|>\n', user_format='<|im_start|>user\n{content}<|im_end|>\n<|im_start|>assistant\n', assistant_format='{content}<|im_end|>\n', system=None, stop_word='<|im_end|>' ) register_template( template_name="orion", system_format='', user_format='Human: {content}\n\nAssistant: ', assistant_format='{content}', system='', stop_word='', ) register_template( template_name='deepseek', system_format=None, user_format='User: {content}\n\nAssistant: ', assistant_format='{content}<|end▁of▁sentence|>', system=None, stop_word='<|end▁of▁sentence|>' ) # todo 更优雅的实现方式 register_template( template_name='chatglm2', system_format=None, user_format='[Round {idx}]\n\n问:{content}\n\n答:', assistant_format='{content}', system=None, stop_word='', ) register_template( template_name='chatglm3', system_format='{content}', user_format='{content}', assistant_format='{content}', system="You are ChatGLM3, a large language model trained by Zhipu.AI. Follow the user's instructions carefully. Respond using markdown.", stop_word='', ) register_template( template_name='ziya2', system_format=None, user_format=':{content} :', assistant_format='{content}', system=None, stop_word='', ) register_template( template_name="xverse", system_format=None, user_format='Human: {content}\n\nAssistant: ', assistant_format='{content}<|endoftext|>', system=None, stop_word='<|endoftext|>', ) register_template( template_name='minicpm', system_format=None, user_format='<用户>{content}', assistant_format='{content}', system=None, stop_word='' ) register_template( template_name='zephyr', system_format='<|system|>\n{content}', user_format='<|user|>\n{content}\n<|assistant|>\n', assistant_format='{content}\n', system=None, stop_word='' ) register_template( template_name='mistral', system_format='', user_format='[INST]{content}[/INST]', assistant_format='{content}', system='', stop_word='' ) register_template( template_name='mixtral', system_format='', user_format='[INST]{content}[/INST]', assistant_format='{content}', system='', stop_word='' ) register_template( template_name='baichuan', system_format=None, user_format='{content}', assistant_format='{content}', system=None, stop_word='' ) register_template( template_name='baichuan2', system_format=None, user_format='{content}', assistant_format='{content}', system=None, stop_word='' ) register_template( template_name='vicuna', system_format='{content}\n', user_format='USER: {content} ASSISTANT:', assistant_format='{content}', system="A chat between a curious user and an artificial intelligence assistant. " "The assistant gives helpful, detailed, and polite answers to the user's questions.", stop_word='' ) register_template( template_name='llama2', system_format='<>\n{content}\n<>\n\n', user_format='[INST]{content}[/INST]', assistant_format='{content} ', system="You are a helpful, respectful and honest assistant. " "Always answer as helpfully as possible, while being safe. " "Your answers should not include any harmful, unethical, " "racist, sexist, toxic, dangerous, or illegal content. " "Please ensure that your responses are socially unbiased and positive in nature.\n\n" "If a question does not make any sense, or is not factually coherent, " "explain why instead of answering something not correct. " "If you don't know the answer to a question, please don't share false information.", stop_word='' ) register_template( template_name='llama3', system_format='<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n{content}<|eot_id|>', user_format='<|start_header_id|>user<|end_header_id|>\n\n{content}<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n', assistant_format='{content}<|eot_id|>', system=None, stop_word='<|eot_id|>' ) register_template( template_name='gemma', system_format='', user_format='user\n{content}\nmodel\n', assistant_format='{content}\n', system='', stop_word='' ) register_template( template_name='phi3', system_format=None, user_format='<|user|>\n{content}<|end|>\n<|assistant|>', assistant_format='{content}<|end|>\n', system=None, stop_word='<|end|>' ) # if __name__ == '__main__': # model_name_or_path = ''