概述

AI测试标准与规范是保障人工智能系统质量、安全和合规性的基础框架。随着AI技术的快速发展和广泛应用, 国际标准化组织、各国监管机构和行业协会正在积极构建多层次的AI治理体系。对于银行业而言, 理解和遵循这些标准不仅是合规要求,更是确保AI系统可靠运行、保护客户利益的关键举措。

💡 核心理解 AI标准体系可分为三个层次:管理标准(如ISO 42001,关注组织层面的AI治理)、 技术标准(如模型评测、安全评估标准)、监管法规(如EU AI Act,具有法律强制力)。 三个层次相互支撑,共同构成完整的AI治理框架。

1. 国际标准

ISO/IEC 42001:AI管理体系标准

ISO/IEC 42001:2023 是全球首个AI管理体系国际标准,为组织建立、实施、维护和持续改进AI管理体系提供了框架。 该标准借鉴了ISO 9001(质量管理)和ISO 27001(信息安全管理)的成功经验,采用PDCA(计划-执行-检查-改进)循环, 帮助组织系统化地管理AI风险与机遇。

ISO/IEC 23053:AI系统框架

ISO/IEC 23053:2022 定义了AI系统的通用框架和概念,包括AI系统生命周期、组件和角色。 该标准为AI系统的设计、开发和部署提供了统一的术语和参考架构。

NIST AI RMF:AI风险管理框架

美国国家标准与技术研究院(NIST)发布的AI风险管理框架(AI RMF 1.0),提供了AI风险管理的结构化方法。 该框架已被全球众多组织采纳,成为AI治理的事实标准之一。

EU AI Act:欧盟人工智能法案

欧盟人工智能法案(EU AI Act)是全球首部全面监管AI的法律框架,采用基于风险的分级监管体系, 对AI系统的开发、部署和使用提出了明确的法律要求。

风险等级定义监管要求示例
不可接受风险对安全、生计和权利构成明显威胁的AI应用完全禁止社会信用评分、实时远程生物识别
高风险影响安全或基本权利的AI系统严格合规评估、透明性义务、人工监督信贷评估、招聘筛选、医疗诊断
有限风险需要一定透明度要求的AI系统用户知情权、标注义务聊天机器人、深度合成内容
极小风险大多数常见的AI应用无额外义务(建议自愿遵守行为准则)AI驱动推荐、垃圾邮件过滤
📌 银行业影响 EU AI Act将银行业中的信用评估反欺诈检测客户画像分析等AI应用归类为"高风险", 银行需要建立完善的AI治理体系、进行合规评估并保存完整的文档记录。对于在中国有欧洲业务的银行,需要特别关注该法案的合规要求。

2. 中国AI政策与标准

中国在AI治理领域已形成了\"发展规划 + 法律法规 + 技术标准\"的立体化政策体系, 覆盖算法治理、深度合成、生成式AI等关键领域。

新一代AI发展规划

国务院发布的《新一代人工智能发展规划》(2017年)是中国AI发展的纲领性文件,明确了"三步走"战略目标。 该规划强调AI治理体系建设,提出\"到2025年初步建立AI法律法规、伦理规范和政策体系\"的目标。

算法备案管理制度

《互联网信息服务算法推荐管理规定》(2022年施行)要求算法推荐服务提供者进行算法备案、 公示算法基本原理,并建立人工干预和用户自主选择机制。这是中国首个系统性的算法治理法规。

深度合成管理规定

《互联网信息服务深度合成管理规定》(2023年施行)针对AI生成/合成内容进行专门规制, 要求深度合成服务提供者对生成内容进行标识、建立辟谣机制、加强训练数据管理。

生成式AI管理办法

《生成式人工智能服务管理暂行办法》(2023年8月施行)是全球率先针对生成式AI的专项法规, 对训练数据合法性、内容安全、用户权益保护等提出了系统性要求。

金融行业AI监管要求

金融监管总局(原银保监会)和人民银行针对金融AI应用发布了一系列监管指引和标准规范。

