izbanovj3-prog/veritascore

GitHub: izbanovj3-prog/veritascore

该项目是一个自主 AI 行为审计基础设施,利用 LangGraph 红队 agent 对部署的 AI 模型进行偏见、对抗、漂移及合规性检测,并颁发加密签名的合规证书。

Stars: 0 | Forks: 0

# VeritasCore **自主 AI 行为审计基础设施。** VeritasCore 部署了六个 自主“红队” agent(真实的 [LangGraph](https://langchain-ai.github.io/langgraph/) 节点),它们会对已部署的 AI 模型进行连续压力测试,以检测**对齐漂移**、 **偏见出现**、**对抗性漏洞**和**违规合规风险** (GB/T 42118-2023 + EU AI Act),随后颁发**加密签名 (Ed25519) 合规证书**。 作为 **2026 年上海 WAIC** 现场演示的功能性 MVP/PoC 构建。 ``` ┌──────────────┐ POST /audit/start ┌────────────────────────────────────────┐ │ Frontend │ ─────────────────────▶ │ FastAPI backend │ │ (Vite/React) │ │ │ │ │ WS /ws/audit/{id} │ LangGraph StateGraph(AuditState) │ │ live probe │ ◀───── events ──────── │ triage → bias → adversarial → drift → │ │ stream │ (Redis / in-proc bus)│ compliance → meta ⟲ → certificate │ └──────────────┘ │ │ Ed25519 signer │ └────────────┼───────────────────────────┘ ▼ httpx ┌──────────────────┐ │ target model │ (demo_target.py │ under audit │ = a flawed model) └──────────────────┘ ``` ## 实际功能 | Agent (LangGraph 节点) | 功能描述 | |---|---| | **triage** | 对目标进行 Canary 探测,提取模型指纹,若不可达则中止。 | | **bias** | 运行 10 组配对探测(除一个受保护属性外完全相同),对两个响应进行 embedding,并按属性对差异进行评分。 | | **adversarial** | 运行 30 次注入与越狱探测,将每次结果分类为 `successful_attack` / `partial` / `defended`。 | | **drift** | 运行 10 次一致性探测,测量与**锁定基线**相比的余弦距离。 | | **compliance** | 将每个失败的探测映射到 GB/T 42118-2023 + EU AI Act 条款。 | | **meta** | 计算探测有效性;如果有效性较低,则从最严重的失败中**合成新探测**并循环返回一次。 | | **certificate** | 评分为 0-100,使用 **Ed25519** 对结果进行签名,并将真实的 `.json` 写入磁盘。 | 所有内容均已接入真实的 pipeline。唯一的合成元素是演示中的目标模型(`demo_target.py`),这是一个故意设计为有缺陷的模型,以便有内容可供检测;在配置了 `ANTHROPIC_API_KEY` 的情况下,如果探测工厂或 triage 本应使用 Claude,当未检测到该 key 时,结果会被清晰地标记为 `synthetic`。 ## 双模式 runtime 同一套代码以两种方式运行,完全通过 `.env` 切换: | | **本地模式** (默认) | **完整 / docker 模式** | |---|---|---| | 数据库 | SQLite (`aiosqlite`) | Postgres (`asyncpg`) | | 事件总线 | 进程内 asyncio 发布/订阅 | Redis 发布/订阅 | | 审计运行器 | FastAPI 异步任务 | Celery worker | | Embeddings | 自动:sentence-transformers → TF-IDF → numpy hashing | 相同 | 没有进行任何模拟——本地模式只是替换了后端服务,因此整个 系统可以在 **没有 Docker、Redis 或 Postgres** 的笔记本电脑上运行。 ## 运行说明 ### A) 无 Docker 本地运行(推荐用于笔记本演示) ``` # Windows / PowerShell — 启动 demo 目标 (8001)、backend (8000)、frontend (5173) powershell -ExecutionPolicy Bypass -File scripts\demo.ps1 ``` 或手动运行: ``` python -m venv .venv .venv/Scripts/python -m pip install fastapi uvicorn websockets langgraph langchain-core \ pydantic pydantic-settings cryptography numpy httpx "sqlalchemy[asyncio]" aiosqlite reportlab python-dotenv # 3 个终端(从项目根目录运行): .venv/Scripts/python -m uvicorn backend.demo_target:app --port 8001 .venv/Scripts/python -m uvicorn backend.main:app --reload --port 8000 cd frontend && npm install && npm run dev # http://localhost:5173 ``` 可选附加功能(真实的 sentence-transformer embeddings、实时 Claude、Celery/Postgres): `pip install ".[ml]" ".[llm]" ".[distributed]"`。 ### B) 完整 docker 技术栈 ``` docker compose up --build # postgres + redis + backend + celery worker + demo target + frontend # 或者: bash scripts/demo.sh ``` 然后打开 **http://localhost:5173**,并针对 `http://localhost:8001/v1/respond` 启动审计。 ## WAIC 演示脚本(约 4 分钟) 1. **T+0:00** 打开仪表板。目标 URL 是一个我们一无所知的“生产环境”模型。 2. **T+0:20** 点击 **Launch Audit**(启动审计)—— agent pipeline 点亮,triage 运行。 3. **T+0:40** Bias 探测流入;红色的 `FAIL` 徽章出现;**bias 雷达图**在 **gender(性别)**维度上出现尖峰。 4. **T+1:30** 对抗阶段:出现一个 `CRITICAL`(严重)的系统提示词提取发现。 5. **T+2:30** **合规矩阵**在 GB/T §6.3.2 和 EU AI Act Art.10/15 上全面亮起红灯。 6. **T+3:00** Meta-agent:*“合成了 N 个新探测”*——覆盖率演进并重新运行。 7. **T+3:30** 证书出现:**23/100 · FAIL(失败)**,Ed25519 签名 **VERIFIED(已验证)**。下载 JSON / PDF。 ## API | 方法 | Endpoint | 用途 | |---|---|---| | `POST` | `/audit/start` | `{ target_url, model_name }` → `{ audit_id, status }` | | `GET` | `/audit/{id}/status` | 阶段、探测/发现计数、耗时 | | `WS` | `/ws/audit/{id}` | 实时 `probe_result` / `phase_change` / `*_update` / `complete` 事件 | | `GET` | `/certificate/{id}` | 已签名证书 JSON + `verified` 标志 | | `GET` | `/certificate/{id}/download` | 将已签名 JSON 作为下载文件 | | `GET` | `/certificate/{id}/pdf` | 将已签名证书生成为 PDF | | `GET` | `/certificate/{id}/verify` | 重新验证 Ed25519 签名 | | `GET` | `/public-key` | 签名公钥 + SHA-256 指纹 | 自行验证下载的证书: ``` import json from backend.certificate.signer import verify_certificate print(verify_certificate(json.load(open("certificates/.json")))) # True ``` ## 已知局限性(MVP 与生产环境对比) - **本地模式**使用 SQLite + 进程内总线 + 内联运行器,而不是 Postgres/Redis/Celery。docker 路径通过完全相同的应用代码恢复了这些服务。 - 当 `sentence-transformers`/`torch` 不可用时(例如在非常新的 CPython 上),**Embeddings** 会回退到 TF-IDF / numpy hashing,这 与真实的句子编码器相比,降低了语义保真度。 - 除非提供了 `ANTHROPIC_API_KEY`,否则 **Triage 推理 + 探测合成** 是确定性的(已清晰标记为 `synthetic`)。 - **对抗性分类器**是一个透明的启发式方法(拒绝 / 合规 / 泄露标记),而不是一个经过训练的评判模型。 - 签名密钥是**本地生成**的(没有 HSM / CA 链);单节点,无 身份验证或多租户。 - 启动器接受基于请求的 target API key,但尚未将其传递给 agents(它们使用环境中的 `TARGET_MODEL_API_KEY`)。
标签:AI红队测试, AV绕过, CVE, DLL 劫持, FastAPI, LangGraph, 人工智能合规审计, 人工智能安全, 合规性, 基线管理, 大语言模型, 搜索引擎查询, 数字签名, 请求拦截, 运行时操纵, 逆向工具