上一题下一题

工具调用返回空结果但模型仍编造答案时,如何设计失败提示、拒答和二次检索流程

进阶版
来源:alibaba初级工程师RAG可靠性二次检索幻觉抑制工具调用失败处理
答案解析

这个问题本质上是要防止模型在工具调用失败、检索为空或者证据不足时继续“硬答”。我一般会从提示词约束、结果校验、拒答策略和二次检索流程几个层面设计。

在提示词上,首先要明确告诉模型:回答必须基于工具返回的内容,工具结果为空、无关或者置信度不足时,不能凭常识补全,也不能编造引用。比如可以在 system prompt 里约束:

如果检索结果为空,或者结果中没有直接支持答案的信息,必须说明“当前没有检索到足够信息”,不得自行推测。

同时要求模型在回答前判断证据状态,比如:

has answer = true:检索结果能直接回答问题; has answer = false:结果为空或不相关; need more search = true:需要换关键词或扩大范围再次检索。

这样可以把“是否能回答”变成一个显式判断,而不是直接生成答案。

工具调用返回空结果时,我不会直接让模型进入最终回答,而是先进入一个失败处理分支。比如后端拿到工具结果后做校验:

返回列表是否为空; 文档分数是否低于阈值; topK 内容是否和问题相关; 是否命中关键字段

登录后查看完整内容