AuditProbe-审探:AI辅助的年报财务风险审计系统:三模型交叉仲裁、22条合同合规规则、三方博弈分析与五角色HITL可追溯审计闭环

AI辅助的年报财务风险审计系统:三模型交叉仲裁、22条合同合规规则、三方博弈分析与五角色HITL可追溯审计闭环

分支3Tags6
文件最后提交记录最后更新时间
30 天前
15 天前
9 天前
12 天前
8 天前
12 天前
17 天前
12 天前
9 天前
9 天前
9 天前
9 天前
9 天前
28 天前
12 天前
8 天前
9 天前
30 天前
9 天前
9 天前
12 天前
12 天前
12 天前
15 天前
12 天前
9 天前

🛡️ 审探 AuditProbe

基于白盒规则、证据定位与人工复核的财报风险筛查助手

金融行业应用 Agent 黑客松参赛作品 · 智能风控与反欺诈赛道 当前版本:v2.0.0(决赛版) · 初赛发布版:v1.0.0 · 当前决赛分支:final-sprint-react-v3 · 文档更新:2026-08-29

⚡ 30 秒快速认知

问题 答案
做什么 上传年报 PDF → 数据门禁 → 三路信号 (M-Score / 红旗 / F-Score) 排雷 → 监管案例核查任务 → HITL 人工复核 → 按门禁导出正式底稿或待复核草稿
给谁用 会计师与企业内审 / 银行信贷风控 / 券商投行与质控 / 保险资管与机构投资风控
凭什么不同 核心公式与仲裁规则可复算 + 18 种完整数据组合的三路信号确定性仲裁 + SHA-256 审计链 + 中注协第19号问题解答参考映射
怎么跑 python -m streamlit run ui/professional_app.py --server.port 8501
有无演示 5 组虚构基线 + 3 组公开历史事件索引;核心规则与缓存不依赖在线模型,部分前端资源需要网络

决赛分支当前状态

项目 已完成事实 对外边界
自动化回归 2026-08-28 当前工作树完整回归 386 passed(360 决赛基线 + 10 项发布安全门禁 + 16 项哈希链完整性) 测试数不等于产品准确率;最终冻结提交仍须在干净 Python 3.11 环境重跑
Ascend r5 正式验收 固定短任务 30/30,p50/p95 15.33/19.44 s;业务负载 15/15,finalizer overall_pass=true 证明对应 ModelArts 在线推理部署通过验收,不表示整套系统全部运行在 NPU,也不构成生产 SLA
T07 绝对指标参考 CPU 24/25,p50 64.986 s;NPU 25/25,p50 16.502 s 两端完整权重摘要未证明一致,禁止相除或声称“加速 X%”
v2.0.0 发布材料 18 页发布 PPTX + 24 秒 1080p 演示视频已按 v2.0.0 口径冻结,截图、386 项回归与正式底稿双门禁均已同步 两个媒体文件作为 Release 附件发布,不把大型二进制写入源码仓库;文件名与 SHA-256 见 release/assets-v2.0.0.json

统一口径与公开证据索引见v2.0.0 发布验收状态;8 月 21 日决赛阶段历史记录保留在历史验收状态。ModelArts 在线服务当前已停止但未删除,停止期间不描述为在线可用服务;核心规则、缓存案例与仲裁流程仍可离线运行。

🚀 3 分钟跑起来(评委快速验证)

无需任何 API Key、无需昇腾环境,本地约 3 分钟启动并看到界面(完整测试验证约 5 分钟):

# 1. 安装依赖(约 60 秒)
pip install -r requirements.txt

# 2. 一键启动 UI(载入 5 组预设模拟案例,离线可跑)
python -m streamlit run ui/professional_app.py --server.port 8501
#    → 浏览器自动打开 http://localhost:8501
#    → 顶部案例选择器载入「乐视 2015 / 康美 2017 / 獐子岛 2016」等预设样本

# 3. 跑 386 项自动化回归(本地离线,无 LLM 调用)
python -m pytest -q
#    → 期望输出:386 passed(360 项决赛基线 + 1 项 XSS 门禁 + 8 项身份门禁 + 1 项发布契约 + 16 项哈希链完整性)

昇腾环境证据

  • npu/final_20260821_r5.json — 2026-08-21 同版本正式验收汇合结果,六项门禁全部通过、overall_pass=true;公开仓库仅保留复核后的证据文件,基础设施敏感元数据另在私有证据目录留档。
  • docs/release-validation-status-v2.0.0.md — v2.0.0 回归、安全、Docker 与发布状态的公开单一真相表。
  • docs/final-validation-status-2026-08-21.md — r5 与 T07 的历史验收证据记录。
  • npu/ascend_layer1-4_evidence.json — 组合证据(artifact_type: composite_evidence),Layer 1-3 来自 2026-08-09 ModelArts(Ascend 910B4)实测,Layer 4 为本地纯 CPU 重测(30 次重复 perf_counter,avg 0.141ms)。
  • npu/ascend_llm_observation_2026-08-09.json — LLM 启用时的外部观察(avg 26.774s),已从 Layer 4 拆出独立归档,明确包含模型服务与网络延迟,不属于可复现的纯 CPU 口径。
  • npu/historical_red_flag_llm_2026-08-09.json — 14/14 红旗 AI 解读的用户提供终端转录型历史观察(evidence_type: user_supplied_terminal_transcription,原始转录原文留档于 npu/transcripts/red_flag_llm_2026-08-09.txt,SHA-256 c72e5840...;非机器可读 summary,华为云已关闭无法重跑)。
  • npu/historical_pdf_e2e_2026-08-09.json — 6 份真实 PDF 批量分析摘要输出的截图转录型历史观察(manual_pdf_observation_status: screenshot_verifiedformal_end_to_end_success_count: null,截图仅证明产生可见分析摘要,不证明完整端到端+AI 解读;非机器可读 summary,华为云已关闭无法重跑)。
  • 云端原始截图未纳入仓库,仅保留在本地 自留文件/华为云运行情况/(含 SHA-256 核验记录)。

详细量化验证:见 docs/quantitative-advantages.md — 含红旗 AI 解读 14/14、PDF 核心分析链验证(6/6 真实 PDF 均产生可见分析摘要,本地走离线降级路径不执行真实 LLM 解读)、三案例提前预警、雷达图数据、规则 vs AI 对比。

核心能力

能力维度 本项目实现 验证方式
懂行 本土红旗五因子 + 15 项 CAS 参考映射 + R2/R3/R4 部分行业阈值 规则、公式和参考来源公开;映射用于提示核查方向,不等于逐条执行准则
能干 PDF 上传 → 三路信号 → 仲裁 → 证据 → HITL → 按门禁导出 Docker 可复现部署;关闭在线 LLM 后仍可完成核心分析和规则兜底叙事
可信 原文线索 + 准则映射 + 可复算路径 + SHA-256 审计链 全项目 386 项自动化回归(360 项决赛基线 + 10 项发布安全门禁 + 16 项哈希链完整性);数据不足、未实测指标和能力边界显式披露
可衡量 18 种完整数据仲裁组合、8 组可复现场景、16 类 PDF 字段 8 项当前可核查指标;r5 昇腾正式验收与 T07 双端绝对指标已留证,抽取质量等未完成项继续标记待测

审探接受带文本层的年报 PDF,提取双期财务数据,运行 Beneish M-Score、本土红旗五因子和五因子项目异常分,再以确定性规则形成风险筛查等级。系统可整理年报原文线索、关联准则条目,并将真实上传报告送入 HITL 人工复核和底稿导出流程。

它不是舞弊认定、信用评级或自动审计工具。模型分数未经 A 股标签样本概率标定,证据匹配结果也不等于已取得充分、适当的审计证据;最终判断仍由具备相应职责的人员作出。

同一核心引擎,多场景核查功能

