What is 系统提示?
在对话开头提供的特殊指令,用于定义模型的行为、角色、约束和响应格式。
Definition
系统提示(也称为系统消息或系统指令)是放置在对话开头的一段特权文本,用于为语言模型设置行为上下文。与代表终端用户输入的用户消息不同,系统提示代表开发者的指令——定义模型应该扮演什么角色、使用什么语气、避免什么话题以及如何格式化响应。它是在推理时配置模型行为的主要机制,无需修改权重。
系统提示从一句话("你是一个有帮助的助手。")到多页文档不等,可以指定详细的行为准则、输出 schema、工具使用协议和安全护栏。在生产应用中,系统提示通常对终端用户隐藏,由应用开发者控制。它通过聊天模板作为第一条 "system" 角色的消息注入对话,模型被训练为将其视为贯穿整个对话的持久指令。
系统提示的有效性在很大程度上取决于模型的指令跟随能力,这由其指令微调和 RLHF 训练塑造。未经指令微调的基础模型可能在很 大程度上忽略系统提示,而经过良好微调的聊天模型则会紧密遵循。微调可以进一步加强模型对特定系统提示模式的遵从,尤其是当训练数据一致地包含目标系统提示时。
Why It Matters
系统提示是应用开发者与语言模型之间的主要接口。它们决定了用户体验——模型是简洁还是冗长、正式还是随意、限制性还是开放性。对于生产应用,精心设计的系统提示对安全性(防止有害输出)、品牌一致性(保持正确的语气)和功能性(确保正确的输出格式以供下游解析)至关重要。系统提示也是提示注入攻击的第一道防线,使其设计成为一个安全考量。
How It Works
当对话发送给模型时,系统提示使用模型的聊天模板格式化为第一条消息(例如,ChatML 中的 <|im_start|>system\n{content}<|im_end|>)。分词后的系统提示占据上下文窗口的开头,模型的注意力机制允许所有后续 token 关注它。这意味着系统指令影响模型在整个对话过程中生成的每一个 token。在长对话中,随着系统提示远离生成点,其影响可能会减弱——这种现象有时称为"迷失在中间"——这就是为什么简洁、结构良好的系统提示比过长的系统提示表现更好。
Example Use Case
一个医疗平台部署了一个微调模型,系统提示指示:"你是一个临床决策支持助手。始终引用循证指南。不要提供确定 性诊断——建议临床医生验证所有建议。以结构化表格格式呈现药物剂量。"这个系统提示与模型在医学数据上的微调相结合,产生了临床有用、格式规范且包含适当安全免责声明的输出——在为临床医生提供真正价值的同时满足监管要求。
Key Takeaways
- 系统提示在每次对话开始时定义模型的行为、角色和约束。
- 它们是独立于用户消息的开发者控制指令。
- 有效性取决于模型的指令跟随能力(通过微调改善)。
- 系统提示会消耗上下文窗口的 token,因此简洁性很重要。
- 使用一致的系统提示进行微调可以加强模型对这些指令的遵从。
How Ertas Helps
Ertas Studio 允许用户定义默认系统提示,将其包含在训练数据格式化中,确保微调后的模型学会可靠地遵循它。在 Studio 中进行模型评估时,用户可以针对微调后的模型测试不同的系统提示以优化行为。这种带系统提示训练的 工作流意味着 Ertas 微调的模型比仅在推理时引入系统提示的模型表现出更强的指令遵从性。
Related Resources
Chat Template
Context Window
Fine-Tuning
Inference
Prompt Engineering
Getting Started with Ertas: Fine-Tune and Deploy Custom AI Models
Privacy-Conscious AI Development: Fine-Tune in the Cloud, Run on Your Terms
llama.cpp
Ollama
Ertas for Healthcare
Ertas for SaaS Product Teams
Ertas for Customer Support
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.