文件/规范发布机构核心要求
《金融科技发展规划(2022-2025年)》人民银行深化AI在金融领域的应用,健全金融科技治理体系
《银行业金融机构数据治理指引》银保监会数据全生命周期管理,为AI模型提供高质量数据基础
《人工智能算法金融应用评价规范》人民银行算法安全性、可解释性、精准性等多维评价
《金融业数据能力建设指引》人民银行提升数据管理能力,支持AI驱动的业务创新
《金融数据安全 数据安全分级指南》金标委数据分级保护,为AI训练数据安全管理提供依据
《个人金融信息保护技术规范》金标委个人金融信息全生命周期保护,AI系统中客户数据的采集、存储、使用和销毁
《金融业数据安全等级保护实施指引》金标委金融数据安全等级保护的落地实施,AI系统需符合对应等级的安全防护要求
《金融科技产品认证规则》市场监管总局/人民银行金融科技产品的认证要求,含AI类产品的检测认证规范
《商业银行互联网贷款管理暂行办法》银保监会互联网贷款中AI风控模型的管理要求,模型需定期评估验证
《金融科技(FinTech)发展规划(2019-2021年)》人民银行前期规划,提出"守正创新、安全可控"的金融科技发展原则
《金融业标准化体系建设发展规划》人民银行/金标委金融标准化框架,含AI相关标准的制定计划
《金融分布式账本技术安全规范》金标委与AI结合的分布式账本安全要求(如智能合约审计)
🔍 监管文件解读要点 银行业AI项目在合规落地时,建议按以下优先级关注上述文件:① 算法合规类(算法备案、算法评价)— 直接影响AI系统能否上线; ② 数据安全类(数据治理、分级保护、个人信息保护)— 决定训练数据和用户数据的合规边界; ③ 业务规范类(互联网贷款、金融科技产品认证)— 影响AI系统在具体业务场景中的应用方式。 建议测试团队建立"监管文件跟踪台账",定期关注金融监管总局和人民银行的最新发文动态。

3. AI测试标准体系

AI测试标准体系是AI标准框架的核心组成部分,定义了如何评估和验证AI系统的各项能力。 以下从五个关键维度梳理当前的测试标准现状。

模型评测标准

模型评测标准关注AI模型的核心能力评估,包括准确率、鲁棒性、泛化能力等。 国际上,MLCommons(MLPerf基准)和HELM(Holistic Evaluation of Language Models) 是两大主流评测框架。国内也在积极制定大模型评测标准,如中国信通院发布的"可信AI"评测体系。

安全评测标准

安全评测标准覆盖AI系统的对抗鲁棒性、越狱防护、有害内容生成、隐私泄露等多个维度。 目前国内外都在积极构建安全评测标准体系。

数据质量标准

数据质量直接决定AI系统的表现。数据质量标准关注训练数据、测试数据的完整性、准确性、时效性和代表性。

可解释性标准

可解释性标准要求AI系统能够向用户和监管方解释其决策依据,在金融、医疗等高风险领域尤为重要。

公平性标准

公平性标准确保AI系统对不同群体公平对待,不产生系统性歧视。

4. 银行业适用的标准

金融科技监管要求

银行业AI应用面临多层次监管要求,包括金融监管总局的宏观审慎监管、 人民银行的技术标准规范和网信办的数据安全与算法治理要求。银行业在引入AI系统时, 需同时满足金融监管合规和技术标准合规两个维度。

银行AI系统验收标准建议

结合行业最佳实践和国际标准,银行AI系统验收应重点关注以下方面:

与某银行AI建设工程的对接

某银行AI建设工程(某银行智能运维与AI开发平台)在建设过程中,应建立与上述标准体系的对接机制:

🛠️ 某银行AI落地优先级建议 考虑到资源和时间约束,建议分阶段落地:
第一阶段(1-3个月):建立合规检查清单,完成现有AI系统的合规差距分析;
第二阶段(3-6个月):将核心合规检查项(安全评测、算法备案材料)集成到智元平台CI/CD流水线;
第三阶段(6-12个月):全面建设模型版本合规门禁和持续监控体系,实现AI合规的自动化闭环管理。
📖 落地建议 建议分三步走:第一步,梳理现有AI应用场景,识别适用的标准法规; 第二步,建立AI测试标准框架和工具链;第三步,将标准要求内化为团队日常测试活动, 并通过定期审计确保持续合规。

4.5 案例研究

以下通过两个银行业AI合规实战案例,展示AI测试标准在真实场景中的应用方法和关键启示。

📋 案例一:银行AI智能客服系统合规审查实战

背景:某股份制银行计划上线基于大语言模型的智能客服系统,面向客户提供账户查询、业务咨询等服务。在上线前,该系统需按照《算法备案管理规定》完成算法备案,并满足金融监管总局对AI应用的合规要求。

过程:测试团队联合合规部门,按照以下合规检查表逐项审查:

检查维度检查项依据标准检查结果
算法备案是否完成算法备案信息填报(算法名称、基本原理、应用场景)《算法备案管理规定》第6条✅ 通过
用户告知是否在首次交互时明确告知用户正在与AI系统对话《深度合成管理规定》第16条❌ 未通过
训练数据训练数据来源是否合法,是否包含完整的来源说明文档《生成式AI管理办法》第7条❌ 未通过
内容安全是否建立内容过滤机制,防止生成违规内容《生成式AI管理办法》第9条✅ 通过
用户权益是否建立用户投诉举报和反馈渠道《生成式AI管理办法》第13条✅ 通过
数据安全客户个人信息处理是否满足《个人信息保护法》要求《个人信息保护法》⚠️ 部分通过(需补充隐私政策)
可解释性关键业务决策(如账户异常提醒)是否可追溯和解释《人工智能算法金融应用评价规范》⚠️ 部分通过(需增加决策日志)
人工干预是否保留人工客服接管通道,用户可否要求转人工《算法推荐管理规定》第11条✅ 通过

发现的问题:

  1. 缺少用户告知机制:系统在开始对话时未明确告知用户对方为AI,违反了《深度合成管理规定》的透明性要求。
  2. 训练数据来源说明不完整:团队使用的部分训练语料来自第三方提供商,但缺少完整的来源授权链文档和数据质量评估报告。

整改措施:

  • 补充透明度声明:在对话开始时增加醒目的AI身份标识提示,并在帮助文档中详细说明系统能力边界和数据处理方式。
  • 完善数据溯源文档:联系第三方数据提供商补全数据来源授权文件,建立训练数据全生命周期管理台账,确保每一批次数据的来源、清洗过程和授权状态可追溯。
  • 建立持续合规监控:将合规检查项纳入每次系统迭代的发布检查清单,确保新功能不会引入新的合规风险。

启示:AI测试团队不能等到系统开发完成后再介入合规审查。测试人员应在项目启动初期即参与合规需求分析,将合规检查点前移到需求评审和设计评审阶段。算法备案的材料准备往往需要数周时间,提前启动可以避免成为上线瓶颈。

🔄 案例二:模型版本更新引发的合规风险

背景:某银行已在生产环境中部署了基于开源大模型的信贷审核辅助系统(用于辅助信贷审批人员分析贷款申请材料)。模型厂商发布了新版本,声称在多项基准测试中有显著提升。银行IT团队按常规流程完成了功能回归测试,准备上线新版本。

过程:测试团队在执行常规回归测试之外,额外进行了以下合规复审:

复审维度旧版本(v2.1)新版本(v3.0)变化评估
安全防护(越狱成功率)2.3%(85/3700次攻击)3.8%(141/3700次攻击)⚠️ 恶化1.5个百分点
偏见检测(性别)差异率 1.2%(✅ 通过)差异率 2.9%(❌ 未通过)❌ 超出阈值(2%)
偏见检测(地域)差异率 0.8%(✅ 通过)差异率 1.1%(✅ 通过)✅ 仍在阈值内
可解释性(SHAP一致性)0.870.79⚠️ 下降8个基点
幻觉率(金融场景)4.1%3.2%✅ 改善
指令遵循准确率91.5%94.2%✅ 改善
毒性内容过滤率99.7%99.6%✅ 基本持平

