如何优化系统提示词

回复 Erfan: 优化 System Prompt 的核心不是“把话写得更华丽”,而是把它当成工程架构来管,重点做好这五件事: 1. 动静分离,对齐 Prompt Cache(省钱降延迟) 结合你刚才问的 Prompt Cache,System Prompt 必须严格按“变更频率”排顺序:完全不变的身份定义、核心红线、工具声明放最顶部;单次会话内冻结的记忆快照放中间;每轮都在变的动态信息(当前时间、实时检索结果、滑窗上下文)千万别直接改写进 System Prompt,而是作为块注入到每轮的 User Message 里,否则每轮都会击穿前缀缓存。 2. 按需渐进披露,别把 System Prompt 当垃圾桶 很多人的 System Prompt 越写越长,最后注意力稀释、指令互相打架。全局常驻的只留“身份 + 绝对红线 + 路由规则”,具体垂直场景的操作指南拆成独立的 Skills 或文档,只有触发对应任务时才按需加载进上下文。 3. 用正例和结构化边界替代空洞形容词 少写“请专业、准确、温和地回答”这种无效废话,改成可执行的具体判据: 第一,明确边界与优先级:当规则冲突时听谁的(比如安全红线 > 用户当前指令 > 默认风格)。 第二,少说“不要做什么”,多说“遇到 X 情况时应该改成做 Y”。 第三,对格式要求极严的场景,直接给 1 到 2 个高质量 Few-shot 正反例,比写五百字规则描述管用得多。 4. 把确定性逻辑外置给代码(Harness 校验) 不要指望靠在 System Prompt 里连写三个感叹号“绝对禁止输出 XXX”就能 100% 拦住模型。凡是能用代码、正则、Schema 校验或工具门控拦截的硬规则,直接放到模型外围的 Harness 层做确定性拦截,给 System Prompt 减负。 5. 坏例驱动迭代与定期减法(生命周期管理) 不要一上来就凭空脑补几千字规则。先用极简版跑起来,收集真实的 Badcase,每加一条修补规则都要对应真实出现过的错题集。同时,随着底层模型升级,以前为了防蠢加的补丁很多已经不再需要,甚至会限制新模型的发挥,要定期复测并删掉过时的规则。