审探不为每个金融机构重新制造一套黑盒模型。不同机构面对年报时关注的业务结果不同,但底层工作具有相同结构:校验数据 → 识别风险 → 回到原文 → 关联监管事实 → 生成人工核查任务 → 留痕并导出。因此,同一套白盒内核可以按岗位组合成多套核查功能,同时保持公式、证据契约和审计链一致。

年报 PDF
  → 8 个关键科目 × 2 期数据门禁
  → M-Score / 本土红旗 / F-Score + 非财务披露事件
  → 年报原文页序、准则参考与监管案例
  → Agent 人工核查清单
  → HITL 确认、驳回或回滚
  → Markdown / Excel / 可打印 HTML(分别附 SHA-256)
使用对象 具体工作任务 复用的现有能力 可交付结果 明确边界
会计师事务所 / 企业内审 年报风险初筛、项目复核、重大异常核查准备 三路信号、原文证据、CAS 参考映射、HITL 风险事项、证据页、复核记录、底稿草稿 不替代注册会计师判断,不自动形成审计意见
银行信贷与贷后风控 授信材料复核、贷后年报监测、风险会商准备 数据门禁、现金流/负债/收入质量红旗、审计意见与诉讼事件 客户核查问题、异常金额来源、人工处置记录 不自动授信、拒贷或生成信用评级
券商投行、质控与持续督导 IPO 尽调辅助、持续督导、年报问询和信披风险排查 监管案例 Mini-RAG、关联依据、人工核查清单、可追溯导出 尽调核查方向、监管案例来源、待补证据清单 案例相似不得推导同罪,不替代保荐或合规意见
保险资管 / 机构投资风控 持仓发行人、债券发行人和交易对手年度风险复核 审计意见、持续经营、减值、现金流及财务结构信号 发行人风险线索、证据摘要、复核任务包 不输出买卖建议,不覆盖保险理赔反欺诈
金融科技与风险平台团队 将核查能力接入现有工作台或私有环境 模块化数据契约、RBAC、HITL、SQLite/SHA-256 链、离线规则兜底 可复算的核查组件与留痕接口 当前仓库未对接具体机构的核心业务系统,生产接入需重新验证

用户、使用部门与价值落点

一线使用者 典型负责部门 他们得到的直接价值
审计项目成员、复核人员、内审人员 审计质控、企业审计部 从“翻完整份年报”收敛为“复核有来源的异常事项和核查任务”
客户经理、授信审查员、贷后风险经理 银行风险管理部、授信审批部、金融科技部 把财务异常转换为可分派、可确认、可回溯的贷后检查问题
投行项目组、持续督导和质控人员 券商投行、质控、合规与科技部门 用官方监管案例补充尽调方向,同时保留相似性边界和来源
信用研究员、发行人风险人员 保险资管、券商资管、机构投资风险团队 对持仓发行人的持续经营和信披风险进行统一年度复核

主演示仍聚焦一条可验证链路:真实年报上传 → 风险与证据 → 监管案例 → Agent 核查清单 → 人工确认 → 底稿导出。银行、券商和保险资管不是额外堆叠的独立产品,而是对同一核查任务包的岗位化使用方式。

系统架构

┌─────────────────────────────────────────────────────────────────────────┐
│                    Layer 1 · PDF 预处理层                                │
│  可选 scan_corrector_adapter(版面旋转校正;三层熔断,不含 OCR)         │
│  text_extractor(锚点定位法 · 16 项指标抽取)                            │
└────────────────────────────────┬────────────────────────────────────────┘
                                 │
                                 ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                    Layer 2 · 核心计算层                                  │
│  ┌──────────────┐  ┌─────────────────┐  ┌────────────────┐              │
│  │ M-Score 8 因子│→│ 本土红旗五因子   │→│ EvidenceCollector│             │
│  │ (系数不可改)│  │ + F-Score 五因子 │  │ + 15 项 CAS 映射│             │
│  │              │  │ + Altman Z-Score │  │ 三层证据匹配    │              │
│  └──────────────┘  └─────────────────┘  └────────┬───────┘              │
│                                                  │                       │
│  ┌───────────────────────────────────────────────┴─────────────────────┐│
│  │  HybridRiskAssessor 混合评估(含 arbiter.py 三路信号确定性仲裁)  ││
│  │  多期趋势分析(multi_year_trend.py)+ 会计调整(adjustment.py)     ││
│  │  可选:昇腾 LLM 归因叙事(S1-11 三级降级)+ 博弈解释叠加           ││
│  └─────────────────────────────────────────────────────────────────────┘│
└────────────────────────────────┬────────────────────────────────────────┘
                                 │
              ┌──────────────────┴──────────────────┐
              ▼                                      ▼
┌──────────────────────────────┐  ┌─────────────────────────────────┐
│  Layer 3 · HITL 合规层       │  │  Layer 3 · CAS 准则匹配层        │
│  五态 DFA + RBAC 五类角色    │  │  cas_tracer.py                   │
│  INSERT-only 审计日志        │  │  15 项会计准则 + rapidfuzz       │
│  SHA-256 哈希链校验          │  │  确定性映射                       │
│  合同桥:后端扩展点(前端未接)│  │                                   │
└──────────────┬───────────────┘  └──────────────┬──────────────────┘
               │                                  │
               └──────────────┬───────────────────┘
                              ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                    Layer 4 · 展示与交付层                                │
│  Streamlit professional_app(专业版 8-Tab UI)+ HITL 模态弹窗           │
│  前端原型(8 个 Tab)+ 演示模式(8 组缓存;核心规则断网可用)            │
│  一键导出:页面快照 / 审计链 JSON / MD / Excel / PDF(缺库时为HTML)    │
└─────────────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────────────┐
│                    Layer 5 · 博弈对抗层(A-0 初稿)                      │
│  defense_wrapper.py(叠加层)+ defense_agent.py(规则模板库)            │
│  arbiter.py(三路信号确定性仲裁)+ 合同 / 行业 / 信用 / 证据 / HITL 联调 │
└─────────────────────────────────────────────────────────────────────────┘

模块化能力清单

下表是便于评审定位代码的能力索引,并非运行时插件注册表。

# 能力模块 主要输入 主要输出 当前实现
1 PDF 文本与指标提取 带文本层的 PDF 分页文本、双期财务字段 pdf_processing/text_extractor.py
2 M-Score 计算 双期财务指标 八因子、M-Score、数据质量 core/m_score.py
3 五因子项目异常分 双期财务指标 分值、等级、触发明细 core/f_score.py
4 本土红旗五因子 财务指标、行业 R1–R5 触发结果 core/red_flags.py
5 三路信号确定性仲裁 M/红旗/F 三路等级 最终筛查等级、规则说明 core/arbiter.py;完整数据 18 种组合
6 证据线索定位 年报文本、红旗结果 页码、关键词、截断片段 core/evidence_collector.py
7 CAS 参考映射 风险线索、准则 JSON 关联条目与匹配说明 core/cas_tracer.pydata/standards/
8 数据可信度门禁 抽取结果、来源与勾稽状态 通过/阻断、缺失与修复记录 core/financial_validation.pyui/upload_analysis.py
9 HITL 人在回路 报告、角色、操作事件 五态流转、SQLite 日志、哈希链 core/hitl_*.py;有状态模块
10 行业阈值覆盖 行业分类、通用阈值 R2/R3/R4 部分行业覆盖值 core/red_flags.pydata/industry_thresholds.json
11 AI 综合归因(可选) 结构化模型摘要 归因短文、执行摘要或规则兜底文案 core/ai_narrator.pycore/rule_based_narrator.py

核心计算和仲裁是确定性模块;HITL 依赖持久状态,在线 AI 输出也可能随服务变化。关闭在线 LLM 后,系统仍可完成规则计算、人工复核与按门禁导出,叙事由规则模板兜底。

快速了解

项目 当前实现
输入 1–8 份电子文本版 PDF;单份不超过 50 MB、合计不超过 200 MB
核心计算 M-Score 8 因子、本土红旗五因子、五因子项目异常分、三路信号确定性仲裁
可信控制 数据来源/完整性/勾稽门禁 + HITL 最终状态/哈希链门禁
输出 页面审计快照、审计链 JSON、后端 Markdown/Excel(.xlsx 8 工作表,需 openpyxl,缺失时降级 CSV zip)/PDF(缺渲染库时为可打印 HTML)
演示 5 组虚构基线 + 3 组公开历史事件索引(正式缓存 8 份);另存 8 份研究案例(data/research_cases/)仅用于阈值敏感性研究;数值和结论均为模拟演算
正式入口 python -m streamlit run ui/professional_app.py --server.port 8501

1. 已实现能力与边界

能力 实现状态 边界
单份及多年年报分析 已实现 多年文件必须是同一主体、文件名含唯一报告年份;纯扫描件需先完成 OCR
三路信号确定性仲裁 已实现 权重与阈值是项目决策策略,不代表舞弊概率或统计准确率
数据可信度硬门禁 已实现 通过仅代表可进入人工复核,不代表财报数据已获审计保证
年报证据线索与 CAS 映射 已实现 输出是定位线索和规则映射,需回看原文并由专业人员判断
HITL、RBAC、SQLite 审计链 已实现 面向本应用业务操作;不等同于通用智能体安全平台或合规认证
身份鉴权分层(P0-3) 演示边界已声明 角色/工号选择属于演示流程模拟,不构成生产身份鉴权;真实 HITL 操作必须先经侧栏「用户身份」区绑定身份(仅会话内 UI 交互可绑定),角色权限由 core/hitl_rbac.py 权限矩阵强制校验,URL 查询参数(含 ui_role)不得携带或覆盖身份,前端 header 角色下拉仅展示、不参与身份绑定;单机演示场景不接入 LDAP/OAuth 等真实登录
三格式后端底稿 已实现 只有数据门禁、最终复核和链校验同时通过才标记为正式底稿
非财务披露事件 已实现 与三路信号并列的第 4 类输入信号(如审计意见类型、重大事项、诉讼、担保、关联交易披露异常等非财务披露线索),仅做提示性展示,不参与数值评分;供人工核查时补充参考,不等于自动认定违规
监管案例核查 Agent 已实现(用户主动触发) 确定性离线检索(无 LLM),展示官方监管案例、关联依据与人工核查任务(CHK_* 清单);仅真实上传结果暴露该动作;案例相似不得推导同罪;输出未通过 verify_regulatory_agent_output 校验时标注"失败,以下结果不得采用";附录 8F-3 三端同步导出;当前版本已完成 r5 ModelArts Ascend 正式业务负载验收(见 5.3 与验收状态
合同风险 独立模块已实现,页面未接通 后端含 22 条合同风险合规规则(确定性关键词规则);前端规则库含 15 项完备性检查,每次只执行所选主要类型的 2–4 项。页面合同文本与类型不会传给后端,前端结果不进入底稿或 HITL
在线 AI 解读 可选 只生成叙事,不参与数值计算;未配置或调用失败时使用确定性降级文案
扫描件 OCR 未实现 scan-corrector 仅保留校正适配和熔断接口,当前主路径要求 PDF 自带文本层
行业对标 探索性快照 仓库未附原始样本及逐行业样本量,不作为行业实证或外部基准结论

完整说明与实现入口见 产品能力与边界

2. 计算口径

2.1 三路信号

  1. Beneish M-Score:使用公开八因子线性式。本项目选用 -1.78 作为筛查阈值;只有八因子完整时才应用阈值,缺失时返回"数据不足"。
  2. 本土红旗五因子:R1–R5 五项确定性规则用于补充货币资金、存货、现金流和应收款等风险线索。
  3. 五因子项目异常分:受错报预测研究启发,但没有复刻论文逻辑回归,也没有经过 A 股错报标签标定;1.0/1.3 是项目内部阈值。

M-Score 八因子明细(实现见 core/m_score.py):

代号 名称 计算逻辑简述 权重
DSRI 应收账款周转指数 应收账款增长率 ÷ 营业收入增长率 +0.920+0.920
GMI 毛利率指数 上期毛利率 ÷ 本期毛利率(毛利率恶化 > 1) +0.528+0.528
AQI 资产质量指数 本期非流动资产占比 ÷ 上期(衡量资产软化) +0.404+0.404
SGI 销售收入增长指数 本期营业收入 ÷ 上期营业收入 +0.892+0.892
DEPI 折旧指数 上期折旧率 ÷ 本期折旧率(衡量折旧放缓) +0.115+0.115
SGAI 销售管理费用指数 本期费率 ÷ 上期费率 −0.172-0.172
LVGI 杠杆指数 本期资产负债率 ÷ 上期资产负债率 −0.327-0.327
TATA 总应计资产比 (净利润 − 经营活动现金流) ÷ 总资产 +4.679+4.679

完整公式:

M-Score=−4.84+0.920,DSRI+0.528,GMI+0.404,AQI+0.892,SGI+0.115,DEPI−0.172,SGAI−0.327,LVGI+4.679,TATA\text{M-Score} = -4.84 + 0.920,\text{DSRI} + 0.528,\text{GMI} + 0.404,\text{AQI} + 0.892,\text{SGI} + 0.115,\text{DEPI} - 0.172,\text{SGAI} - 0.327,\text{LVGI} + 4.679,\text{TATA}

阈值:M>−1.78\text{M} > -1.78 判高风险。

本土红旗五因子(R1–R5)(实现见 core/red_flags.py,详见 风险指数算法说明):

代号 触发条件摘要
R1 盈利时经营现金流/净利润 < 0.5;经营现金流为负时严重度更高
R2 货币资金同比增长 > 70%(本期/上期 > 1.7)且存货同比增长 > 45%(本期/上期 > 1.45);或二者合计占流动资产 > 82%(可由行业参数覆盖)
R3 货币资金/总资产 > 20% 且有息负债/总资产 > 15%
R4 应收账款/总资产 > 18%(可由行业参数覆盖)
R5 存货同比增长 > 30% 且营业收入增长 < 10%

红旗有两个不同统计量,不得混用:

  • triggered_count 是实际触发项数。红旗模块的升级提示按 1 项"关注"、2 项"中高风险"、3 项及以上"高风险";RULE-A 仅在 5 项全部实际触发时生效。
  • severity_score 是严重度积分,普通项计 1 分、严重项计 2 分。仲裁器将其量化为 0=低风险、1=关注、2 及以上=高风险。

五因子项目异常分(F-Score)(实现见 core/f_score.py,详见 风险指数算法说明,采用确定性阈值规则引擎而非概率模型):

代号 名称 核心逻辑 阈值 权重
F1 RSST 应计质量变化 (Δ流动资产 - Δ短期借款 - Δ货币资金 + Δ长期借款) / 平均总资产 > 0.15 0.35
F2 Δ应收账款异常增长 Δ应收账款 / Δ营业收入 > 0.50 0.20
F3 Δ存货异常增长 Δ存货 / Δ营业成本(含小分母与高毛利双重保护) > 0.60 0.20
F4 现金-营收背离 Δ经营活动现金流 / Δ营业收入 < 30% 0.15
F5 ROA 盈利质量同比 ROA 当前 - ROA 上年(高 ROA 企业智能收紧) 下降 > 3pp 0.10

F-Score = 1.0 + 各阈值超标贡献之和。F > 1.3 → 高风险;1.0 < F ≤ 1.3 → 关注;F ≤ 1.0 → 低风险。F3 含双重保护机制:Δ营业成本过小自动跳过;毛利率 ≥ 85% 的高毛利行业自动跳过。

2.2 仲裁分

完整数据下,M-Score 两档、红旗三档、五因子项目异常分三档,共形成 18 种确定性组合。仲裁分为:

score = M_level × 0.40 + RF_level × 0.35 + F_level × 0.25

其中各分量为离散等级编码,不是概率。分档为:

  • score < 0.6:低风险
  • 0.6 <= score < 1.4:关注
  • score >= 1.4:高风险

RULE-A/B 可在满足明确条件时作保守升格。任一模型缺失时走"数据不足"路径,不把缺失误记为低风险。公式、编码和算例详见 风险指数算法说明

2.3 双 Agent 协作(确定性 + ReAct)

审计解释层由两个只读、不改变风险等级的 Agent 协作完成:

① ReAct 归因 Agent(三阶段 LLM 闭环,共 3 次模型调用)

负责把三路信号的结构化数值,串成一段 ≤280 字的因果链归因与一段 ≤200 字的执行摘要。成功链路如下:

Step0 规划 LLM(工具选择 JSON)
   ↓  解析白名单,LLM 从 3 类只读工具中正常选择 ≤3 个调用
       · lookup_cas        → CAS 编号 / 名称 / 条款 ID / 关联说明 / 条款正文(≤160 字截断,对齐 §6.3 CAS 准则依据披露要求)
       · lookup_benchmark   → 5 个精确行业 + 全市场兜底的 P25 / P50 / P75 分位
       · lookup_evidence    → 缓存证据片段按长度最多截断 180 字
   ↓  Python 本地真实执行所选工具(无网络,不产生额外 LLM 调用)
   ↓
Step2 归因 LLM(带上一轮工具真实执行结果的二次归因)
   ↓
Step3 摘要 LLM(独立生成 executive_summary)

降级策略:Step0 JSON 解析失败或 ReAct 链路整体异常 → 透明回落单轮 LLM → 再失败返回规则引擎模板。单个工具执行失败只跳过该工具,不影响其他工具或后续归因。

工具数量口径:第一轮 Prompt 约束 LLM 最多选择 3 个工具;解析层对异常模型输出做防御性截断(上限 5 个),正常运行不会超过 3 个。

超时口径:单次 HTTP 请求超时设为 60s;回落链路会追加调用,整条 ReAct 链不承诺 ≤60s 总上限

② 监管案例核查 Agent(确定性检索,无 LLM)

输入风险红旗 ID 和行业关键词,在本地 20 条监管案例 Mini-RAG 中做词元切分 + 子串匹配 + 规则 ID 加权,生成 CHK_* 人工任务清单(核查方向、建议程序、待补证据、依据条款)。零网络调用,可完全离线。

两者都不修改核心风险结果或仲裁分;预计算脚本负责将叙事文本写入 demo_cache.ai_narrative,但不会写入 react_profile(实时链路每次启动重新生成)。

3. 数据与发布门禁

真实上传报告的正式输出采用两级门禁:

flowchart LR
    A["PDF 预检与双期抽取"] --> B{"数据可信度通过?"}
    B -- 否 --> C["仅待复核草稿"]
    B -- 是 --> D["进入报告级 HITL"]
    D --> E{"CONFIRMED/REJECTED 且哈希链通过?"}
    E -- 否 --> C
    E -- 是 --> F["允许标记正式底稿"]

数据门禁检查 8 个关键科目的本期/上期来源、两期 资产=负债+权益、指标完整率、估算标记,以及多年任务的跨年比较数。系统允许带理由的会话级人工修复,并在附录保留原值、新值、操作人与摘要哈希;原始 PDF 不会被改写。

HITL 采用五态 DFA、角色权限、INSERT-only SQLite 日志和 SHA-256 链式校验。哈希链用于发现链内修改,不等同于电子签名、可信时间戳或不可抵赖证明。

数据安全与 LLM 调用边界

本系统的 AI 综合归因为可选叠加层,不参与数值计算或最终仲裁。常规归因请求只发送结构化模型摘要;可选的证据语义解读会发送截断片段,因此接入外部模型前仍需由部署方完成数据分类、授权和接口安全评估。

安全措施 具体实现
最小化出站 常规归因 Prompt 包含 M-Score、异常因子数值、红旗 ID/严重度、行业和仲裁摘要,不发送年报全文、企业名称或股票代码
片段边界 可选证据语义解读最多向模型发送 200 字候选片段;正式底稿再次按 180 字上限截断。ReAct 证据工具读取缓存时按长度最多截断 180 字。长度限制不等于匿名化:赛事缓存案例使用模拟或预处理材料;真实用户上传的证据片段在生产部署前,仍须由部署方先完成姓名、证件号等敏感字段的机构侧脱敏。
输出约束 System Prompt 要求用"目标企业""A 公司"等代号并禁止输出真实名称或代码;这是生成约束,不替代输入脱敏、访问控制或合规审查
合同隔离 合同审查页面输入文本与合同类型不传至后端,前端规则引擎独立执行;合同审查结果不进入 HITL 审计底稿或哈希链
离线边界 关闭 LLM_ASCEND_ENABLED 后,核心分析不调用模型 API,8 组缓存可离线读取;当前前端图标和页面快照库仍引用 CDN,完全断网时相关展示能力可能降级

4. 界面与导出

唯一正式入口提供 8 个 Tab:

Tab 内容 关键边界
1 风险总览 显示三路信号、仲裁分和可选 AI 归因
2 红旗因子 显示 R1–R5、触发项数、严重度和候选证据
3 模型透视 展示 M-Score 8 因子、五因子项目异常分、Altman Z-Score 探索性代理,以及不改变正式仲裁结果的规则化“指控—辩护—裁决”解释原型
4 关注金额 R1/R4 关注金额敏感性情景,不是调整分录或已认定错报
5 行业风控 5 个部分校准快照,其余使用全市场兜底
6 合同审查 从 15 项前端规则库中按所选主要合同类型执行 2–4 项条款完备性预检,不调用后端 22 条规则
7 人在回路 后端 HITL 操作、审计时间线、页面审计快照和审计链 JSON
8 趋势预警 真实多年上传趋势,或明确标识的模拟历史序列

页面底部的后端导出区生成同源的 Markdown、Excel(.xlsx 8 工作表,依赖 openpyxl,缺失时自动降级为 CSV zip)和 PDF;运行环境没有支持的 PDF 渲染库时,第三种格式自动降级为可打印 HTML。正式底稿包含 8 个组成模块,附录 8G 记录 HITL 状态和审计链。Tab 7 的浏览器 PDF 仅为页面审计快照,不能替代后端归档文件。

核心能力截图(决赛界面 · 2026-08-21)

以下正文引用 final_20260821/ 的六张基线界面截图;final_20260823/ 仅保留四张路演外壳与上传入口补充视图,不再作为 ReAct、真实上传门禁或证据三要素的正式发布证据。主案例使用公开历史事件索引「康美药业 2017」,但页面财务数值、趋势和证据片段均为模拟或脱敏演算,不能还原为对相关公司的审计判断或投资建议。

4.1 统一入口

首页将产品定位、能力边界、预设案例与真实上传入口集中在同一屏;正式 Logo、深蓝品牌色与各业务页保持一致。

AuditProbe 决赛版首页

4.2 三路信号与确定性仲裁(Tab 1)

页面并列展示 M-Score、红旗规则与项目异常分,并由可复算规则给出综合核查优先级;案例名称和年份只作公开事件索引。

康美药业 2017 风险总览

4.3 红旗因子、阈值与核查依据(Tab 2)

每条规则展示触发条件、当前演算值、关注原因、建议程序与 CAS 参考方向。准则映射只帮助定位核查方向,不等于已经取得充分、适当的审计证据。

红旗因子与参考依据

4.4 规则化博弈解释(Tab 3)

“指控—辩护—裁决”用于展示同一红旗的支持理由、规则模板反方解释与临界争议项。当前版本不是多模型自主辩论;这些解释不改变三路信号的确定性仲裁结果,争议项仍推送人工复核。

规则化博弈过程与结果

4.5 HITL 人工复核与审计链(Tab 7)

五态工作流、RBAC 操作约束、只追加审计日志与 SHA-256 哈希链共同保留人工责任。截图为尚未写入首条人工操作记录的初始状态,因此显示 verify_chain OK · 0 条记录

HITL 人工复核与审计链

4.6 多年趋势扫描(Tab 8)

模拟序列展示规则如何扫描多年趋势并标注首次触发年份;“距索引年份 3 年”仅是该模拟序列的规则回放结果,不构成真实样本提前预警能力证明。

多年趋势扫描

发布演示材料

📋 v2.0.0 发布候选材料:

正式 v2.0.0 Release 同步附带以下两个版本化文件:

  • AuditProbe-v2.0.0-Presentation.pptx — 18 页发布演示文稿;保留决赛母版与视觉体系,更新 v2.0.0 截图、386 项回归和正式底稿边界。
  • AuditProbe-v2.0.0-Demo.mp4 — 24.149 秒、1080p、H.264/AAC 产品演示;画面内版本为 v2.0.0。

正式 v2.0.0 Release 链接将在干净 checkout、Python 3.11 Docker 实构建、凭据轮换和 annotated tag 完成后补入;当前不提供不存在的 Release 链接。

🎬 下列 5 分钟视频对应 v1.0.0 初赛发布版,不代表 2026-08-21 决赛界面与最终路演材料: AuditProbe.mp4(v1.0.0)

📦 v1.0.0 初赛交付物(视频、15 页项目介绍 PPT、源码归档)汇总于 Release 页: Release v1.0.0

评委可通过上方 §4 的 final_20260821/ 基线界面和 final_20260823/ 外壳/上传入口补充视图,以及 §6 Docker/Compose 部署说明,在本地复现核心界面与离线规则链;v2.0.0 PPT 与视频随正式 Release 同步发布。

5. 本地运行

5.1 环境

  • Python 3.10 或更高版本(正式入口使用 PEP 604 联合类型注解)
  • 建议使用虚拟环境
  • 核心规则和内置演示不要求 GPU,也不要求在线 LLM
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
Copy-Item .env.example .env
python -m streamlit run ui/professional_app.py --server.port 8501

访问 http://localhost:8501。在线 AI、HITL、证据溯源和扫描校正均由 .env 显式配置;不要提交包含密钥的 .env

常用开关:

LLM_ASCEND_ENABLED=false
HITL_ENABLED=true
EVIDENCE_TRACING_ENABLED=true
SCAN_CORRECTOR_ENABLED=false

5.2 验证

python -m pytest -q
python scripts\recompute_demo_cache.py

研究案例与正式演示缓存的隔离data/ 双目录):

  • 正式演示缓存 data/demo_cache/ 恰为 8 份(5 组虚构基线 + 3 组公开事件索引),_index.json 不含研究条目,由 scripts/recompute_demo_cache.py 一键重建。
  • 阈值研究案例 data/research_cases/(8 份 demo_real_*.json)独立存放,仅含趋势/指标快照(trend_only: true、无 financial_data),用于阈值敏感性研究,不冒充 PDF 分析结果、不写入正式 _index.json
  • 隔离契约由 tests/test_research_cases.py(6 项)锁定:研究案例数量、trend_only 标志、不冒充 PDF 分析、正式缓存恰好 8 份且无研究文件、正式索引无研究条目、生成脚本指向研究目录。
  • 研究口径边界:基础层 20 家/60 份真实年报文件 + 新浪 DEPI 补充层 20 家/40 份 + 派生层 M8 敏感性 18 家;链式证据锚定见 自留文件/阈值实测试点/。本项目不提出中国正式阈值-1.78 为项目公开的筛查决策线。

三层证据链与阈值研究边界自留文件/阈值实测试点/_verify_all.py,34/34 PASS):

  • 基础层:20 家上市公司 × 3 年 = 60 份真实年报文件(M-Score 全八因子可计算的样本),用于核心公式复算;新浪 DEPI 补充层:20 家 × 2 年 = 40 份(含四类变量窗口),用于 DEPI 分层验证;派生层:M8 敏感性分析 18 家(剔除缺失窗口后全链可复算),关键结论:M7(可读性与费用)与 M8(关联交易与账龄)同处"更高阶风险"区间,ST 派瑞在 M7 未越线、M8 越过 -1.78 的判别方向。
  • 六类模型风险(阈值研究边界,不消除):① 公式版本差异(A 股常用版本与国外原版因子项不同);② 字段口径差异(研发费用、政府补助等归并口径不同导致分子分母可比性下降);③ 缺失因子处理(M8 等因子依赖附注数据,缺失时返回"数据不足"而非硬填);④ 标签错配风险(指数针对舞弊样本标定,非舞弊样本的结构差异不等于安全);⑤ 极端值影响(如高毛利行业、超大额补贴项放大或缩小单因子贡献);⑥ 伪稳定风险(因子同时被报表粉饰掩盖时,多因子同向"稳定"不代表真实健康)。
  • 证据链锚定_verify_all.py 输出三层独立锚定——基础层 manifest b5354fdf…(run_id 20260815T050526Z)、新浪 DEPI 补充层 manifest c4401e9a…(run_id 20260815T061446Z)、派生层 M8 结果 2d130259…m8_sensitivity.json 的 detached result_sha256)——三层哈希链校验全部通过。

