聊天模板
指令微调语言模型使用“特殊 token”来指示文本的不同部分,例如系统提示、用户提示、任何图像以及助手的响应。聊天模板是将不同类型的输入组合成一个单一的、机器可读字符串的方式。
使用指令模型时,Outlines 不管理聊天模板 token。您必须自己将聊天模板 token 应用于提示——如果您不在指令微调模型上应用聊天模板,您通常会从模型获得毫无意义的输出。
基础模型不需要聊天模板 token。
您可以在模型的 HuggingFace 仓库或文档中找到聊天模板 token。例如,可以在这里找到 SmolLM2-360M-Instruct
的特殊 token。
然而,手动查找模型的特殊 token 可能很慢,并且特殊 token 因模型而异。如果您更改模型,如果您硬编码了特殊 token,您的提示可能会失效。
如果您需要一个方便的工具来为您应用聊天模板,您应该使用 transformers
库中的 tokenizer
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM2-360M-Instruct")
prompt = tokenizer.apply_chat_template(
[
{"role": "system", "content": "You extract information from text."},
{"role": "user", "content": "What food does the following text describe?"},
],
tokenize=False,
add_bos=True,
add_generation_prompt=True,
)
结果如下: