← RAG 检索增强

RAG 客服的系统提示词怎么写?为什么限制写得越多,模型越爱说「资料不足」?

中等 上下文组装、引用与拒答 · 第 4 / 4 问 更新于 2026/09/29
RAG提示词工程智能客服拒答输出护栏
本题落地项目AI智能客服与工单处理系统

简化版

常见原因有两个。一是限制按词划,而不是按人称划:客服资料里大量是「需要核对订单号」「由财务创建工单处理」这类流程描述,提示词只写「不要索要信息」「不能说创建工单」,模型会把转述资料也当成违规,发现没有一句敢说,只好退回「资料不足」。正确的划法是:可以转述资料里的规则和流程,不能以 AI 自己的身份替用户办事或向用户索要信息。二是让模型重复判断相关性:检索阶段已经用相似度阈值筛过资料,提示词里再写「资料不足时回答……」,模型会按文字观感再判一次,和检索结论打架。应该把「有没有相关资料」的判断收回到检索阈值上:检索为空直接返回固定话术、不调模型;有资料就明确告诉模型「资料已筛过,请基于资料回答」。提示词之外,再加一层输出过滤兜底。

详细版

写法结果
「不要索要用户信息,不要说创建工单」模型把「按规范需要核对订单号」这类转述也当违规,回答退化成「资料不足」
「你不能向用户索要信息、不能声称自己办理了业务,但要如实转述资料里的流程」能说规则,不越权
「资料不足时回答:暂未找到相关资料」检索命中 5 条,模型仍可能说没找到
「给到你的资料都已按相似度筛过,都与问题相关,请基于资料回答,不要输出未找到资料」相关性只由阈值决定,模型专心组织答案

一套分工清楚的做法:

检索层:阈值过滤 → 一条都没有 → 返回固定话术,不调模型
提示词:人称边界(能转述、不能代办、不能索要)+ 资料已筛过
输出层:逐行过滤越权话术(流式时只暂扣疑似违规的那一行)
页面层:业务动作(转人工、提交工单)由固定入口承接,不靠模型在正文里引导

完整版教学

一、现象:检索命中了,回答却说没找到

一个真实的矛盾画面:

右侧引用来源:资料1(相似度 0.51)、资料2(0.47)……共 5 条
左侧 AI 回答:「知识库中暂未找到足够相关的资料。」

检索没有问题,资料也确实相关,问题出在提示词上。排查这类问题时,先把检索结果和提示词分开看:检索命中了,说明问题在生成侧;再逐条看提示词里的限制,找出是哪一条让模型「不敢说」。

二、按词禁止为什么会误伤

客服知识库里的内容,很大一部分是「办理流程」:

资料:开票问题需要客服先核对发票抬头、税号和开票金额,确认后创建工单交由财务处理。

如果提示词写的是:

不要向用户索要订单号、税号等信息。
不要说「创建工单」。

模型读资料时会发现,整段资料里「核对税号」「创建工单」都是被禁止的词,转述这段资料就违规,于是干脆不说,退回兜底话术。限制写得越多,被误伤的资料越多,回答就越空。

三、按人称划边界

真正要禁止的不是某些词,而是 AI 以自己的身份做两类事:替用户办事、向用户要东西。转述资料里的规则是允许的:

句子性质是否允许
按规范,开票需要核对发票抬头、税号和开票金额,并由财务处理转述资料中的规则允许
请您提供一下发票抬头和税号AI 向用户索要信息不允许
我已经为您创建工单,财务会尽快处理AI 声称自己办理了业务不允许

提示词要把这个区别讲出来:「你不能向用户索要订单号、付款信息等资料,也不能声称自己已经查询订单、创建工单或发起退款;但资料里写明的办理流程、需要核对的信息、由谁处理,都要如实转述给用户。」两句一起写,模型才知道边界在哪。

记忆钩子:禁「谁来做」,不禁「怎么做」。AI 可以讲流程,不能自己去办、不能向用户要。

四、相关性只判一次

「有没有相关资料」这件事,检索阶段已经有明确的判据:

相似度 ≥ 阈值 → 进入上下文
一条都没有    → 直接返回固定话术,不调聊天模型

如果提示词里还写着「资料不足时请回答……」,等于让模型用另一套标准(文字观感)再判一次。两次判定不一致时,就出现第一节那个自相矛盾的画面。把判断权收回来的做法:

层职责
检索用阈值决定资料是否相关;为空时直接返回固定话术
提示词告诉模型「资料已筛过、都相关,请基于资料回答,不要输出未找到资料」
模型只负责组织答案

检索为空时不调模型还有两个好处:省一次调用;彻底杜绝「没有资料、模型凭记忆编一段」的情况。阈值怎么定,见「RAG 如何判断“资料中没有答案”?」。

五、提示词之外还要有输出兜底

提示词再清楚,模型也不保证每次都遵守。客服场景里,越权话术(「请提供订单号」「我已为您创建工单」)一旦出现,就可能误导用户,所以输出侧要再过滤一层。一种可行的规则设计:

一行文本命中以下任一类就判为违规:
  ① 索要资料:「请提供 / 麻烦发一下」等句式 + 「订单号 / 手机号 / 截图」等对象同时出现
  ② 声称办理:「我已 / 我会为您」等句式 + 「创建工单 / 退款 / 查询订单」等动作同时出现
  ③ 引导转人工:页面已有固定入口,正文里的引导话术直接去掉