5.3 性能参考

赛事要求提供可量化结果。本节把当前已经可核查的规模指标待 ModelArts 实测的性能/质量指标分开,避免把目标值写成测试结论。

当前可核查指标

指标 当前值 核查方式
自动化回归 386 passed 2026-08-28 当前工作树完整执行(360 项决赛基线 + 1 项 XSS 门禁 + 8 项身份门禁 + 1 项发布契约 + 16 项哈希链完整性;2026-08-26 基线为 370 passed);覆盖模型、PDF 端到端、门禁、HITL、导出、Docker、Mini-RAG 评测与公开口径,耗时随环境变化不作为性能指标
演示案例 8 组 5 组虚构基线 + 3 组公开事件索引;模型输入与结论均为模拟演算。另存 8 份研究案例(data/research_cases/)仅用于阈值敏感性研究
PDF 双期字段 16 类指标 每类尝试抽取本期/上期,最多形成 32 个期别数值;正式门禁检查其中 8 个关键科目 × 2 期
仲裁组合 18 种 完整数据下 2 × 3 × 3 种三路信号组合,另有缺失数据路径
产品界面 8 个 Tab 总览、红旗、模型、关注金额、行业、合同、HITL、趋势
合同规则 22 条后端规则 + 15 项前端规则库 前端每次只执行所选主要类型的 2–4 项;两者尚未接通,不合并计算命中率
底稿结构 8 个组成模块 Markdown、Excel、PDF或可打印HTML同源导出
正式底稿范围 v2.0.0 收敛(2026-08-29 冻结) 正式底稿仅在合并报表交叉验证通过时生成;部分真实上市公司年报可能因来源验证不足被安全阻断(fail-closed,预期安全行为),仅导出待复核草稿、不输出错误的正式结论;模拟 PDF 证明正式流程可运行、真实年报证明安全阻断有效;扩大真实年报正式路径覆盖率列入 v2.1.0

监管案例 Mini-RAG 评测(20 问冻结集,2026-08-15)

监管案例检索为确定性离线规则(词元切分 + 子串匹配 + 规则 ID 加权,无嵌入、无 LLM、零网络调用)。为量化为检索质量,建立了 20 问审计短问句冻结测试集(data/regulatory_cases/mini_rag_eval_questions.json,冻结哈希 freeze_sha256=6964906c4d0c…),先冻结后运行。以下 20/20 指标均为冻结 20 问测试集结果,不代表一般用户查询的召回率

指标 结果 样本量
Top-1 召回(预期案例出现在首条) 20/20 = 1.0000 20 问
Top-3 召回(预期案例出现在前三条) 20/20 = 1.0000 20 问
引用完整性(答案引用可追溯到证据文件) 20/20 = 1.0000 20 问
越权断言率(剥离否定语境后仍含"同罪/已确认舞弊"等肯定式表述) 0/52 = 0.0000 52 条边界断言
双跑一致性(两次独立运行摘要逐字节一致) 1.0 2 次

