Skip to content

Prompt 工程

Prompt 工程不是「咒语学」,而是在摸清 LLM 的输入-输出规律后,把任务、约束与格式讲清楚的技术:模型的能力基线由预训练决定(见 LLM 原理),提示词做的是「给定能力下的最优激发与最稳约束」。本页给出可直接复用的模式库、让输出可解析的工程做法,以及配套的评测与安全防线。

一、工作原理与五条原则

  • 提示词 = 填进上下文窗口的一段文本;模型按统计分布续写,系统提示(system)、用户消息、助手历史构成了「角色 + 任务 + 已有进度」的完整上下文;
  • 五条经验原则(每条都有失败样例支撑):
原则解释反例 → 正例
具体到可执行说「做什么、对谁、什么格式」「总结一下」→「用 3 条要点总结,每条 ≤20 字,按 问题-原因-动作 结构」
一步一问拆小任务给清晰输入「分析并重写并翻译」→ 拆成多次调用
给例子胜过给描述few-shot 立规矩「要简洁」→ 附 2 个符合/不符合示例
先约束后发散格式与边界前置让模型自由发挥再求 JSON → 直接声明「只输出 JSON」
把「不知道」写进去显式允许拒答不写时模型会硬编 → 声明「不确定就回答:信息不足」

二、模式库:场景化配方

模式一句话典型模板适用
角色扮演用身份圈定语气与知识范围你是资深后端工程师,请审查下面代码…风格/视角化任务
零样本结构化用「步骤编号 + 输出模板」一次性约束分四步:1)…2)…最后按模板输出常规任务 baseline
少样本(few-shot)带 k 个完整样例,含边界反例例1…例2(拒绝回答的例子)…现在处理:规则微妙、易跑偏
思维链 CoT要求先推理再作答一步步思考,最后给出结论数学/逻辑/多步推理
自洽性 Self-consistency多次采样多数投票重复 CoT 3-5 次,取答案众数推理可靠性
思维树 ToT显式枚举多分支并评估列出候选方案,评估后选优规划/搜索类
ReAct想→做→看 循环接工具RAG 与 Agent需要事实/计算
拆解委托把大任务拆成子任务再各自调用先分诊再逐模块处理复杂工作流
  • 少样本选例原则:贴近目标分布、覆盖边界与反例、示例顺序(近期与开头位置权重高);每加一个示例也要注意「污染」——示例里的错误倾向会被复制;
  • 要效果先确认是「会做但没说清」还是「不会做」:后者换更好的基座/微调/工具,提示词解决不了能力缺失。

三、结构化输出:让机器能消费的结果

  • 两类做法配合使用:
    1. Prompt 层:明示输出 schema + 给 JSON 示例,再要求「不要输出任何其他文字」;
    2. 约束解码层(更稳):API 的 response_format / JSON schema 校验、工具调用(tools/function calling)强制参数化输出;自建服务可用 grammar 约束采样(如 vLLM 的 guided decoding);
  • 工程红线:解析必须容忍失败——总是带重试、schema 校验、失败降级(返给模型「上次输出不合规,请重试」);
  • 工具/函数调用本质 = 把「调用哪个函数 + 什么参数」当结构化输出生成,再由你的代码执行并回填结果——这是 Agent 的机械基础;
  • 数字与事实输出建议直接约束「若无法确定,输出 null 并在备注说明」,比让模型硬猜好。

四、上下文工程:系统提示、记忆与长度经济

  • 系统提示的最佳实践:目标(给谁用、做什么)、规则(禁止/必须)、知识或风格参考、输出格式、兜底行为——写成「当 X 时做 Y」的条件句比抽象口号有效;
  • 记忆管理:长对话/多轮 Agent 场景,历史是资产也是成本——滑动窗口、关键信息摘要化、只保留最近 N 轮 + 长期记忆外置(向量库,见 RAG 与 Agent);
  • 长度经济:省 token = 省成本与延迟(见 AI 工程化);指令与关键约束放开头与结尾(中间信息权重低),完整模板放消息末端让「最近内容」先行;
  • 每类任务维护自己的提示模板库(版本化!),prompt 与代码一样需要 review、diff、回滚。

五、评测与迭代:没有评测就没有工程

  • 建立 golden set(金标评测集):覆盖主要场景 + 边界与坏例,通常 30-100 条起步;
  • 迭代闭环:改 prompt → 跑金标 → 对比前后输出(diff 高亮)→ 只保留净提升的改动;严禁「凭感觉微调」;
  • 自动化评测三件套:
    • 规则检查(输出是否含关键词/格式合法/长度约束);
    • 指标评分(事实类可用 RAGAS 等,见 RAG 与 Agent 评测节);
    • LLM-as-judge:用更强的模型按 rubrics 打分/对比,注意裁判偏好偏差(位置、长度、自夸),做盲排与抽样人工复核;
  • 线上加「回归看门狗」:抽样请求自动重放评测,模型升级/提示变更前必须过门禁(详见 AI 工程化 可观测与评测节)。

六、安全:提示注入是真实的攻击面

  • 直接注入:用户对「你的指令」说「忽略以上规则…」——系统提示被越权改写;
  • 间接注入:网页/邮件/文档内容里藏指令,被 Agent 检索后执行(2023 起的高危面);
  • 基础防线(纵深,别指望一层):
    1. 权限最小化:LLM 触达的每项工具都要鉴权与额度限制,注入后也只能做最小操作;
    2. 输入输出过滤:输入侧检测注入特征,输出侧脱敏 PII/拦截危险指令;
    3. 系统提示声明 + 定界:让模型区分「指令区」与「不可信数据区」,对「忽略/越狱」措辞显式禁止;
    4. 人工确认关卡:高权限操作(转账/删库/发布)必须人工或规则二验;
    5. 敏感数据(密钥/用户隐私)不进上下文,只放最小必要字段;
  • 越狱与诱导属于对抗持续演进:定期用红队样例回归(见 AI 工程化 安全合规节)。

七、踩坑清单

  1. 先动手后设计:不写金标集就调 prompt,等于盲调,改动无法归因;
  2. 一个 prompt 塞所有任务:任务混装 = 规则互相打架,拆场景各写模板;
  3. 示例带毒:few-shot 里的一个错误示例会被放大复制,示例必须人工校验过;
  4. 让模型「自由发挥后解析」:JSON 外包一层花括号也稳不住,直接约束解码 + 失败重试;
  5. 忽略长度与预算:没算 token 就上线,长文档场景账单爆炸;
  6. 系统提示写散文:写作文不如写「规则列表 + 条件句」;
  7. 只加不减:prompt 越长不一定越好,删掉无效约束用评测验证;
  8. 不防注入就接工具:无鉴权工具 = 一个「帮我查资料」的链接就能打穿;
  9. 温度默认拉满做事实任务:事实/结构化任务用低温度或贪心;
  10. 换模型不回归:新模型对同样 prompt 行为漂移,金标集回归是必做动作。

继续学习:提示词接上外部知识与工具见 RAG 与 Agent;想让模型稳定按格式/领域输出(而非靠提示词硬撑)时进入 模型微调;评测与监控体系见 AI 工程化

基于 VitePress 构建 · 内容以知识共享方式沉淀