本课目录(25 节)
- 4.2.1 Prompt 为什么效果不好
- 先定位,再调优
- 4.2.2 Prompt 调优的常用方法
- (1)指令清晰:说清楚角色、任务、依据和限制
- (2)添加示例:让模型模仿正确输出
- (3)问题分解:把复杂任务拆成可验证步骤
- (4)控制输出:给模板、字段和校验规则
- (5)给模型留出中间选项
- 对比一:知识问答
- 对比二:信息抽取
- 对比三:客服话术
- 对比四:工作流节点
- 4.2.3 Prompt 模板设计
- (1)通用模板
- (2)模板使用建议
- 4.2.4 Prompt 效果验证与迭代
- 建议记录字段
- 4.2.5 基于 ADP 的 Prompt 设计与问题处理案例
- 案例一:标准模式知识问答回答不稳定
- 案例二:工作流参数提取节点经常漏字段
- 案例三:Multi-Agent 任务协作边界不清
- 4.2 练习:优化一个门店客服助手 Prompt
- 优化后示例
- 安全补充:Prompt 不是安全边界
- 4.2 小结
4.2 Prompt 调优
从问题定位、提示词优化到效果验证,提升智能体回答稳定性
当智能体出现答非所问、格式不稳定、知识不引用、工具参数错误或语气不一致时,优先不要只判断“模型不行”。更有效的做法是先定位问题来源,再通过 Prompt、上下文、模型配置和测试样本逐步优化。
本 节 学 什 么
学完这一节,你应该能判断 Prompt 效果不好的常见原因;掌握清晰指令、示例、问题分解、输出约束等常用调优方法;能设计可复用 Prompt 模板;能用固定样本验证优化效果;能在 ADP 的标准模式、工作流和 Multi-Agent 模式中处理典型 Prompt 问题。
🖼 图:4.2-01 Prompt调优
4.2.1 Prompt 为什么效果不好
Prompt 效果不好,通常不是因为某一句话写得不够长,而是任务、依据、边界、格式、上下文或模型配置中有关键要素缺失。调试时应先定位问题来源,再决定改 Prompt、改知识库、改工作流,还是调整模型配置。
可以把 Prompt 理解成给模型的一份“任务说明书”。如果说明书只写“帮我回答一下”,模型虽然会给出回复,但不一定知道应该面向谁回答、依据哪份资料回答、哪些内容不能推测、输出要不要给引用、后续节点是否需要固定字段。因此,Prompt 调优的第一步不是马上改写,而是先问:这个问题到底是“没听懂任务”,还是“没有拿到正确依据”,或者是“输出格式没有被约束”。
在 ADP 应用中,还要注意 Prompt 与知识库、工作流、模型配置等是一起生效的,例如知识库没有命中正确内容时,单纯加长 Prompt 通常不能解决根因。
| 常见现象 | 可能原因 | 优先排查方向 |
|---|---|---|
| 回答方向不对 | 任务目标不清,角色边界模糊,缺少业务背景。 | 检查角色指令、任务目标、适用范围和禁止事项。 |
| 知识命中了但回答仍自由发挥 | 未要求基于引用回答,未说明资料不足时如何处理。 | 增加“仅依据命中内容回答”、引用要求和兜底话术。 |
| 输出格式不稳定 | 只描述了输出内容,没有给字段、格式、取值范围和示例。 | 增加输出模板、字段说明、Few-shot 示例和异常处理规则。 |
| 语气不符合业务要求 | 没有说明服务对象、业务场景和表达边界。 | 补充受众、语气、禁用表达和参考话术。 |
| 复杂任务经常漏步骤 | 多个目标堆在一个 Prompt 中,缺少步骤拆解。 | 拆成意图识别、信息抽取、检索、判断、生成、校验等步骤。 |
核心判断
如果问题出在知识没有命中,优先优化知识库和 RAG;如果问题出在命中后不会用、格式不稳定、意图执行不准,优先优化 Prompt;如果问题出在复杂推理、长上下文处理或工具规划能力不足,再结合模型配置和应用模式一起调整。
先定位,再调优
调优前建议先做一次单轮排查:同一条问题下,分别查看用户输入、知识命中、节点输出、工具返回和最终回复。如果知识命中正确,但最终回复仍然扩展了无依据内容,重点改 Prompt;如果知识根本没有命中,重点改知识库、切分、检索参数或问法改写;如果最终回复正确但下游节点解析失败,重点改输出格式。
| 排查问题 | 说明 | 下一步 |
|---|---|---|
| 知识是否命中 | 查看是否命中了正确文档、正确 Chunk 或正确 FAQ。 | 未命中时优先处理知识库与检索问题。 |
| 命中后是否会用 | 查看模型是否基于命中内容回答,是否出现资料外推测。 | 补充依据规则、引用要求和无法确认时的兜底话术。 |
| 格式是否可解析 | 查看输出是否稳定符合字段、JSON 或表格要求。 | 补充字段定义、示例、缺失值规则和禁止多余解释。 |
| 边界是否明确 | 查看是否越权承诺、回答超范围问题或遗漏转人工。 | 补充禁止事项、风险场景和人工兜底条件。 |
🖼 图:4.2-02 Prompt调优
4.2.2 Prompt 调优的常用方法
(1)指令清晰:说清楚角色、任务、依据和限制
清晰的 Prompt 至少要回答四个问题:模型现在扮演什么角色、要完成什么任务、必须依据什么信息、不能做什么。角色决定回答口吻和责任边界,任务决定本轮要完成的动作,依据决定模型能使用哪些信息,限制决定哪些情况必须拒答、追问或转人工。
很多效果问题来自“看似合理但不够具体”的提示。例如“请专业回答”并没有说明专业体现在哪里;“请简洁回答”也没有说明字数、结构或是否需要下一步建议。对企业应用来说,Prompt 应尽量把隐含要求显式写出来,让模型少猜。
| 写法 | 示例 | 效果 |
|---|---|---|
| 不推荐 | 请帮我回答用户问题。 | 任务过宽,容易泛泛回答。 |
| 推荐 | 你是企业制度问答助手。请仅依据下方知识库片段回答员工问题;如果片段中没有答案,请说明“当前资料无法确认”,并建议联系 HR。 | 角色、依据、边界和兜底更明确。 |
(2)添加示例:让模型模仿正确输出
当输出格式、判断标准或语气要求不容易说清楚时,添加** 1–3 个高质量示例**通常比继续堆规则更有效。示例会告诉模型“什么样的输入应该对应什么样的输出”,尤其适合信息抽取、标签判断、客服话术、JSON 输出等任务。
示例不是越多越好。示例过多会占用上下文,也可能让模型过度模仿某一个样例。更好的做法是选择少量典型样例:一个标准样例、一个边界样例、一个缺失信息样例。这样模型既能学会正常处理,也能知道遇到不完整或高风险输入时怎么兜底。例如:
提示
你是一位专业的工单信息抽取助手。 请从用户描述中抽取以下字段,并按 JSON 输出: **- issue_type:**问题类型 **- location:**发生地点 **- urgency:**紧急程度,取值 high / medium / low **- missing_fields:**仍需追问的字段 示例: **用户:**北京门店收银机无法开机,今天下午一直影响结账。 输出:{"issue_type":"设备故障","location":"北京门店","urgency":"high","missing_fields":[]}
🖼 图:4.2-03 Prompt调优
(3)问题分解:把复杂任务拆成可验证步骤
复杂任务不要全部压在一个 Prompt 里。更稳定的做法是把任务拆成多个步骤,或在工作流中拆成多个节点。拆解的好处是:每一步目标更单一,输出更容易检查,出现问题时也更容易定位是意图识别、字段抽取、知识检索还是结果生成出了问题。
例如“处理客户投诉”可以拆成:识别是否投诉、提取客户诉求和关键信息、判断风险等级、查询处理规则、生成回复或转人工建议。不要让一个节点同时完成所有动作,否则调试时只能看到最终回答,很难知道中间哪一步发生偏差。
-
先判断用户意图和任务类型。
-
再提取必要字段,缺失时追问。
-
然后查询知识库或调用工具。
-
最后基于结果生成答案,并按格式输出。
-
如果结果不确定,进入兜底或人工处理。
(4)控制输出:给模板、字段和校验规则
如果后续节点需要读取模型输出,Prompt 中必须明确输出结构。只写“请按 JSON 输出”通常不够,还要写字段名、字段含义、取值范围、缺失值处理和禁止输出多余解释。
在工作流中,输出格式不稳定会直接影响后续节点。例如上游输出多了一段解释文字,下游 JSON 解析就可能失败;字段名有时叫 intent、有时叫 user_intent,下游变量也可能读取不到。因此,凡是要进入后续节点的模型输出,都应尽量结构化、字段固定、规则明确。
输出要求:
仅输出 JSON,不要输出解释文字。 字段如下: { **"intent": "用户意图,取值:**咨询 / 投诉 / 办理 / 其他", "confidence": "置信度,0 到 1 之间的小数", "need_human": "是否需要转人工,true 或 false", "reason": "判断原因,不超过 30 字" } 如果无法判断 intent,intent 输出“其他”,need_human 输出 true。
(5)给模型留出中间选项
不要只给模型“对/错”“能/不能”的二选一。当业务场景存在不确定信息时,应允许模型输出“无法确认”“需补充信息”“建议转人工”等中间结果。例如:
| 不稳定写法 | 更稳定写法 |
|---|---|
| 判断用户是否可以退款。 | 判断用户是否满足退款条件;如果资料不足,请列出需要补充的信息;如果涉及人工审批,请说明需转人工。 |
| 回答这个政策问题。 | 仅基于知识库回答;知识库没有明确依据时,不要推测,输出“当前资料无法确认”。 |
再看四组 Before / After 对比,直观感受“稳定写法”比“随手一写”好在哪。Before 是常见的不稳定写法,After 是更稳定、可直接复用的写法。
对比一:知识问答
Before|不稳定写法
After|更稳定写法
改进重点
补齐角色、依据、结构和无法确认时的处理方式。
对比二:信息抽取
Before|不稳定写法
After|更稳定写法
改进重点
明确字段、取值范围、缺失处理和输出格式。
对比三:客服话术
Before|不稳定写法
After|更稳定写法
改进重点
把“专业”拆成语气、长度、边界和可复制要求。
对比四:工作流节点
Before|不稳定写法
After|更稳定写法
改进重点
让下游节点能稳定解析固定字段。
4.2.3 Prompt 模板设计
Prompt 模板的价值,是把一次有效的调优经验沉淀成可复用结构。实际编写时,可以使用“角色—背景—目标—依据—步骤—边界—输出”的结构。它不要求每次都写很长,但能帮助你检查关键要素是否缺失。
模板不是固定话术,而是一张检查清单。简单问答场景可以只保留角色、依据、边界和输出;复杂工作流节点则需要写清输入变量、处理步骤、输出字段和异常情况。模板设计的重点是让不同搭建者在同类场景下写出的 Prompt 保持一致,便于复用、评审和后续维护。
| 模块 | 要写什么 | 示例 |
|---|---|---|
| 角色 | 模型扮演谁,服务什么对象。 | 你是企业售后政策助手,服务一线客服。 |
| 背景 | 本轮任务的业务背景和输入来源。 | 用户输入来自客户咨询,知识来自售后政策库。 |
| 目标 | 本轮必须完成的动作。 | 判断问题类型,并给出可直接回复客户的话术。 |
| 依据 | 可以使用哪些材料,优先级如何。 | 优先依据知识库;其次使用用户已提供信息;不得编造政策。 |
| 步骤 | 需要按什么顺序处理。 | 先识别意图,再匹配政策,再判断是否需要追问或转人工。 |
| 边界 | 不能做什么,何时兜底。 | 不得承诺退款成功;高风险投诉需转人工。 |
| 输出 | 输出格式、字段、长度、语气。 | 按“结论 / 依据 / 下一步”三段输出。 |
(1)通用模板
提示
你是{角色},服务对象是{受众}。 背景: {业务背景}。用户输入如下:{用户问题} 可用资料如下:{知识库片段或工具返回} 任务: 请完成{任务目标}。 处理步骤:
- 先判断用户意图和必要信息是否完整。
- 再依据资料生成回答,不要使用资料外的信息。
- 如果资料不足,说明无法确认,并给出下一步建议。 边界:
- 不得承诺超出权限的处理结果。
- 不得编造政策、价格、时间或审批结论。 输出格式: 结论:{一句话结论} 依据:{引用或说明依据} 下一步:{用户可执行动作}
(2)模板使用建议
不同任务的模板重点不同。不要把所有场景都套成同一个长模板,而要根据任务类型保留最关键的约束。下面这些建议可以作为设计 Prompt 模板时的快速检查。
-
知识问答类模板重点写清“依据”和“无法确认时的回复”。
-
信息抽取类模板重点写清字段定义、取值范围和缺失字段处理。
-
客服回复类模板重点写清语气、禁用表达、风险边界和可复制话术长度。
-
工作流节点模板重点写清输入变量、输出变量和下游节点可解析格式。
4.2.4 Prompt 效果验证与迭代
Prompt 改完后,不能只看当前那一条问题是否变好。正确做法是用固定样本复测,确认同类问题改善,同时没有引入新的问题。
很多调优失败,是因为每次同时改了太多内容:既改 Prompt,又改模型配置,还改知识库和检索参数。这样即使效果变好,也不知道是哪项修改起作用;如果效果变差,也很难回滚。因此建议每轮只改一个主要变量,并保留优化前后的对比记录。
验证样本不需要一开始就很大,但要覆盖关键类型。比如一个客服助手,至少应包含标准问法、口语化问法、资料不足问法、边界问法和高风险问法。上线前再把这些样本扩展成更完整的评测集。
| 步骤 | 动作 | 判断标准 |
|---|---|---|
| 1. 固定样本 | 准备 10–20 条代表性问题,覆盖标准问题、口语化问题、缺省信息、边界问题和复杂问题。 | 样本能覆盖本次优化想解决的问题。 |
| 2. 记录基线 | 保存优化前的回答、命中知识、输出格式和耗时。 | 后续能和新版本对比。 |
| 3. 单点修改 | 每次主要只改一个变量,例如 Prompt、模型配置或检索参数。 | 能判断是哪项修改带来变化。 |
| 4. 对比结果 | 比较准确性、完整性、格式稳定性、引用质量、语气和成本。 | 不是只看“感觉更好”。 |
| 5. 回归验证 | 用原有核心样本复测,检查旧问题是否复发。 | 修复问题时没有破坏其他场景。 |
| 6. 沉淀版本 | 保存 Prompt 版本、修改原因、适用场景和验证结论。 | 后续可回滚、可复用、可交接。 |
建议记录字段
| 字段 | 说明 |
|---|---|
| 测试问题 | 本轮用于验证的用户输入。 |
| 期望结果 | 希望智能体达到的行为,不一定是唯一标准答案。 |
| 优化前结果 | 记录原始回答、链路表现和明显问题。 |
| 优化动作 | 说明本次改了什么,不要一次修改过多变量。 |
| 优化后结果 | 记录新回答、格式、引用、耗时和异常情况。 |
| 结论 | 判断是否采用该版本,是否需要继续迭代。 |
验证习惯
每次 Prompt 优化都应保留版本记录。上线前用小样本验证,重要变更后做回归验证;线上出现 Badcase 后,应清洗成新样本并补充到评测集中。
4.2.5 基于 ADP 的 Prompt 设计与问题处理案例
在 ADP 中,Prompt 不只出现在一个输入框里。标准模式、知识问答、工作流节点和 Multi-Agent 都可能包含不同层级的指令。处理问题时,应先判断应该改哪一层。
如果是全局回答风格、业务边界或身份定位不清,通常优先调整角色指令;如果是知识问答中“命中了但不会用”,要检查用户输入模板和依据规则;如果是工作流某个节点输出不稳定,应调整该节点提示词;如果是工具调用失败,要同时检查工具说明、入参字段和异常返回处理。
| ADP 位置 | 主要作用 | 适合写什么 |
|---|---|---|
| 角色指令 | 定义智能体角色、任务边界、语气和全局规则。 | 身份、职责、回答原则、禁止事项、兜底策略。 |
| 用户输入模板 | 把用户问题、知识切片、历史上下文或变量组装给模型。 | 问题、上下文、引用材料、输出要求、字段约束。 |
| 工作流节点提示词 | 控制某个节点的单一步骤。 | 参数提取、标签判断、摘要生成、结果改写、JSON 输出。 |
| 工具说明和入参定义 | 帮助模型正确选择工具并生成参数。 | 工具用途、字段含义、必填项、异常返回处理。 |
| Multi-Agent 角色配置 | 规定每个 Agent 的职责和协作边界。 | 谁负责检索、谁负责分析、谁负责复核、何时转交。 |
🖼 图:4.2-04 Prompt调优
🖼 图:4.2-05 Prompt调优
案例一:标准模式知识问答回答不稳定
场景:门店员工咨询退换货政策。知识库中已有政策文档,但智能体有时会补充文档里没有的承诺。这个问题的关键不是“模型不会回答”,而是模型没有被明确要求只使用知识库内容,也没有被要求在资料不足时停止推测。
| 处理项 | 优化动作 |
|---|---|
| 问题定位 | 知识已命中,但 Prompt 没有要求“仅依据知识库回答”,也没有资料不足时的兜底策略。 |
| 角色指令 | 补充“仅依据知识库和用户已提供信息回答,不得编造政策、价格、时效或审批结论”。 |
| 输出要求 | 按“结论 / 依据 / 下一步”输出;资料不足时写“当前资料无法确认”。 |
| 验证样本 | 用退货、换货、会员权益、资料不足、口语化问法等样本复测。 |
优化后的Prompt:
提示
你是门店知识问答助手,服务对象是一线门店员工。 请仅依据知识库内容和用户已提供信息回答,不得编造退换货、赔付、优惠、会员权益等政策。 如果知识库没有明确依据,请说明“当前资料无法确认”,并建议联系门店主管或提交工单。 输出格式: **结论:**一句话回答。 **依据:**说明依据来自哪类政策或资料;如无依据,写“当前资料无法确认”。 **下一步:**给出员工可执行动作。
案例二:工作流参数提取节点经常漏字段
场景:订票流程需要收集出发地、目的地、出发时间。用户用口语表达时,节点有时会误填或自行补全字段。参数提取节点的目标不是“尽量猜出答案”,而是稳定识别已提供字段,并把缺失字段交给后续追问。
| 处理项 | 优化动作 |
|---|---|
| 问题定位 | 字段定义不清,缺少必填规则、缺失字段输出和追问策略。 |
| 字段规则 | 明确字段名、含义、是否必填、缺失时输出空字符串。 |
| 输出格式 | 仅输出 JSON,禁止解释文字,missing_fields 记录缺失字段。 |
| 验证样本 | 准备完整输入、缺出发地、缺目的地、缺时间、口语化表达等样本。 |
优化后的Prompt:
任务:从用户输入中抽取订票信息。 字段:
**- departure_city:**出发地,必填 **- arrival_city:**目的地,必填 **- departure_date:**出发日期,必填 规则:
- 如果用户没有提供某个必填字段,将该字段置为空字符串。
- missing_fields 输出缺失字段名。
- 不要根据常识补全城市或日期。 仅输出 JSON: {"departure_city":"","arrival_city":"","departure_date":"","missing_fields":[]}
案例三:Multi-Agent 任务协作边界不清
场景:一个复杂资料分析应用中,检索、分析和复核都由多个 Agent 参与,但经常出现重复检索、直接下结论或遗漏复核。Multi-Agent 的 Prompt 重点不是把每个 Agent 都写得很“聪明”,而是让每个 Agent 知道自己负责什么、不负责什么、什么时候需要把任务交给其他 Agent。
| Agent | 职责示例 | 边界示例 |
|---|---|---|
| 检索 Agent | 从知识库和网页中查找与问题相关的资料。 | 只负责找资料,不直接下结论。 |
| 分析 Agent | 基于资料归纳观点、比较差异、形成判断。 | 资料不足时必须说明不确定点。 |
| 复核 Agent | 检查事实、引用、风险表达和格式。 | 发现高风险结论时要求补充依据或转人工。 |
| 主 Agent | 理解用户目标,分派任务,汇总最终回答。 | 不得跳过必要的检索和复核步骤。 |
4.2 练习:优化一个门店客服助手 Prompt
某连锁零售企业正在搭建门店客服助手。当前角色指令如下:
提示
你是门店客服助手,请回答员工和顾客的问题,语气友好,尽量给出帮助。
调试时发现三个问题:用户问退换货政策时,智能体会凭经验补充知识库没有的内容;用户描述投诉时,智能体没有提示转人工;输出有时很长,不适合客服直接复制。请按本节方法优化这个 Prompt。
| 拆解项 | 参考答案 |
|---|---|
| 问题定位 | 原 Prompt 缺少回答依据、业务边界、风险兜底和输出格式要求。 |
| 角色重写 | 明确它是“门店客服知识助手”,服务对象是一线客服和门店员工,不是审批或售后处理系统。 |
| 依据规则 | 要求仅依据知识库和用户已提供信息回答;资料不足时说明无法确认,不得编造政策。 |
| 边界策略 | 退款、赔付、投诉升级、敏感纠纷等场景不得承诺处理结果,应建议转人工或提交工单。 |
| 输出格式 | 按“可回复话术 / 依据 / 下一步”三段输出;话术不超过 120 字。 |
| 验证样本 | 准备退货、换货、会员权益、投诉升级、资料不足、口语化问法等 10–20 条样本复测。 |
优化后示例
提示
你是门店客服知识助手,服务对象是一线客服和门店员工。 回答规则:
- 仅依据知识库内容和用户已提供信息回答,不得编造退换货、赔付、优惠、会员权益等政策。
- 如果知识库没有明确依据,请说明“当前资料无法确认”,并建议联系门店主管或提交工单。
- 涉及投诉升级、赔付承诺、退款审批、敏感纠纷时,不要承诺处理结果,应建议转人工或按流程提交工单。
- 语气友好、简洁、可直接复制给客户。 输出格式: **可回复话术:**不超过 120 字。 **依据:**说明引用的政策或资料来源;如无依据,写“当前资料无法确认”。 **下一步:**给出客服或用户可执行动作。
安全补充:Prompt 不是安全边界
把“不要泄露数据、不要调用危险工具”写进系统 Prompt 很有必要,但它只能约束模型行为,不能替代系统层的安全控制。可靠方案应把系统指令、输入过滤、知识与工具权限、入参校验、输出校验和人工审核组合使用。
| 高风险信号 | 为什么危险 | 处理方式 |
|---|---|---|
| 用户要求“忽略系统规则”或诱导输出密钥 | 试图覆盖高优先级指令或窃取凭证。 | 拒绝执行;密钥不进入模型上下文;记录风险事件。 |
| 网页、附件或知识文档中夹带“调用敏感工具、外发资料”等指令 | 外部内容可能被模型误当成可信命令。 | 把检索内容视为数据而非指令;过滤可疑内容;敏感工具使用最小权限和二次确认。 |
| 模型生成对外发布的文章、营销文案或通知 | 可能包含事实错误、侵权内容、违规表述或敏感信息。 | 发布前做事实核验、版权/来源检查、内容安全审核,并由授权人员人工确认。 |
提示
**记住:**Prompt 注入防护的核心是“即使模型被诱导,系统权限仍然阻止它越权”。系统不能把管理员工具和完整密钥交给模型,再寄希望于一句提示词保证安全。
4.2 小结
-
Prompt 效果不好时,先定位任务、依据、边界、格式、上下文和模型配置中的问题。
-
常用调优方法包括清晰指令、添加示例、问题分解、输出约束和中间选项。
-
Prompt 模板应沉淀角色、背景、目标、依据、步骤、边界和输出格式。
-
Prompt 优化后必须用固定样本复测,并进行回归验证。
-
在 ADP 中处理 Prompt 问题时,要找准配置位置:角色指令、用户输入模板、工作流节点、工具说明或 Multi-Agent 角色配置。
提示
进 入 下 一 节 下一节 4.3「知识库质量与 RAG 问题」会继续讲:当问题不是 Prompt 能解决,而是知识没命中、Chunk 不合理、引用不准或检索参数不合适时,应该如何优化知识库和 RAG 链路。
随堂测
逐题作答,即时反馈
1. 单轮排查发现“知识命中正确,但最终回复仍扩展了无依据内容”,按本课的定位方法应优先优化什么?
2. 关于在 Prompt 中添加示例(Few-shot),本课的建议是?
3. 本课案例二“订票参数提取节点经常漏字段”的优化,下列做法与课文一致的是?