复现:python scripts/eval_mini_rag.py --freeze(先校验冻结哈希再运行);原始逐问结果、汇总与 detached SHA-256 归档于 data/regulatory_cases/eval_output/;复算逻辑由 tests/test_mini_rag_eval.py(7 项)锁定。

演示案例的组合规则响应

下表读取当前 5 组虚构基线缓存,直观展示单独 M-Score 与三路信号确定性仲裁的差异。它验证的是预设场景下的规则响应,不是性能测试、真实检出率或"纠偏率"。

案例 M-Score M-Score 分级 触发红旗 综合等级
demo_001 某制药公司 2017 -1.849 低风险 R1、R3、R4 关注
demo_002 某新材料公司 2017 -1.950 低风险 R1、R3 关注
demo_003 某水产公司 2017 -2.297 低风险 R5 关注
demo_004 某白酒企业 2025 -2.677 低风险 低风险
demo_005 某中药公司 2019 -2.041 低风险 R1 关注

↑ 表示项目仲裁规则把人工核查优先级由"低风险"提升为"关注"。5 组数据均为虚构输入,不反映真实主体;8 组完整对照及口径见量化优势说明

ModelArts 昇腾验证(2026-08-08 ~ 09 历史实测)

当前版本边界:2026-08-21 r5 已完成 ModelArts Ascend 910B 系列在线推理服务正式业务负载验收,finalizer 六项门禁均通过;服务详情与请求日志完成交叉关联。该结论不表示整套系统所有组件均运行在 NPU,也不构成生产 SLA。公开摘要见决赛验收状态

T05/T06 实跑门禁(fail-closed)npu/run_t05_t06_ascend.py 在同一会话采集五元组并执行 ≥30 次固定短任务微基准,另可启用 --require-backend-evidence 正式昇腾验收(要求服务调用、运行机 NPU 观察、远端后端部署证据关联三状态全部成立,缺一即返回非零;不启用时只声称"ModelArts 端点调用及客户端性能观察")与 --business-load 限量固定业务场景合约负载(2 个公开案例索引下的模拟演算快照(康美2017/獐子岛2016,源自 data/demo_cache,页面数值为模拟数据)+ 1 个 manifest 固定参考快照(康得新2017)× 5 次 = 15 次,报告成功率/p50/p95/输出引用契约通过率/越权率/财务与 severity 哈希回显一致率;回显仅证明模型输出复述输入哈希,不证明上游对象未被修改)。--formal-ascend-run 可一键强制全部验收门槛(--require-backend-evidence + --business-load + 30 次基准 + 100% 成功/契约门槛)。部署证据字段名为 deployment_evidence_linked(对外称"与 ModelArts 部署证据交叉关联",非密码学意义上的 attested),必须提供 ModelArts 原始导出物--deployment-artifact-type 支持 modelarts-api/modelarts-service-log/modelarts-consolesource 由解析器确定、JSON 不得自报)。解析器兼容官方顶层 schema(新版 ShowInferServiceid/predict_url(数组,元素为 {"type": "PUBLIC", "urls": ["..."]})/status/update_at(13 位毫秒时间戳)/version(资源规格在 instance_groups[].unit_configs[].flavor);旧版 ShowServiceservice_id/access_address/config[](含 specification)/operation_time)。官方服务详情响应不含 request_id,故部署证据拆为两份:服务详情(证明 service_id+endpoint+resource_spec)+ 请求日志(证明 request_id+service_id/deployment_id+调用时间),verifier 经 service/deployment ID 连接(P0-2:log.service_id == 服务详情 service_id,或 log.deployment_id 属于服务详情 version.instance_groups[].id 部署实例 ID 集合;部署 ID 不得直接等同 service ID);请求日志解析以 provisional request_id 为锚只解析该 ID 的单条结构化日志(防跨记录拼接)。要求 endpoint_sha256 与客户端路由指纹一致,并记录原始证据文件 SHA-256。时间语义(P0-2)拆分:artifact_retrieved_at_utc(本次采集时间)与请求日志时间参与 ±30 分钟窗口校验,service_updated_at(平台服务更新时间,如 update_at/operation_time)仅作信息、不参与窗口校验(服务可能已稳定运行数天);P0-1:标准 ISO 采集时间(含 +00:00)以"能成功解析为 ISO 时间"为判据被接受(归一结果与输入相同也采用),HTTP Date 仅作 fallback;建议用专用采集脚本保存 {"retrieved_at_utc": "...", "http_status": 200, "response_headers": {"date": "..."}, "body": {官方原始响应}} 包装,正式服务详情证据必须经采集包装明确记录 HTTP 200(P1:非 200 或缺失状态 → fail-closed,拒绝"错误响应外壳 + 人工拼接 body")。真实 request_id 在请求前不可知,须按二阶段流程:--provisional-output 生成阶段 A provisional 后,从 ModelArts 导出对应 request_id 的原始服务日志与服务详情,再用 --verify-evidence(支持 --request-log-artifact 双份证据)独立 verifier 交叉绑定;--finalize-formal-run 使用固定正式门槛(阶段 A 必须 meta.formal_ascend_run=truebusiness_load_enabled=truep1_business_load 恰好 15 次;30 次基准、成功率/质量率/业务率均 1.0),复算阶段 A 结果 detached hash、双份证据重判部署门禁、重算全部门禁,生成唯一 overall_pass最终输出自身携带 detached result_sha256 的最终验收证据;非正式阶段 A 不得被汇合为通过。P0-3:任何云端调用前先预检 output/provisional 均不存在、父目录可写、两路径不同、O_EXCL 预留成功,provisional/输出写入失败立即 fail-closed;--formal-ascend-run 必须在任何云端调用前强制 --provisional-output(P1:无条件,即使直接提供 --deployment-evidence 也不能省略——否则用旧服务详情可绕过预检;强制 provisional 允许二阶段回退,否则退出码 2,避免完成昂贵调用后无 provisional 可供二阶段关联)。--probe-only 提供 Stage 0 环境探针(仅 1 次推理,检查响应头是否含 request_id、保存脱敏响应头键名),避免为探查字段执行 49 次调用。

测试环境:ModelArts Notebook · Ascend 910B4 (32 GB HBM) · CANN 8.5.2 · PyTorch 2.7.1 · torch_npu 2.7.1.post2 · Python 3.12.0 测试脚本python npu/modelarts_full_test.py(一键复现;2026-08-08 历史运行总耗时 53.3s,该次 pdf_end_to_end=skipped,耗时不作为当前性能承诺)

四层昇腾适配证据(全部通过)

层级 验证项 实测结果 证据文件
Layer 1 NPU 硬件信息 Ascend 910B4 · HBM 32 GB · npu-smi 25.5.1 npu/ascend_layer1-4_evidence.json
Layer 2 PyTorch→Ascend 适配 torch_npu 2.7.1.post2 · is_available(): True · 设备名 Ascend910B4 同上
Layer 3 CANN 算子执行 MatMul (1024×1024) + Softmax on npu:0 · 命中 CANN 日志文件 同上
Layer 4 确定性规则链 timing 纯 CPU 规则链平均 0.141ms(30 次重复,perf_counter);历史参考 0.194s(2026-08-08) 同上
LLM 观测 启用 AI 解读后的 timing 含 LLM 解读平均 26.77s(2026-08-09 华为云,已关闭) npu/ascend_llm_observation_2026-08-09.json

回归测试