发现的问题:

  1. 偏见回归:新版本在处理"不同性别申请人收入相同但职业不同"的边缘案例时,出现了系统性偏见回归——对女性申请人的还款能力评估更为保守。经分析,这可能是新版本训练数据中职业分布不均衡导致。
  2. 安全防护能力下降:新版本对提示注入攻击的防御能力有所下降,可能因为模型能力增强后对指令的敏感度提高,更容易被恶意构造的系统提示覆盖。
  3. 可解释性退化:新版本在信贷审批建议的可解释性上有所退化,SHAP特征归因的一致性下降,这对需要向监管方解释决策依据的银行场景构成了显著风险。

决策:基于上述发现,测试团队建议暂缓新版本上线,要求模型厂商针对偏见问题提供改进方案,同时在内部建立专项的模型版本合规复审SOP。

启示:

  • 模型版本更新 ≠ 简单升级:AI模型的功能改进可能伴随安全、公平性、可解释性等方面的退化,必须进行全面的合规复审。
  • 建立版本更新合规门禁:建议在模型上线流程中增加"AI合规复审"门禁节点,覆盖安全、偏见、可解释性、透明度等关键维度,并设定可量化的通过阈值。
  • 关注边缘案例:常规基准测试往往覆盖主流场景,但合规风险往往隐藏在边缘案例中。建议建立银行特定业务场景的"红灯测试集",专门用于版本更新时的回归检测。

4.6 标准交叉引用表

以下表格列出了AI测试知识库各章节涉及的核心标准和规范,便于在查阅具体内容时快速定位相应的标准依据。

知识库章节涉及标准/规范标准类型关联度
01 基础概念 · 大模型基础 ISO/IEC 23053 AI系统框架 国际标准 ⭐⭐⭐
01 基础概念 · 评测体系概览 NIST AI RMF、MLPerf评测框架 国际标准/行业基准 ⭐⭐⭐
02 大模型评测 · 评测维度 HELM、OpenCompass、SuperCLUE 行业基准 ⭐⭐⭐
02 大模型评测 · 评测基准 MLCommons MLPerf、MMLU、C-Eval 行业基准 ⭐⭐⭐
02 大模型评测 · 安全评测 OWASP Top 10 for LLM、MITRE ATLAS
《生成式AI服务管理暂行办法》(第9条内容安全)
国际框架/中国法规 ⭐⭐⭐
03 AI辅助测试 · 测试用例生成 ISO/IEC 29119 软件测试标准系列 国际标准 ⭐⭐
03 AI辅助测试 · 测试数据合成 《个人信息保护法》《金融数据安全分级指南》 中国法规/行业标准 ⭐⭐
04 AI应用测试 · RAG系统测试 RAGAS评测框架、ISO 8000数据质量标准 行业工具/国际标准 ⭐⭐
04 AI应用测试 · Agent智能体测试 NIST AI RMF(测量功能) 国际框架 ⭐⭐
05 可复用资产 · 检查清单 本页面 · 合规检查清单
EU AI Act 高风险系统检查要求
本库内部标准/国际法规 ⭐⭐⭐
06 银行业AI测试 · 监管合规 《人工智能算法金融应用评价规范》
《金融科技发展规划(2022-2025)》
EU AI Act(高风险分类)
中国行业标准/国际法规 ⭐⭐⭐
07 测试工具链 · 安全测试工具 OWASP Top 10 for LLM、MITRE ATLAS
Garak/Giskard安全测试框架
国际框架/开源工具 ⭐⭐⭐
08 AI系统性能测试 MLPerf Inference基准
金融SLA性能指标(行业惯例)
行业基准 ⭐⭐
09 AI Coding质量保障 ISO/IEC 5055(软件代码质量测度)
OWASP代码安全指南
国际标准/行业指南 ⭐⭐
10 治理与合规 · 本页面 ISO/IEC 42001、EU AI Act
《生成式AI管理办法》《算法备案管理规定》
《金融业数据能力建设指引》
国际标准/法规合集 ⭐⭐⭐

