智能体幻觉度量与评估:基于事实一致性(Faithfulness)的自动化断言
在企业级大模型与多智能体(Agent)系统的自动化评测(Evals)与发布门禁中,“幻觉(Hallucination)”是阻碍大模型在金融、医疗、法律和核心政企业务中大规模落地的头号致命毒瘤。
在大模型的幻觉分类学中,最危险、最难以排查的当属**“事实一致性幻觉(Faithfulness / Factuality Violation)”**:
- 系统明明向大模型提供了经过精确检索的参考上下文(Context);
- 但是大模型在输出回答(Answer)时,却**“夹带私货”**——擅自编造了一个上下文里根本不存在的数字(如把 500 万写成 800 万),或者颠倒了因果逻辑关系(如把“免息 3 个月”写成“免息 3 年”);
- 传统基于字符串匹配的评测指标(如 ROUGE-L、BLEU、BERTScore)在面对幻觉时完全失灵,因为一段包含致命幻觉数字的句子,其 ROUGE 重合度得分可能依然高达 90%!
如何构建一套脱离传统词法匹配、能够精准提取“原子事实主张(Atomic Claims)”并进行严密命题逻辑推导的“事实一致性(Faithfulness)自动化断言评估中枢”?
一、基于原子命题逻辑拆解的事实一致性(Faithfulness)评估架构
[ 给定输入上下文 (Context) ] + [ 大模型生成的待评估回答 (Generated Answer) ] │ ▼ ┌────────────────────────────────────────────────────────┐ │ 步骤 1: 原子事实命题拆解 (Atomic Claim Decomposition) │ │ 动作: 将复杂长句拆解为不可再分的极简陈述句集合: │ │ • Claim 1: "公司 2026 年 Q3 营收为 500 万元" │ │ • Claim 2: "华东区提供了主要营收来源" │ │ • Claim 3: "下半年计划在欧洲开设 10 家新分店" │ └──────────────────────────────┬─────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 步骤 2: 逐条自然语言推理蕴含检验 (NLI / Entailment Test)│ │ 动作: 独立裁判模型核验每个 Claim 是否被 Context 严格支撑:│ │ • Claim 1: [✅ ENTAILED 蕴含支撑] (上下文有明确证据)│ │ • Claim 2: [✅ ENTAILED 蕴含支撑] │ │ • Claim 3: [❌ CONTRADICTED / NOT SUPPORTED] (编造!)│ └──────────────────────────────┬─────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 步骤 3: 忠实度指标定量计算 (Faithfulness Score Formula) │ │ 公式: Faithfulness = (受支撑的原子主张数) / (总主张数) │ │ 计算: 2 / 3 = 0.667 ──► 低于 0.95 门禁,直接阻断发版! │ └────────────────────────────────────────────────────────┘二、生产级 Python 事实一致性(Faithfulness)断言评估器实现
基于 Prompt 逻辑工程与大模型裁判,构建生产级自动化断言流水线:
import json from typing import List, Dict, Any from pydantic import BaseModel, Field class AtomicClaimEvaluation(BaseModel): claim_text: str is_supported_by_context: bool evidence_quote_from_context: str = "" rejection_reason: str = "" class FaithfulnessReport(BaseModel): total_claims: int supported_claims: int faithfulness_score: float hallucinated_claims: List[str] is_passed_guardrail: bool class FaithfulnessEvaluator: def __init__(self, judge_llm_client, min_faithfulness_threshold: float = 0.95): self.judge_llm = judge_llm_client self.threshold = min_faithfulness_threshold def evaluate_faithfulness(self, context: str, answer: str) -> FaithfulnessReport: # 1. 组装严谨的原子命题拆解与 NLI 蕴含核验提示词 prompt = f""" 你是一名冷酷严苛的事实一致性逻辑裁判官。 你的任务是核验【模型回答】中的每一个原子事实主张,是否能【100% 毫无争议地由给定的参考上下文推导支撑】。 【参考上下文】: {context} 【待核验回答】: {answer} 【执行步骤】: 1. 将【待核验回答】拆解为独立的原子主张列表(Atomic Claims); 2. 针对每一个原子主张,在【参考上下文】中寻找证据: - 若上下文中有明确依据,标记 is_supported_by_context = true,并提取原文引用; - 若上下文中未提及、或存在出入,标记 is_supported_by_context = false,并写明驳回原因。 请严格按以下 JSON 格式输出: {{ "evaluations": [ {{"claim_text": "...", "is_supported_by_context": true, "evidence_quote_from_context": "..."}}, {{"claim_text": "...", "is_supported_by_context": false, "rejection_reason": "..."}} ] }} """ raw_resp = self.judge_llm.generate(prompt) parsed = json.loads(raw_resp.strip("`").replace("json", "")) evals = [AtomicClaimEvaluation(**item) for item in parsed["evaluations"]] total = len(evals) supported = sum(1 for e in evals if e.is_supported_by_context) score = supported / total if total > 0 else 1.0 hallucinated = [e.claim_text for e in evals if not e.is_supported_by_context] is_passed = score >= self.threshold print(f"\n📊 【忠实度评估报告】总主张数: {total} | 获支撑数: {supported} | 忠实度得分: {score:.3f}") if not is_passed: print(f"🚨 【捕获幻觉主张】: {hallucinated}") return FaithfulnessReport( total_claims=total, supported_claims=supported, faithfulness_score=round(score, 4), hallucinated_claims=hallucinated, is_passed_guardrail=is_passed )三、在 CI/CD 自动化门禁中执行断言拦截
在 GitHub Actions 或发布流水线中,将evaluate_faithfulness作为不可跨越的单元测试断言:
def test_prompt_regression_faithfulness(): evaluator = FaithfulnessEvaluator(judge_llm, min_faithfulness_threshold=0.98) # 在 50 个高难度测试集上运行回归 for test_case in golden_test_suite: generated_answer = agent.run(test_case.context, test_case.question) report = evaluator.evaluate_faithfulness(test_case.context, generated_answer) # 核心断言:只要出现未经验证的幻觉,直接在 CI 中阻断发布! assert report.is_passed_guardrail, f"【质量门禁阻断】发现致命幻觉主张: {report.hallucinated_claims}"四、生产治理收益
通过在智能体系统全生命周期中落地事实一致性(Faithfulness)评估:
- 消除了 100% 因发版 Prompt 退化引发的无意识幻觉引入;
- 线上核心业务的生成准确度达到 99.2% 金融级水准;
- 摆脱了人工肉眼抽查的低效原始方式,实现了幻觉排查的全自动化、定量化度量。
严把事实关口,寸步不让。把大模型的每一次输出解构为原子命题进行逻辑拷问,是让智能体赢得企业级客户长期信任的核心质量生命线。