测试 结果
pytest 自动化回归 386 passed(2026-08-28 当前工作树实测:360 项决赛基线 + 10 项发布安全门禁 + 16 项哈希链完整性;2026-08-26 基线 370 passed);云端历史记录 128 passed
PDF 核心分析链 云端 ModelArts ✅ 6/6 真实 PDF 均产生可见分析摘要(康美/康得新/獐子岛造假年份 + 茅台/宁德时代/格力 2025,对照案例不称为‘正常样本’;manual_pdf_observation_status: screenshot_verified);本地 pytest ✅ 6 passed(5 份模拟 PDF + 6 个测试用例,tests/test_pdf_e2e.py 走离线降级路径不执行真实 Qwen3-8B 解读,不称为‘AI 解读全链路’;result_status: locally_reproducible;此前文档声称 302.27s 耗时,elapsed_s_claim_status: historical_claim_without_retained_raw_output,原始 summary 未保留,但 6 passed 本身可本地复跑)

Layer 4 纯 CPU timing(30 次重复,perf_counter 高精度计时,LLM 强制关闭)

Demo M-Score 红旗触发 F-Score avg_ms median_ms 调整金额
乐视 2015(模拟·高风险) −1.153-1.153 R1, R4 1.0521.052 0.107 0.102 −614.72-614.72
某白酒企业 2025(模拟·低风险) −2.329-2.329 1.0801.080 0.093 0.087 00
某制药公司 2017(模拟·低风险+红旗) −1.860-1.860 R1, R3 1.2731.273 0.224 0.098 −1857.14-1857.14

LLM 启用时的 timing(补充外部观测,非 Layer 4 可复现口径):见 ascend_llm_observation_2026-08-09.json,含 LLM 调用时平均 26.77s(华为云 ModelArts,2026-08-09 实测,华为云已关闭暂无法重跑)。

口径说明:Layer 4 timing 为纯 CPU 规则链耗时(perf_counter 高精度计时,30 次重复),不含 PDF 解析和 LLM 调用;LLM 启用时的 timing 归档到独立的 ascend_llm_observation_2026-08-09.json,不属于 Layer 4 可复现口径。

结论边界:四层证据证明昇腾 910B4 + CANN 8.5.2 + torch_npu 2.7.1 适配链路完整可用,Layer 4 timing 为模拟结构化输入的全链耗时,不代表真实 PDF 端到端性能

红旗因子 AI 解读验证(2026-08-09 实测)

推理服务:ModelArts 在线推理 · Qwen3-8B (Ascend-vLLM) · OpenAI 兼容协议

测试范围 结果 耗时
8 份 demo × 14 条触发红旗 ✅ 14/14 全部成功 各 demo 显示值之和 285.7s(终端总耗时 285.8s)· 平均 20.4s/条

每条解读约 69–100 字符(多条超过 80 字),含红旗财务含义 + 虚构案例 + 审计核查建议。详见 量化说明 §2.4

NPU LLM 25 次质量+延迟基准(2026-08-10 补充实测)

推理服务:ModelArts 在线推理 · Qwen3-8B (Ascend-vLLM) · OpenAI 兼容协议 · 本次部署配置为 ModelArts VPC 内推理服务(该字段为部署配置说明,不是 25 次文本基准可测量的指标) 基准脚本:python npu/benchmark_npu_qwen3_8b.py(路径自适应,兼容 -v2 等多版本目录名;5 prompts × 5 trials = 25 次,system prompt + 用户指令双重强制中文;脚本含 summarize_results() 纯函数,见 tests/test_benchmark_summary.py 的 4 个离线单测) 证据文件:npu/npu_llm_benchmark.jsonpost_run_metadata.artifact_type: post_run_augmented_machine_benchmark不能声称当前发布脚本直接产出该 JSON,JSON 与脚本的派生关系与哈希见 post_run_metadata.published_benchmark_script.relation_to_original

指标 实测值 统计口径
成功率 ✅ 100%(25/25) 5 道财务审计题 × 5 次重复 = 25 次调用全部成功
延迟 p50 15.36 s statistics.median(25 个成功样本排序取中,奇数样本与 nearest-rank 中位一致)
延迟 p95 18.82 s nearest-rank:ceil(25 × 0.95) = 24 位样本
延迟 avg / min / max 15.47 / 10.27 / 22.81 s 全部 25 次调用统计
中文率(平均) 94.7% 中文字符数 / 总字符数(含数字标点);最低单条 91.8%
中文可用率 (≥70%) 25/25 = 100% 中文字符占比 ≥ 70% 判定为可用
英文术语次数 ✅ 0 次 9 个英文关键词(cash/flow/inventory/receivable/deficit/liability/asset/profit/revenue)全程零命中
金融关键词平均命中 2.8 项 / 条 实际 10 个通用金融关键词(风险/舞弊/异常/增长/下降/可能/虚增/造假/现金流/利润)
相关问题关键词平均命中 3.5 项 / 条 P1 专属关键词集 7 个,P2–P5 各 6 个(共 5 道题);统计与各题真实集大小一致
综合达标率 ✅ 100%(25/25) 四重门限:成功 ∧ 中文率 ≥ 70% ∧ 英文术语 = 0 ∧ 相关关键词命中 ≥ 1
延迟在 [10 s, 20 s) 区间占比 24/25 = 96% 仅最大 22.81 s 超过 20 s

三层部署观察(降级为非完全同口径参考):上表 NPU 结果与旧仓库 finreport-risk-agent 中的两组历史基线——Ollama DeepSeek-R1:1.5B(本地 Windows,仅覆盖前 3 题 × 3 次,中文用户指令不含「禁止英文」)竞赛 API Qwen3-30B-A3B(公网 HTTP,25 次;模型为 30B 总参数 MoE,约 3B 激活,不是 Dense)——在 prompt 文本的题目内容上有高度重叠,但三者样本覆盖(3 题 9 次 vs 5 题 25 次 vs 5 题 25 次)、中文用户指令、模型规模与架构(1.5B Dense / 30B MoE / 8B Dense)、部署路径(本地/公网/VPC 内)均不一致,且两个基线 JSON 与生成脚本未纳入本发布仓库,因此不得解读为同配置延迟加速比或严格科学基准。三层对比仅用于「部署取舍观察」,不构成任何性能、合规或生产适用性结论。详细降级说明、脚本派生关系、复算证明见 量化说明 §2.4B 与 JSON post_run_metadata 字段。

增强方案量化验证(3 项)

方案 核心结论 详见
「提前 N 年预警」量化验证 3 组爆雷案例均在爆雷前 2–3 年首次触发红旗,平均提前 2.7 年;红旗一旦触发便连续多年持续,风险等级逐步升级 §2.5
3 案例多维度风险维度对比 6 维归一化数据表显示三案例风险轮廓各异:乐视偏"盈利质量"、康美偏"资金真实性"、獐子岛偏"存货真实性" §2.6
规则判定 vs AI 解读增强对比 AI 解读使每条红旗信息量 +133%,新增舞弊手法提示、审计程序建议和历史案例关联;规则仅知"触发了什么",AI 增强后知"为什么+怎么查" §2.7

以上三方案均基于 demo_cache 模拟数据,展示规则响应和系统多维检测能力,不构成真实回测准确率或预测性能。

待补充:性能与质量指标

待测指标 最低测试方法 报告指标 当前状态
CPU/NPU LLM 推理参考 同 context · 同 Prompt · 同生成参数 · 客户端 HTTP 端到端耗时 分别报告 p50/p95 T07 已完成:CPU 24/25(p50 64.986s),NPU 25/25(p50 16.502s);完整权重摘要未证明一致,禁止相除或声明加速比
关键字段抽取准确率 ≥10 份 PDF 人工标注真值(16 类指标的本期/上期数值) 准确率(目标 ≥95%) 待测
AI 归因可用率 固定案例集 · 记录超时/失败/降级 可用率 超时已调整为 60s;content 为空时不读取 reasoning_content 思考链,适配器抛 RuntimeError 后调用方安全失败(返回通用提示,不影响规则结论);长稳 24h/≥200 次统计待测

"准确率 ≥95%"仅作为关键字段抽取的测试目标,不能写成舞弊识别准确率。最终对外数值必须同时附样本数、输入范围、硬件/模型、统计口径和测试日期;未完成测试的项目继续标记为"待测"。