5. 实战演练

任务一:AI标准适用矩阵分析

背景:假设你所在的团队正在开发一款面向银行内部使用的AI智能客服系统, 该系统基于大语言模型,可回答员工关于业务制度、操作流程的咨询。

任务要求

  1. 列出该系统需要遵循的国内外AI标准与法规(至少5项),并说明适用原因。
  2. 针对每项标准/法规,制定3-5项具体的测试检查点。
  3. 使用表格形式汇总(标准名称 → 适用原因 → 测试检查点)。

输出物:AI标准适用矩阵表(Excel或Markdown格式)

任务二:高风险AI系统合规评估演练

背景:参考EU AI Act高风险分类,银行反欺诈AI系统被归类为"高风险系统", 需要进行全面的合规评估。该系统使用机器学习模型实时分析交易行为,识别异常交易并触发预警。

任务要求

  1. 编写该反欺诈系统的\"AI影响评估报告\"大纲,覆盖以下维度:
    • 系统用途和适用范围
    • 训练数据来源和质量评估
    • 模型可解释性和决策透明度
    • 人工监督和干预机制
    • 公平性和偏差评估
    • 安全性和鲁棒性测试结果
  2. 针对EU AI Act和国内金融监管要求,制定合规检查清单(Checklist,不少于15项)。
  3. 识别3个可能存在的合规风险点,并提出缓解措施。

输出物:AI影响评估报告大纲 + 合规检查清单 + 风险识别与缓解方案

🎯 实战提示 完成上述任务时,请以银行实际业务场景为出发点,结合某银行"某银行AI"等实际平台建设情况, 确保演练成果具有实际可操作性,而非停留在理论层面。

💻 AI合规检查代码示例

以下Python脚本实现了AI系统输出的自动化合规检查,涵盖敏感信息检测违规承诺识别免责声明核验三大维度,可直接集成到CI/CD流水线或AI网关中作为合规护栏。

#!/usr/bin/env python3
"""
AI合规检查自动化脚本
功能:检查AI系统输出文本的合规性
  - 敏感信息检测:身份证号、手机号、银行卡号
  - 违规承诺识别:保本、保收益、稳赚等金融违规用语
  - 免责声明核查:是否包含必要的风险提示
  - 生成结构化合规检查报告
"""

import re
import json
from datetime import datetime
from dataclasses import dataclass, field
from typing import List


# ============================================================
# 正则规则库
# ============================================================
SENSITIVE_PATTERNS = {
    "身份证号": r"(?<![0-9])([1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx])(?![0-9])",
    "手机号": r"(?<![0-9])1[3-9]\d{9}(?![0-9])",
    "银行卡号": r"(?<![0-9])(62|60|58|56|55|53|52|51|45|44|43|42|41|40|37|36|35|34|30)\d{14,17}(?![0-9])",
}

# 金融违规承诺关键词库
ILLEGAL_COMMITMENT_KEYWORDS = [
    "保本", "保收益", "保底", "保息", "保证收益",
    "稳赚", "稳赢", "稳盈", "稳收益",
    "零风险", "无风险", "绝对安全", "万无一失",
    "年化收益.*%", "预期收益.*%", "固定收益",
    "承诺收益", "承诺回报", "承诺保本",
    "刚性兑付", "本息保障", "兜底",
]

# 合规免责声明关键短语
DISCLAIMER_KEYWORDS = [
    "投资有风险", "风险自担", "不构成投资建议",
    "仅供参考", "市场有风险", "入市需谨慎",
    "过往业绩不预示未来", "不保证收益",
]


