AI系列面试12:Prompt 怎么调优?
Prompt 调优(Prompt Engineering / Optimization)是让大语言模型“听话”的关键技能,尤其在 RAG 系统中,直接决定模型是否愿意忠实依据检索内容、避免幻觉、输出格式规范。
一、Prompt 调优的核心原则
- 清晰 > 复杂:简单的直白指令往往比花哨的思维链更有效。
- 给足约束:明确告诉模型“能做什么、不能做什么”。
- 提供范例:Few-shot 比 Zero-shot 更稳定。
- 可验证:让模型输出引用或置信度,便于下游判断。
- 迭代优化:从基线开始,每次只改一个变量,对比效果。
二、具体调优技巧(从易到难)
1. 角色设定(System Prompt)
你是一个专业的客服助手。你只能根据下面提供的【参考资料】回答问题。
如果你不知道答案,请直接说“资料中没有相关信息”,不要自己编造。
- 作用:设定边界和语气。
- 调优点:语气(专业/亲切)、约束强度(严格/宽松)。
2. 明确指令
❌ 差:“回答用户问题。”
✅ 好:“仅依据下方【参考资料】回答。如果参考资料不包含答案,请回答‘我无法回答这个问题’。”
3. 输出格式控制
请按以下 JSON 格式输出:
{
"answer": "你的答案",
"confidence": "高/中/低",
"sources": [1, 3]
}
- 用途:便于下游解析、引用、调试。
4. Few-shot 示例(极有效)
示例1:
问题:年假有几天?
参考资料:年假规则:满1年5天,满10年10天。
答案:满1年5天,满10年10天。
示例2:
问题:加班费怎么算?
参考资料:工作日加班1.5倍,周末2倍。
答案:工作日1.5倍,周末2倍。
现在请回答:
问题:{用户问题}
参考资料:{检索内容}
答案:
- 技巧:示例要覆盖不同难度,最好包括一个“无法回答”的例子。
5. 强制引用
在答案末尾用[citation:X]标注来源编号。例如:“年假为5天[citation:1]。”
如果综合多个资料,分别标注。
6. 设置拒答阈值
- 硬约束:“如果参考资料与问题完全无关,请回答‘资料不相关’。”
- 软约束:结合检索置信度分数,低于阈值时自动走拒答分支。
7. 思维链(Chain-of-Thought)用于多跳推理
问题:张三的老板是谁?
步骤:1. 先找出张三的部门。2. 再找出该部门负责人。3. 给出最终答案。
请按步骤思考后输出。
8. 否定指令(Negative Prompting)
不要编造答案。不要使用“可能”“也许”等模糊词。不要输出任何参考资料以外的数字。
三、如何评估 Prompt 的好坏?
| 指标 | 含义 | 如何测量 |
|---|---|---|
| 忠实度 | 答案是否严格基于参考资料 | 人工或 RAGAS 的 Faithfulness |
| 拒答准确率 | 应该拒答时是否拒答 | 在无答案的测试集上计算 |
| 格式遵循率 | 是否按要求输出 JSON / 引用 | 正则匹配 |
| 用户满意度 | 答案是否有用 | 在线反馈 / A/B测试 |
建议:准备一个小型测试集(20-50 个边缘案例),每次改 prompt 后跑一遍,记录变化。
四、常见陷阱与调优方向
| 问题表现 | 可能原因 | 调优方法 |
|---|---|---|
| 模型忽略参考资料,自行回答 | 指令不够强制 | 改为“仅根据以下资料”,并用 few-shot 展示拒答 |
| 模型总是说“不知道” | 拒答阈值过高 | 降低阈值或检查检索质量 |
| 输出格式乱,不按 JSON | 指令不清晰 | 加上严格的格式示例,或者使用 function calling |
| 答案太长/太短 | 没指定长度 | “用不超过3句话回答” |
| 多跳推理出错 | 模型推理能力不够 | 要求展示逐步推理,或换用更强模型 |
| 出现幻觉数字/日期 | 模型依赖自身知识 | 强调“不要使用任何你记忆中的数字,只看资料” |
评论
暂无已展示的评论。
发表评论(匿名)