What is 提示模板(Prompt Template)?
一种带有占位符的结构化格式,定义如何将用户输入、上下文和指令组装成发送给语言模型的完整提示。
Definition
提示模板是一种预定义的文本结构,包含变量占位符,在运行时用动态内容填充以形成发送给语言模型的完整提示。模板将提示的静态部分——指令、格式指令、输出规范——与动态部分——用户查询、检索的上下文、变量数据——分离开来。这种分离使得跨应用程序的提示设计一致、可复用和可维护。
在大语言模型生态系统中,提示模板存在于多个层级。在应用层面,模板定义了如何将用户输入与系统指令和上下文(例如 RAG 检索的文档)组合成完整的提示。在模型层面,聊天模板定义了每个模型家族期望的特定 token 格式——Llama 使用 [INST] 标记,ChatML 使用 <|im_start|> 标签,Mistral 使用自己的分隔符。对模型使用错误的聊天模板会导致质量显著下降,因为模型期望来自训练的特定 token 模式。
提示模板是生产大语言模型应用中的关键工程产物。精心设计的模板捕获了关于如何从模型中引出特定任务最佳行为的累积知识。团队在发现边缘案例、失败模式和优化机会时迭代模板,将模板与应用代码一起进行版本控制是最佳实践。
Why It Matters
提示模板为大语言模型应用提供了一致性和可维护性。没有模板,提示往往通过临时字符串拼接来构建,导致格式不一致、遗漏指令和难以诊断的错误。模板使提示结构变得明确、可版本控制和可测试。
对于微调来说,在训练期间使用正确的提示模板至关重要。如果训练数据使用一种模板格式但推理使用另一种,模型在推理时遇到不熟悉的模式,性能就会下降。在训练数据准备和部署之间对齐模板格式可确保模型学到的行为正确地转移到生产环境。
How It Works
在应用层面,提示模板是一个带有占位符变量(例如 {context}、{question}、{format_instructions})的字符串,在运行时用实际值替换。模板引擎——从简单的 Python f-string 到 LangChain 的 PromptTemplate 等复杂框架——处理变量替换、验证和组合。
在模型层面,聊天模板使用特殊 token 编码对话结构。Llama 3 聊天模板将每条消息包裹在模型经过训练识别的特定分隔符中。分词器的 apply_chat_template() 方法将消息字典列表转换为正确的 token 格式。微调期间使用的模板与推理期间使用的模板之间的不匹配是已部署模型质 量退化的常见来源。
Example Use Case
一个 RAG 应用使用提示模板组合系统指令、检索的前 3 个文档和用户问题:'You are a technical support assistant. Use only the following documentation to answer. If the answer is not in the documentation, say so. Documentation: {retrieved_docs}. Question: {user_question}. Answer:'。此模板确保数千个查询的行为一致,当团队发现添加 'Be concise and specific' 能改善响应质量时,他们在一个地方更新模板,而不是修改整个应用中的代码。
Key Takeaways
- 提示模板使用占位符将静态提示结构与动态内容分离。
- 它存在于应用层面(将输入与指令组合)和模型层面(聊天格式 token)两个层级。
- 使用正确的模型级聊天模板对推理质量至关重要。
- 模板应进行版本控制,并在训练数据准备和部署之间保持一致。
- 精心设计的模板捕获了关于引出最佳模型行为的累积知识。
How Ertas Helps
Ertas Studio 在微调期间自动为每个基础模型应用正确的聊天模板,Ertas Data Suite 将训练数据结构化为匹配目标模型预期的提示格式,确保从训练到部署的无缝质量转移。
Related Resources
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.