# ============================================================
# 数据结构
# ============================================================
@dataclass
class Finding:
    """单条检查发现"""
    category: str          # 类别:敏感信息 / 违规承诺 / 缺失免责声明
    severity: str          # 严重程度:高 / 中 / 低
    rule: str              # 触发的规则名称
    matched_content: str   # 匹配到的内容(脱敏后)
    position: int          # 在原文中的位置(字符偏移)


@dataclass
class ComplianceReport:
    """合规检查报告"""
    timestamp: str
    total_findings: int
    high_risk_count: int
    medium_risk_count: int
    low_risk_count: int
    findings: List[Finding] = field(default_factory=list)
    passed: bool = True


# ============================================================
# 检查引擎
# ============================================================
class AIComplianceChecker:
    """AI输出合规检查器"""

    def __init__(self, require_disclaimer: bool = True):
        """
        Args:
            require_disclaimer: 是否强制要求包含免责声明
        """
        self.require_disclaimer = require_disclaimer
        self._compile_patterns()

    def _compile_patterns(self):
        """预编译所有正则表达式,提升性能"""
        self._compiled = {}
        for name, pattern in SENSITIVE_PATTERNS.items():
            self._compiled[name] = re.compile(pattern)

    def _mask_sensitive(self, text: str) -> str:
        """脱敏处理:保留首尾,中间用 * 替换"""
        if len(text) <= 4:
            return text[0] + "*" * (len(text) - 1)
        return text[:2] + "*" * (len(text) - 4) + text[-2:]

    def check_sensitive_info(self, text: str) -> List[Finding]:
        """检查敏感信息(身份证/手机号/银行卡号)"""
        findings = []
        for rule_name, pattern in self._compiled.items():
            for match in pattern.finditer(text):
                findings.append(Finding(
                    category="敏感信息泄露",
                    severity="高",
                    rule=rule_name,
                    matched_content=self._mask_sensitive(match.group()),
                    position=match.start(),
                ))
        return findings

    def check_illegal_commitments(self, text: str) -> List[Finding]:
        """检查违规承诺(保本/保收益等金融违规用语)"""
        findings = []
        for keyword in ILLEGAL_COMMITMENT_KEYWORDS:
            for match in re.finditer(keyword, text):
                findings.append(Finding(
                    category="违规承诺",
                    severity="高" if "保" in keyword or "承诺" in keyword else "中",
                    rule=f"金融违规用语: {keyword}",
                    matched_content=match.group(),
                    position=match.start(),
                ))
        return findings

    def check_disclaimer(self, text: str) -> List[Finding]:
        """检查是否包含必要的免责声明"""
        findings = []
        found_any = False
        for keyword in DISCLAIMER_KEYWORDS:
            if re.search(keyword, text):
                found_any = True
                break

        if not found_any and self.require_disclaimer:
            findings.append(Finding(
                category="缺失免责声明",
                severity="中",
                rule="未检测到风险提示/免责声明",
                matched_content="(全文未找到免责声明关键词)",
                position=-1,
            ))
        return findings

    def run(self, text: str, source: str = "AI Output") -> ComplianceReport:
        """
        执行完整的合规检查

        Args:
            text: AI系统输出的文本
            source: 来源标识(用于报告溯源)

        Returns:
            ComplianceReport: 结构化的合规检查报告
        """
        if not text or not text.strip():
            return ComplianceReport(
                timestamp=datetime.now().isoformat(),
                total_findings=0,
                high_risk_count=0,
                medium_risk_count=0,
                low_risk_count=0,
                passed=True,
            )

        all_findings = []
        all_findings.extend(self.check_sensitive_info(text))
        all_findings.extend(self.check_illegal_commitments(text))
        all_findings.extend(self.check_disclaimer(text))

        # 统计各级别数量
        high = sum(1 for f in all_findings if f.severity == "高")
        medium = sum(1 for f in all_findings if f.severity == "中")
        low = sum(1 for f in all_findings if f.severity == "低")

        # 如果有高危发现,则整体不通过
        passed = high == 0

        return ComplianceReport(
            timestamp=datetime.now().isoformat(),
            total_findings=len(all_findings),
            high_risk_count=high,
            medium_risk_count=medium,
            low_risk_count=low,
            findings=all_findings,
            passed=passed,
        )