要求「句式 + 对象」同时出现才算违规,是为了不误伤正常转述(只出现「请您」两个字不构成违规)。

六、流式输出时怎么过滤

同步回答可以拿到完整文本后逐行过滤;流式回答要边生成边推送,如果每一行都攒到行尾再判,用户看到的就是一行一行地蹦,失去逐字效果。折中做法:

当前行还没出现触发词 → 视为安全,逐字立即下发
出现触发词(或行尾恰好是某个触发词的前缀) → 暂扣本行剩余内容,读到行尾再判定
判定违规 → 丢弃触发词及其后面的内容;前面已经发出去的半句保留

「行尾是触发词前缀」这个判断很关键:模型可能把「我帮您」拆成「我帮」和「您」两个片段先后吐出,只判整词会漏掉。已发出的半句保留,是为了让屏幕上的内容和落库的答案一致,用户刷新页面看到的不会变。

七、业务动作交给页面,不交给模型

客服对话里「答不上来怎么办」是必然会遇到的。与其让模型在每条回答末尾加一句「如需帮助请提交工单」(啰嗦,而且模型会在不该加的时候加),不如由页面在每条回答下方固定放一个转人工入口,模型正文里的同类引导话术直接过滤掉。

这背后是一条通用原则:模型负责说,系统负责做。查订单、建工单、发起退款这些真实业务动作,要么由工具在代码层面执行并校验,要么由页面入口交给人处理,都不应该出现在模型的自由文本里。上下文怎么组装,见「RAG 检索结果如何组装进上下文?」;检索到了仍然出错的其他原因,见「为什么 RAG 检索到了资料仍然会幻觉?」。

八、常见误区与追问

  • 误区:限制写得越细越安全。 按词禁止会误伤转述资料的句子,模型最后什么都不敢说,应该按人称划边界。
  • 误区:在提示词里让模型判断资料够不够。 相关性已由检索阈值判定,再判一次会和检索结果打架。
  • 误区:检索为空也交给模型组织一句拒答。 直接返回固定话术更稳、更省,还杜绝了凭记忆编造。
  • 误区:提示词写清楚了就不需要输出过滤。 模型不保证每次遵守,越权话术需要输出侧兜底。
  • 误区:流式输出只能整行攒完再发。 只有出现触发词的行才需要暂扣,其余逐字直出。
  • 追问:违规判定为什么要「句式 + 对象」同时出现? 单个词太容易误伤正常转述,组合出现才是真正的越权表达。
  • 追问:流式过滤丢掉违规内容后,已经显示的半句怎么办? 保留,保证屏幕内容和落库答案一致。

九、加强记忆

模型爱说资料不足,多半是提示词的锅:按词禁止会误伤转述资料的句子,应该按人称划边界,禁 AI 自己代办和索要,不禁转述流程;相关性由检索阈值判一次就够,检索为空直接返回固定话术不调模型,有资料就告诉模型资料已筛过。提示词之外加输出过滤,按「句式加对象」识别越权话术;流式时只暂扣出现触发词的行,并检查行尾是否为触发词前缀,已发出的半句保留。业务动作交给工具和页面入口,模型只负责说。

项目实战落地

项目里怎么做的

《AI智能客服与工单处理系统》的 AI 客服按这几层分工:

  • 检索为空不调模型:PGVector 检索在 where 里按相似度阈值过滤(客户端默认 topK 5、阈值 0.2),一条都没有时 ask() 直接返回「知识库中暂未找到足够相关的资料。」;
  • 系统提示词守两条线:buildSystemPrompt() 一条是人称——AI 不能自己去做、自己去要,但要如实转述资料里的流程;一条是职责——资料相不相关由阈值判定,明确告诉模型给到的资料都已筛过、不要输出「未找到资料」;
  • 输出过滤:isUnsafeLine 按三类判定违规行——索要资料(句式和对象同时出现)、声称执行业务动作(句式和动作同时出现)、引导提工单;同步回答用 sanitizeAnswer 整段清洗,流式回答用 SafeStreamFilter 边生成边过滤,mayBeUnsafe 同时判断行尾是否为触发词前缀;
  • 转人工由页面承接:每条 AI 回答下方固定一个「提交人工工单处理」入口,正文里的引导话术由过滤器去掉。

为什么这样取舍

  • 提示词按人称划线:知识库里大量是「需要核对哪些信息」「由谁处理」的内容,按词禁止时检索命中五条资料,回答却说没找到。
  • 越权话术由代码兜底:客服窗口没有接入订单查询和工单创建,模型说「已为您创建工单」就是误导用户,不能只靠提示词约束。

面试官还会追问

  • 为什么系统提示词写死在代码里,而不是放进后台可编辑的 Prompt 模板表?
  • 流式回答时触发词出现在句子中间,前面已经推给前端的半句怎么处理?流结束时最后一行没有换行符,为什么不能补一个换行再判定?

学完《AI智能客服与工单处理系统》,上面这些追问你都会迎刃而解。

本题落地项目登峰造极AI智能客服与工单处理系统基于RAG、意图识别和AI回复建议,实现知识库问答、客户会话、工单创建、优先级识别、人工处理、服务质检和统计分析,适合学习FAQ资料、客服业务闭环、满意度评价和过程追踪。SpringbootLangChain4JRAGPGVectorEmbedding源码+SQL喂饭学习教程配套面试文档环境安装文档项目运行文档 学习这个项目