一键复现:在 ModelArts Notebook (Ascend 910B4) 中运行 python npu/modelarts_full_test.py,可同时产出四层证据、pytest 结果和汇总报告。2026-08-08 历史运行总耗时 53.3s,该次 pdf_end_to_end=skipped,耗时不作为当前性能承诺。详细说明见 量化说明

6. Docker / Compose

Docker 镜像使用 Python 3.11、非 root UID 10001、tini、健康检查和独立的 HITL 持久卷。默认 Compose 不接收在线模型密钥,核心演示按离线模式运行。

docker compose build
docker compose up -d
docker compose ps

打开 http://localhost:8501。停止服务:

docker compose down

docker compose down 不删除命名卷;只有显式加入 -v 才会删除 HITL 持久化数据。在线 AI 建议使用独立、最小权限的环境文件:

docker run --rm -p 8501:8501 `
  --env-file .env.production `
  -v auditprobe-hitl:/app/runtime/hitl `
  auditprobe:2.0.0

镜像仅安装 requirements.docker.txt 中的当前运行依赖。浏览器中的图标和页面快照库仍有 CDN 依赖;完全隔离网络部署时,核心分析和后端导出可用,但页面图标/快照可能降级,后续可将这些静态资源本地化。详细检查见 Docker 部署审核

复验实测(2026-08-08 历史记录)

⚠️ 以下为 2026-08-08 的历史构建记录;本轮提交前未重新构建验证(Docker 未运行),精确数值仅作参考基线,不作为当前已复核结论。重新构建后将以 docker image inspect 实测值替换。

在 Docker Desktop 29.5.3 + Compose v5.1.4 + WSL2 内核 6.6.87.2 上完成端到端复验:

指标 历史实测值 核查方式
镜像 tag auditprobe:1.0.0(历史) 当前 v2.0.0 必须重新构建 auditprobe:2.0.0 后填写镜像 digest
镜像大小 约 1.1 GB(历史) Python 3.11-slim 基础 + 7 类核心依赖;本轮未重新构建验证
构建耗时 约 9.8 分钟(历史) pip install 阶段 554s(含 PyMuPDF / pyarrow / numpy 大包下载)
容器启动 2.1 秒(历史) docker compose up -d 总耗时
健康检查 healthy Docker HEALTHCHECK 探针返回通过
HTTP 探测 200 OK GET http://localhost:8501/_stcore/health 返回 ok
HITL 持久卷 auditprobe_hitl -> /app/runtime/hitl 命名卷挂载确认
容器重启次数 0 RestartCount=0ExitCode=0
默认运行模式 离线模式 LLM_ASCEND_ENABLED=false,核心规则不依赖在线 LLM

复验环境为开发者本地 Windows 11 + Docker Desktop;生产环境构建耗时与镜像大小会因基础镜像层缓存、网络代理与 CPU 配额而异,上述数值仅作为参考基线,不作为生产部署的 SLA 承诺。

可配置与可扩展设计

当前模块边界支持复用,但迁移到新的准则体系、文档版式或机构流程时仍需适配和回归验证,不能理解为"只改配置即可无改造成本复用"。

维度 当前已实现 扩展边界
LLM 后端 .env 可选择 DeepSeek、Qwen、GLM 或 ModelArts provider 新 provider 需实现兼容接口并验证认证、超时与数据出站策略
行业阈值 core/red_flags.py 对 R2/R3/R4 提供部分行业覆盖,data/industry_thresholds.json 提供展示快照 新行业需补充样本依据、阈值配置和回归测试,不能直接沿用现有快照
准则映射 data/standards/ 保存 15 项 CAS JSON,core/cas_tracer.py 读取并匹配 IFRS/US GAAP 尚未实现;替换时还需调整字段、映射逻辑、界面和文档
HITL 组织配置 .env 可设置 HITL_COMMITTEE_MEMBER_IDS 联签名册 五类角色及职责分离规则写在代码中,改变流程需同步修改和测试
扫描件处理 可选 scan_corrector_adapter 只做版面旋转校正 OCR 未内置;扫描件需外部 OCR 生成文本层后再分析
演示场景 data/demo_cache/ 可由 scripts/recompute_demo_cache.py 重算 缓存是演示夹具,不是机构知识库或真实效果基准

Docker 镜像提供一致的运行基线和独立 HITL 持久卷;核心规则在关闭模型 API 后仍可运行。面向其他审计场景复用时,应按数据、规则、流程和合规要求重新验证。

7. 项目结构

路径 作用
core/ 抽取、模型、仲裁、证据、HITL、合同规则和导出
ui/professional_app.py 唯一正式 Streamlit 入口
frontend-prototype/index.html 嵌入式高保真前端
config/ 环境与模型配置
data/ 演示缓存、行业快照与运行数据目录
tests/ 模型、门禁、HITL、导出、Docker 与公开口径回归测试;含 5 份随仓库发布的 KB 级虚构 PDF 端到端夹具
docs/ 算法、能力边界、部署审核、演示与迭代文档

8. 合规与发行边界

  • 中注协《审计准则问题解答第19号》 是执业参考和示例,不是对本项目的认证;本项目仅作设计映射。
  • 20263116-Q-252《智能体应用安全基本要求》目前是国家标准计划,不是已发布实施的标准;本项目不宣称"符合国标"或通过安全认证。
  • 金融监管文件中的相关要求主要面向受监管机构。本项目把其中的人为监督、日志和异常处置方向作为设计参考,不代表监管合规结论。
  • CAS 条目库用于风险线索关联,不是自动执行审计准则,也不是法律或执业意见。
  • 内置历史案例仅保留公开事件名称和年份作为教学索引;页面财务数值、趋势、证据片段和模型输出均为模拟数据,不构成对相关主体的事实判断。

9. 文档导航

10. 技术栈

技术 版本/名称 用途
Python Docker 3.11;本地 ≥3.9 主运行时
Streamlit 1.60.0 专业版 Web UI
PyMuPDF / MuPDF 1.28.2 / 1.28.2 PDF 文本层提取、测试 PDF 与导出支持;升级以避开 CVE-2026-7233 受影响范围
NumPy / Pandas 2.3.5 / 2.3.3 数值计算与表格处理
RapidFuzz 3.14.5 CAS 条目模糊匹配
OpenPyXL 3.1.5 Excel 底稿导出
Requests / python-dotenv 2.32.5 / 1.1.0 可选模型 API 与环境配置
SQLite3 / hashlib Python 标准库 HITL INSERT-only 日志与 SHA-256 链式校验
HTML / CSS / JavaScript 嵌入式前端 8-Tab 交互、图表和页面快照
Docker + Compose 发行配置 可复现运行环境与 HITL 持久卷
pytest 测试工具 当前 386 项自动化回归(360 项决赛基线 + 1 项 XSS 门禁 + 8 项身份门禁 + 1 项发布契约 + 16 项哈希链完整性)
torch / torch_npu ModelArts 2.7.1 环境 仅用于昇腾算子与环境证据采集,不是发行镜像依赖

源码公开与授权边界

Copyright © 2026 Lyn Li(@LynLi

本仓库为赛事评审、演示复现和非商业学习公开源码,采用 Competition-Only Source License不是 MIT,也不是 OSI 认可的开源许可证。 知识产权归参赛者所有;主办方享有赛事评审、展示、存档和非商业宣传所需的非独占授权。 未经书面许可,不得将本项目用于商业服务、生产部署、SaaS、客户交付、转售或二次商业包装。

PyMuPDF/MuPDF 等第三方组件继续适用其自身许可证,本仓库不对其重新授权。 主要运行依赖及 PyMuPDF 的 AGPL/商业双许可边界见 第三方依赖声明

项目介绍

AI辅助的年报财务风险审计系统:三模型交叉仲裁、22条合同合规规则、三方博弈分析与五角色HITL可追溯审计闭环

定制我的领域