提示工程最容易陷入一种错觉:改了几句话,挑几个成功案例,答案看起来更好,就认为准确率提高了。真正的准确率必须建立在固定任务、固定样本和明确评分上。否则提示越调越长,团队只是在适应眼前几个例子。
优化提示的正确顺序,不是先找“神奇句式”,而是先把问题变成实验:什么叫答对,哪些错误最严重,模型可以使用哪些信息,结果怎样自动或人工检查。
## 先定义准确率的分母
分类任务可以计算精确率、召回率和混淆矩阵;字段抽取可以比较字段级一致;问答需要同时检查结论与证据;代码任务必须运行测试。把所有任务压成一个“主观好评”分数,会隐藏完全不同的失败。
建立 50 到 200 个真实样本,覆盖高频、长尾、缺少信息、格式破损和应拒答情况。开发集用来改提示,测试集只在阶段结束时运行。若每次看到测试答案再调整,测试集也会被“训练”。
保存模型版本、系统提示、用户模板、温度、最大输出、工具和日期。大模型服务会变化,没有这些记录就无法复现。
## 第一招是给足必要信息,而不是更多废话
一个稳定提示包含角色或任务目标、输入边界、成功标准、禁止猜测的空白和输出格式。每一段都应帮助评分。如果一句话删掉后结果不变,它可能只是噪声。
把动态材料放在清楚分隔的上下文区,指明只能依据哪些来源。对长文档先检索相关片段,不要把大量无关内容塞进窗口。上下文越长,关键证据越容易被淹没,成本也越高。
事实随时间变化时,让检索系统提供带日期来源。提示负责约束使用方式,不能让模型凭训练记忆代替数据库。

## 少量好示例胜过大量随意示例
Few-shot 示例告诉模型输入与输出的映射。选择覆盖不同边界的例子,而不是重复最简单情况。每个例子的标签与格式必须正确,否则模型会忠实学习错误。
示例顺序也可能影响结果。固定一组候选,在开发集上比较零样本、少样本和不同顺序。若加入示例只改善相似样本,却让其他类别退化,说明示例过度偏向某一分布。
需要解释的任务可以提供简短、可验证的解题范式,但不要要求模型暴露冗长内部思维。生产系统更需要结论、关键依据和可检查中间结果。
## 把开放写作改成受约束输出
若后续程序要读取结果,直接要求“用 JSON”仍可能出现缺字段、类型错误和额外文字。使用 JSON Schema 或工具调用定义字段、枚举、数组与必填项,再在程序端验证。
验证失败时不要无限重试。把具体错误反馈给模型一次,例如“日期不符合 ISO 格式”,仍失败就退回人工或简化任务。对金额、日期和标识符增加确定性规则,不让语言模型承担所有校验。
结构化输出不会提高事实本身的正确率,但能暴露缺失,减少解析错误,并让逐字段评分成为可能。
## 复杂事实用检索与工具落地
ReAct 等研究把推理与外部行动交替:模型决定搜索或调用工具,观察结果后继续。它的价值在于把容易编造的事实交给外部数据源,把计算交给程序。
检索质量要独立测。若正确片段没有被取回,再好的生成提示也无能为力。记录召回、重排和最终回答三层指标,避免把上游错误都归因于模型。
计算器、数据库和代码执行器应有明确输入模式、超时和权限。模型只提出参数,程序验证后执行,结果连同来源返回。
## 多次采样适合有唯一答案的难题
Self-Consistency 会生成多条不同推理路径,再选择最一致的答案。论文在多种数学与常识推理基准上展示过提升。它用更多计算换取稳定性,不适合所有任务。
当答案可以明确比较,例如数值、选择题或可运行程序,多次采样有意义。开放创作中“多数答案”不一定更好,事实问答中多个样本还可能共享同一错误来源。
设定最大样本数和停止条件。若前几次已高度一致可提前结束;若分歧很大,转检索或人工,而不是继续花费直到偶然一致。

## 把提示当作可编译程序
手工试句子的空间很大。DSPy 等方法把模型调用表示为模块,用带指标的样本自动选择示例或优化管线。核心启示不是一定要使用某个框架,而是把提示、检索和模块组合纳入可重复优化。
任何自动优化都可能过拟合开发集。保留独立测试与不同时间的新样本,限制搜索预算,并检查生成的提示是否带入测试答案或不必要敏感内容。
提示版本应进入代码管理。每次改动写明假设,例如“加入反例会降低误报”,用实验结果决定保留或回滚。
## 一次只改一个主要变量
若同时更换模型、提示、示例、检索与温度,结果变好也不知道原因。先建立直接提示基线,再依次测试输入契约、示例、结构化输出、检索、工具和采样。
每轮输出总分、切片分数、错误类型、延迟和成本。一个方法若准确率只升一点,却让成本增加十倍或拒答率失控,未必值得上线。
人工审查错误时,不只改提示。把原因分为资料缺失、检索失败、任务含糊、模型推理、格式与工具故障。只有确属指令理解的问题才由提示解决。
## 一套最小优化流程
第一天定义指标与 100 个样本。第二天运行最短基线提示。第三天按错误分类,选影响最大的一个原因。第四天提出两到三个改动,固定其他参数做对照。
第五天在开发集选择方案,第六天只运行一次测试集,并记录成本与时延。第七天把失败样本加入错误库,但不要立刻放回测试集;等下一周期建立新版本。
提示工程的准确率来自实验纪律,而不是文字长度。模型、数据和工具都会变,固定评测、清楚边界与可回滚版本,才是能够长期复用的“提示技巧”。
## 参考资料