“懂王AI”的工程悖论在于:一个以“没有人比我更懂”为风格标签的系统,真正的技术分水岭却是它是否敢说“我不确定” 。风格模仿只需要提示词,但让一个断言型系统变得可信、可集成、可运营,需要的是把不确定性从语言风格中剥离出来,逐层转化为可门控、可校验、可度量的工程状态。五阶框架给出的正是这条路径:一阶断言,二阶有据,三阶知边界,四阶可验证,五阶可运营。每一步都不换更大的模型,换的是对待不确定性的设计立场。
一阶的典型形态是裸调模型:有问必答,答必自信。它的真正问题不在于答错,而在于错得和答对时一模一样——下游拿不到任何区分信号。二阶引入 RAG,把模型从“凭记忆生成”切换为“基于材料改写”,幻觉空间被压缩。
但二阶有一个隐蔽陷阱:有引用不等于引用正确。模型可能摘了材料里的原句,却得出了材料并未支持的结论。因此二阶的完成标准不是“接了检索”,而是接了一个轻量的引用核验——要求输出“结论 + 原文片段”,再用规则或第二个模型检查片段是否真正支持结论。生产级方案如 verifiable-rag 更进一步:生成句子级引用,并用 NLI 模型逐条核验 claim 与其引用 span 是否真正构成支持关系,未通过核验的答案触发拒答而非放行。
三阶是质变点。系统不再“尽力回答一切”,而是在检索证据不足或结论不稳定时主动进入 need_clarify 或 low_consistency 状态。门控信号通常取检索 top-score 与两次独立采样的结论一致性:
def answer_with_gate(question, retrieve, model, threshold=0.72):
docs = retrieve(question, top_k=5)
top = max((d.score for d in docs), default=0.0)
if top < threshold:
return {"status": "need_clarify",
"reply": "资料里没有找到明确依据,能补充一下具体场景吗?"}
a = model(question, context=docs, temperature=0.2)
b = model(question, context=docs, temperature=0.7)
if not same_conclusion(a, b):
return {"status": "low_consistency",
"reply": "这个问题存在多种说法,建议人工确认。"}
return {"status": "ok", "reply": a, "sources": [d.id for d in docs]}关键不在函数本身,而在 status 字段:“不确定”不再是一句模糊措辞,而是一个下游程序可以分支处理的状态码。客服系统据此转人工,自动化流程据此暂停。更精细的门控可以用语义熵替代简单的采样一致性:多次采样后计算语义熵,低于阈值直接放行,中间区间附加警示执行,高熵区间则拒绝或转人工,将“拒绝”本身设计为一种可编排的返回值而非异常。
三阶解决了“该不该答”,四阶解决“答出来的东西下游能不能直接用”。自然语言即使带了 status,字段缺失、枚举越界、类型漂移仍然会让集成代码崩溃。四阶用 Pydantic 把输出收敛为契约,并在校验失败时走兜底路径,而不是相信模型“这次会按格式来”:
from pydantic import BaseModel, ValidationError
from typing import Literal
class Answer(BaseModel):
status: Literal["ok", "need_clarify", "low_consistency"]
reply: str
sources: list[str] = []
def safe_answer(q):
try:
return Answer(**answer_with_gate(q, retrieve, model))
except ValidationError:
return Answer(status="need_clarify", reply="输出格式异常,已拦截。")到这里,格式合规率、字段完整率、来源命中率都变成了可以通过断言自动统计的指标,质量从主观感受变成了可执行检查的对象。结构校验只能解决“形状正确”,业务正确性还需要在 Schema 之后追加领域规则,但 Pydantic 层已经承担了最关键的一道闸门。
五阶最反直觉的一点:它不追求消灭错误,而是把错误从“不可见”变成“可发现、可归因、可收敛”。固定评估集、每次改动跑回归、按类别看指标而非只看总准确率,是五阶的最小骨架。
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_recall
def regression(eval_set, pipeline):
results = evaluate(eval_set, metrics=[faithfulness, answer_relevancy, context_recall])
return {k: round(float(v), 4) for k, v in results.items()}如果某次改动后 need_clarify 比例异常上升,或者某一类问题的 faithfulness 显著下滑,五阶系统能在用户投诉之前定位到是检索阈值漂移、知识库过期,还是模型升级带来的行为变化。线上失败样本回流到评估集,下一次回归覆盖它——准确率可能不比四阶高多少,但它知道自己的错误集中在哪、什么时候变差、回滚是否有效。
五阶的本质,是把“自信”从语言风格里一层层剥离:一阶用断言掩盖不确定性,二阶用引用约束它,三阶把它暴露为状态,四阶把它编码为契约,五阶把它纳入持续运转的度量闭环。一个真正“懂”的系统,恰恰是那个知道自己几斤几两、并且能量出来的系统。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。