# ============================================================
# 报告生成
# ============================================================
def print_report(report: ComplianceReport, source: str = "AI Output"):
    """格式化打印合规检查报告"""
    status_icon = "✅" if report.passed else "❌"
    status_text = "通过" if report.passed else "不通过"

    print("=" * 60)
    print(f"  AI合规检查报告  {status_icon} {status_text}")
    print("=" * 60)
    print(f"  检查时间 : {report.timestamp}")
    print(f"  来源     : {source}")
    print(f"  总发现数 : {report.total_findings}")
    print(f"    🔴 高危: {report.high_risk_count}")
    print(f"    🟡 中危: {report.medium_risk_count}")
    print(f"    🟢 低危: {report.low_risk_count}")
    print("-" * 60)

    if not report.findings:
        print("  ✅ 未发现合规问题")
    else:
        for i, f in enumerate(report.findings, 1):
            icon = {"高": "🔴", "中": "🟡", "低": "🟢"}.get(f.severity, "⚪")
            print(f"  [{i}] {icon} [{f.category}] {f.rule}")
            print(f"      匹配内容: {f.matched_content}")
            if f.position >= 0:
                print(f"      位置: 第 {f.position} 个字符处")

    print("=" * 60)
    print()

    return report


def export_report_json(report: ComplianceReport, filepath: str):
    """导出报告为JSON文件"""
    data = {
        "timestamp": report.timestamp,
        "passed": report.passed,
        "total_findings": report.total_findings,
        "high_risk_count": report.high_risk_count,
        "medium_risk_count": report.medium_risk_count,
        "low_risk_count": report.low_risk_count,
        "findings": [
            {
                "category": f.category,
                "severity": f.severity,
                "rule": f.rule,
                "matched_content": f.matched_content,
            }
            for f in report.findings
        ],
    }
    with open(filepath, "w", encoding="utf-8") as fp:
        json.dump(data, fp, ensure_ascii=False, indent=2)
    print(f"📄 报告已导出至: {filepath}")


# ============================================================
# 使用示例
# ============================================================
if __name__ == "__main__":
    checker = AIComplianceChecker(require_disclaimer=True)

    # ---- 测试案例 1:包含敏感信息和违规承诺 ----
    print("【案例1】违规输出(应不通过)")
    bad_output = """
    根据我们的AI模型分析,该理财产品年化收益8.5%,
    保本保息,零风险稳赚不赔。如需购买请联系张经理,
    手机号13812345678,身份证号110101199001011234。
    """
    report1 = checker.run(bad_output, source="理财产品推荐AI")
    print_report(report1)

    # ---- 测试案例 2:合规输出 ----
    print("【案例2】合规输出(应通过)")
    good_output = """
    根据历史数据和当前市场状况,我们为您提供以下参考分析。
    请注意:投资有风险,市场有波动,过往业绩不预示未来表现,
    本文不构成投资建议,入市需谨慎,风险自担。
    建议您根据自身风险承受能力做出独立判断。
    """
    report2 = checker.run(good_output, source="投资分析AI")
    print_report(report2)

    # ---- 测试案例 3:缺少免责声明 ----
    print("【案例3】缺少免责声明(应不通过)")
    no_disclaimer_output = """
    今日大盘走势良好,建议关注科技板块,预计下周将有不错表现。
    您可以考虑分批建仓,当前是较好的入场时机。
    """
    report3 = checker.run(no_disclaimer_output, source="投资建议AI")
    print_report(report3)

    # 导出合规报告
    export_report_json(report1, "/tmp/compliance_report_case1.json")
💡 集成建议
可将此脚本集成到 AI网关中间件CI/CD合规门禁 中:
  • 每次AI生成回复后自动调用 checker.run(output)
  • report.passed == False,拦截输出并返回预设的安全回复
  • 所有检查报告存档审计,满足监管追溯要求