Prompt 工程实验复盘:温度、Top-P 与 RAG 的实测笔记
这篇笔记来自最近一周的几组对照实验,问题都来自真实调用:同一份提示,为什么换个参数、换个写法,输出就判若两人?先说结论:参数决定输出的“性格”,提示决定输出的“格式”,而检索与行动循环决定它能不能“说对事”。
一、temperature:1 与 0.1 是两种性格
用同一道“给一款笔记应用写三条宣传语”测试。temperature=1 时,三次运行几乎不重样:有走情感路线的,有玩谐音梗的,其中一次还把“云端同步”写成了“云端漫步”——有创意,但需要人工挑。temperature=0.1 时,三次输出高度一致,措辞稳妥,适合写接口说明、故障排查清单这类容错率低的文本。我的用法是:头脑风暴开高,结果交付开低;如果一次调用就要直接上生产,0.1 远比 1 省心。
二、top_p:截断不是降温,是划线
top_p=0.9 与 temperature=1 搭配时,输出仍有变化,但离谱的词基本消失了;top_p=0.1 时,即使 temperature=1,输出也立刻收敛,几乎像 0.1 的温度。区别在于机制:temperature 是给所有候选词重新分配概率,top_p 是直接把累计概率之外的长尾词砍掉。实测体会:想保留多样性又不想翻车,调 top_p 比一味压温度更划算;两个参数同时拉到最低,等于双重上锁,适合格式固定的抽取任务。
三、少样本提示:格式对齐最便宜的办法
让模型按固定 JSON 输出时,零样本提示经常多出解释文字、少个字段。给了两个“输入—输出”示例后,字段名、顺序、空值写法一次对齐,后续十次调用零返工。关键是示例要覆盖边界:给一个正常样本,再给一个字段缺失的样本,模型才知道缺失时该填 null 而不是编造。少样本不是教知识,是立规矩,示例越像真实数据,效果越稳。
四、CoT:只用在需要算、需要推的地方
链式思考在多步算术、条件排查这类任务上提升明显:让模型先列已知条件、再分步推导,错误率肉眼可见地下降。但在写宣传语、做开放式总结时,CoT 反而会把简单回答拖长,还容易在中间步骤自我说服、编出不存在的前提。我的判断标准是:答案能一步直达就不用 CoT;需要中间结论才能得出最终结论时,再让它一步步来。
五、RAG:分段、检索、增强、生成,四步缺一不可
一次问答里,我让模型直接回答公司内部产品的退货政策,它答得流畅自信,却把 7 天说成了 30 天——典型的含糊响应:语气肯定,事实错误。改成 RAG 后流程是四步:先把文档切成带标题、按语义边界分段的块;再用问题向量检索最相关的三段;然后把这三段原文拼进提示做增强;最后才让模型基于材料作答,并要求答不出就说不知道。这次它准确引用了 7 天政策。教训是:RAG 的价值不在“用了向量库”,而在分段质量与“无依据不回答”的约束;检索回来的材料不对,后面写得再漂亮也是错的。
六、ReAct:思考—行动—观察的循环
需要查资料、调工具的任务,单次生成不够用。ReAct 让模型先思考“下一步缺什么”,再行动(调用搜索或接口),然后观察返回结果,决定是继续查还是作答。实测中它会在搜索结果不符时换关键词再查,而不是像纯生成那样一次编到底。代价是调用次数和延迟上升,循环还要设上限,防止它在查不到时无限兜圈。适合的场景是:答案不在模型脑子里,而在某个工具或数据库里。
复盘下来,Prompt 工程没有银弹:温度与 top_p 管随机性,少样本管格式,CoT 管推理,RAG 管事实,ReAct 管行动。先想清楚任务缺的是哪一块,再动对应的旋钮,比把所有技巧堆在一起有效得多。
- 点赞
- 收藏
- 关注作者
评论(0)