system prompt(系统提示词) 核心概念
随请求发送、定义模型角色与行为规则的顶层提示。工程化做法是分层构建:每一层一个独立来源、按需组装、单层设上限;稳定的 system prompt 前缀能触发服务端 prompt caching,大幅降低多轮会话的费用与延迟。
它是什么
system prompt 是随请求发送、定义模型角色与行为规则的顶层提示。很多 Agent 把它写成一大坨硬编码字符串,改一句就要改代码,而且一坨到底谁也说不清哪部分占了多少钱。工程化做法是分层构建:每一层一个独立来源、按需组装、单层设上限(如每层 20K 字符,超了截断)。
为什么分层
- 每层更新频率不同、维护者不同:人设很少改、项目规则经常变、记忆运行时在变——分层让每个来源独立变化,改项目规则只动对应层,不碰其他层;
- 单层上限防「一文件吃满窗口」:一个 50KB 的项目规则文件全塞进去,留给实际对话的空间就没了;
- 稳定前缀 = 便宜的 API:OpenAI / Anthropic 都有 prompt caching——system prompt 在多轮间保持不变时服务端可缓存它,大幅降低费用与延迟。条件是一个字节都不能变,所以组装一次、复用整段会话,时间戳这类运行时信息控制变化粒度,临时指令拼在缓存后面。
易混点
system prompt 不该进 messages 数组——否则会被上下文压缩误伤、被重复持久化;它应作为独立请求字段(或 system 消息)每次调用临时拼在最前面。分层构建的完整实现与层级表见第 09 章。