一、一句话定位
- Prompt(提示):每次对话临时写的自然语言指令,是「原料」。提示词工程 = 研究怎么把指令写清楚、写到位。
- Skills(技能):把高频、值得标准化的「Prompt + 流程」固化、文件化、加触发条件自动注入,是「预制菜谱」。
- RAG(检索增强生成):临时检索外部文档,把相关内容塞进上下文再回答,解决「记不住 / 会编」。
- 规则(Rules):写死在系统里的硬约束(if-then / 校验),不可违反,是确定性红线兜底。
二、Prompt 与 Skills 的区别
| 维度 | Prompt | Skills |
|---|---|---|
| 存在位置 | 每次临时写,转瞬即逝 | 文件化存磁盘,跨会话持久 |
| 触发方式 | 手动写 / 粘贴 | 匹配条件自动加载,或 @ 调用 |
| 结构 | 自由文本,想到哪写到哪 | 固定骨架(触发词/步骤/工具/约定) |
| 目的 | 解决「一个」具体任务 | 沉淀「一类」任务的最佳实践 |
| 维护者 | 随手写 | 可版本管理、共享、迭代 |
三、前台输入 → 真正发给大模型,中间发生什么
- 策略一 · 直接拼接(最常见):用户原话一字不改,前后多塞一段隐藏 System 指令(角色/风格/约束/知识引用)。是「叠加」而非「改写」。
- 策略二 · 先改写/编译(进阶):用一个小/快模型(或模板引擎)把粗糙输入优化成结构化 prompt,再拼 System 指令发出 ------ 即「用 prompt 改写再发过去」。
- 策略三 · 模板渲染(确定性填空):{角色}{用户问题}{参考文档},纯字符串拼接,不是 LLM 改写。
为什么前台不显示那层 prompt:① 关注点分离,用户不该被系统指令干扰;② 护商业逻辑 + 防越狱;③ 保一致性,所有用户输出风格质量稳定。
四、改写步骤的三条实现路线
- 路线 A · 规则模板:jinja / {{}} 填空,零延迟、零成本;缺点僵硬、难应对模糊输入。
- 路线 B · LLM 改写:元提示「你是提示词专家,改写并保留全部原意」+ 小模型;延迟 +1 次调用、成本翻倍;须把用户原话逐字附在最后防丢失约束;离线还可迭代优化(见第五节)。
- 路线 C · 混合(生产首选):规则定骨架,小模型润色意图;延迟小、成本低。
成本缓兵之计:prompt caching 让很长的 System 提示与检索内容不重复计费。
五、真实框架 / 工具清单
- 规则模板:Jinja2 / Mustache / LangChain PromptTemplate / few-shot example selector
- LLM 改写 · 迭代优化:DSPy(Stanford,把 prompt 当可编译程序)、OPRO(Google,黑盒优化)、APE(自动提示工程师)
- 缓存:prompt caching(OpenAI 及主流厂商支持)
六、一句话决策法则
- 只做一次 → 直接写 Prompt(最快)
- 反复做且步骤固定 → 提成一个 Skill 固化
- 需要外部准确知识 → 加 RAG 检索注入
- 有不可违反红线 → 用规则兜底
光谱定位:Skill ≈ 路线 A 确定性沉淀;多智能体里的「规划 agent 先把需求拆解成子任务 prompt 再派发」 ≈ 路线 B 动态编译。二者不是替代,而是同一根光谱上的两点。