✍️ Prompt 与上下文工程
Prompt 设计与版本管理
Prompt 与上下文工程专题:用 4 个核心问题讲清原理、取舍与落地。
一句话定位
提示合同、上下文选择、结构化输出、拒答和缓存。 把 Prompt 看作任务合同,把 Context 看作运行时选择出来的信息,而非一段越长越好的文字。
核心原理与问题解析
系统提示词应该包含哪些内容?
包含角色与目标、边界、工具策略、成功/失败标准、安全政策和输出合同。业务事实、用户数据和大段文档应动态注入,不要把所有内容写进一个永远增长的系统提示。
继续想: 工具说明放哪里?;如何发现指令冲突?
提示词越长越好吗?
不是。重复、冲突和无关规则会稀释重点、增加成本并降低可维护性。应从最小合同开始,通过评测只增加能修复稳定失败类别的规则。
继续想: 如何做 Prompt 消融实验?;怎样判断规则已经无效?
如何避免 Prompt 中规则互相冲突?
按优先级与主题拆分规则,删除重复,用决策表表达例外;通过静态检查和冲突样本评测。冲突无法靠模型自行稳定解决。
继续想: 如何定位是哪条规则导致回归?;动态规则放在哪里?
如何减少 Prompt 迭代的玄学?
每次只改一个假设,用失败分类选择样本,离线评测并看统计变化;记录版本和 Trace。没有可复现样本的“感觉变好”不应上线。
继续想: 如何做 A/B?;什么时候应改工具而非 Prompt?
工程落地检查
- 明确目标、边界、成功与失败格式
- 区分可信指令和不可信数据
- 关键业务字段使用 Schema 校验
- 用失败样本做单变量回归
- 记录模板、变量、模型和工具版本
常见误区
- 用提示词代替权限系统
- 不断追加互相冲突的补丁规则
- 只测漂亮样例,不测拒答和攻击样例
对应面试题
P06 系统提示词应该包含哪些内容? · P07 提示词越长越好吗? · P17 如何避免 Prompt 中规则互相冲突? · P20 如何减少 Prompt 迭代的玄学?