Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PolySafe —— 多模态内容智能审核系统

一个基于大语言模型(VLM)的多模态内容审核 Agent 系统,能够自动化审核图像、视频、文本等用户生成内容,精准识别违规信息,并支持可配置策略与人机协同,大幅降低人工审核成本。

界面截图

首页 数据看板 图片检测
视频检测 策略配置

项目介绍

在海量 UGC(用户生成内容)场景下,传统人工审核面临效率低、成本高、覆盖不全等挑战。本项目构建了一套 端到端的智能审核 Agent 流水线

  1. 内容理解:Agent 接收待审内容(图片 / 视频 / 文本),调用多模态大模型提取关键信息和潜在风险点。
  2. 策略判断:将模型分析结果输入规则引擎,结合 FAISS 语义向量检索匹配平台预设的审核策略,进行风险判定。
  3. 处置与上报:根据判定结果自动执行 拦截(block)放行(pass)标记为待人工复核(review),全程记录 Agent 执行日志,前端实时可视化展示。

核心功能

功能 说明
多模态违规识别 支持图片、视频、文本三种内容类型,通过 VLM 大模型统一理解与风险分析
可配置审核策略 运营人员可在管理后台灵活创建、编辑、删除审核策略与规则,策略变更后自动重建向量索引
人机协同审核 高置信度内容自动处置,灰度区间内容推送人工复核,复核结果可反馈回系统
批量审核 支持一次选择多个文件(图片/视频/文本混合),系统自动识别类型,每个文件独立审核,以批次为整体查看进度和汇总结果
Agent 执行可视化 提交内容后实时展示 Agent 各阶段处理过程(模型调用 → 策略匹配 → 最终决策)
数据看板 审核总量、通过率 / 拒绝率、每日趋势、违规类型分布等统计一目了然

快速开始

环境要求

  • Python 3.10(推荐使用 conda 虚拟环境,避免系统 Python 兼容问题)
  • Node.js 18+
  • npm 或 pnpm

注意: 前端 npm install 如遇 404 报错,请先切换到官方源:npm config set registry https://registry.npmjs.org/

1. 克隆项目

git clone <your-repo-url>
cd PolySafe

2. 启动后端

cd backend

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env,填入你的豆包 Ark API Key
# ARK_API_KEY=your_api_key_here

# 初始化种子数据(12 个审核策略 + 30 条规则)
python seed_data.py

# 启动服务
python -m uvicorn app.main:app --reload --port 8000

3. 启动前端

cd frontend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

前端默认运行在 http://localhost:5173,已配置 Vite 代理自动将 /api 请求转发到后端 http://127.0.0.1:8000

技术栈

后端

技术 版本 用途
FastAPI 0.115.0 Web 框架,提供 RESTful API
SQLAlchemy 2.0.35 ORM,管理 Task / Policy / Rule 三张表
SQLite 轻量级数据库,开箱即用
豆包 Ark API 字节跳动多模态大模型(VLM),支持图片 / 视频 / 文本理解
FAISS 1.8.0 Meta 开源向量检索库,用于审核规则的语义匹配
sentence-transformers 3.1.1 文本向量化模型(paraphrase-multilingual-MiniLM-L12-v2)
httpx 0.27.2 异步 HTTP 客户端,调用外部模型 API
Pydantic Settings 2.5.2 配置管理,支持 .env 文件
PyPDF2 3.0.1 PDF 文件文本提取(批量审核)
python-docx 1.1.2 DOCX 文件文本提取(批量审核)

前端

技术 版本 用途
React 18.3 UI 框架
TypeScript 5.6 类型安全
Vite 5.4 构建工具 + 开发代理
Tailwind CSS 3.4 原子化 CSS
shadcn/ui (Radix UI) 组件库
Recharts 2.15 数据可视化图表
Axios 1.13 HTTP 请求
React Router 6.30 客户端路由

服务架构

┌──────────────────────────────────────────────────────┐
│              前端  React + Vite + Tailwind            │
│   ┌──────────┬──────────┬──────────┬──────────┐      │
│   │ 数据看板 │ 审核任务 │ 内容提交 │ 策略管理 │      │
│   │          │(含批次)  │(单个/批量)│          │      │
│   └──────────┴──────────┴──────────┴──────────┘      │
│              Axios  →  /api  (Vite Proxy)            │
└────────────────────────┬─────────────────────────────┘
                         │
┌────────────────────────▼─────────────────────────────┐
│             后端  FastAPI + SQLAlchemy                │
│                                                      │
│  ┌────────────┐  ┌───────────────┐  ┌─────────────┐ │
│  │task_service │→│doubao_service  │→│ 豆包 Ark API │ │
│  │ (任务编排)  │  │ (多模态 VLM)  │  │ (大模型)    │ │
│  │            │→│ rule_engine    │→│faiss_service │ │
│  │            │  │ (决策引擎)    │  │ (向量检索)   │ │
│  └────────────┘  └───────────────┘  └─────────────┘ │
│  ┌────────────┐  ┌───────────────┐                   │
│  │  batches   │→│ file_extract   │  PDF/DOCX/TXT/   │
│  │ (批量编排) │  │ (文件解析)    │  MD/CSV/JSON     │
│  └────────────┘  └───────────────┘                   │
│                                                      │
│  数据库: SQLite (tasks, batches, policies, rules)    │
│  向量索引: FAISS + sentence-transformers             │
└──────────────────────────────────────────────────────┘

核心审核流程

用户提交内容(单个或批量)
    │
    ├── 单个提交:直接创建 1 个 Task
    │
    ├── 批量提交:创建 1 个 Batch + N 个 Task(自动识别文件类型)
    │             文本文件(pdf/docx/txt/md/csv/json) → 提取文本内容
    │             图片/视频 → 保存文件并记录路径
    │
    ▼  (每个 Task 独立执行以下流程)
┌─────────────────┐
│  1. 内容理解     │  调用豆包 VLM 多模态大模型
│     Agent 分析   │  → 返回 {violation_detected, violation_types, confidence, risk_description}
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  2. 策略判断     │  FAISS 语义检索匹配最相关的审核规则
│     规则引擎     │  综合 AI 置信度 + 规则匹配结果
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  3. 处置与上报   │  confidence ≥ 0.8 → block(拦截)
│     自动决策     │  confidence ≤ 0.3 → pass(放行)
│                  │  其他情况       → review(人工复核)
└─────────────────┘

使用示例

示例 1:提交图片审核

  1. 打开 http://localhost:5173,进入 内容提交 页面
  2. 选择内容类型为「图片」
  3. 点击上传区域或拖拽图片文件
  4. 点击「提交审核」
  5. 页面将实时展示 Agent 执行时间线:
    • 任务创建开始处理模型识别(调用 VLM 分析图片内容)→ 策略匹配(FAISS 检索相关规则)→ 最终决策
  6. 最终显示审核结果:置信度、违规类型、风险描述、命中的策略规则

示例 2:批量提交审核

  1. 进入 内容提交 页面,切换到「批量提交」Tab
  2. 点击上传区域或拖拽多个文件(支持图片、视频、文本混合)
    • 支持的文件类型:.jpg .png .gif .webp(图片)、.mp4 .avi .mov .mkv(视频)、.txt .md .pdf .docx .csv .json(文本)
  3. 在文件列表中确认待审文件,可逐个删除不需要的文件
  4. 可选填写批次名称(默认自动生成)
  5. 点击「提交批量审核」,系统自动为每个文件创建独立审核任务并行处理
  6. 页面实时展示批次进度:
    • 整体进度条(已完成 / 总数)
    • 汇总徽章:✅ 通过数、🚫 拦截数、👁 待复核数、❌ 失败数
    • 子任务表格:每个文件的审核状态、违规类型、置信度
  7. 审核任务 页面可看到批次行(可展开/收起),展开后查看每个子任务详情

示例 3:提交文本审核

  1. 选择内容类型为「文本」
  2. 在输入框中输入待审核的文本内容
  3. 点击「提交审核」,查看 Agent 审核过程与结果

示例 4:配置审核策略

  1. 进入 策略管理 页面
  2. 点击「新建策略」,填写策略名称和描述
  3. 添加规则:设置规则名称、违规类型(色情 / 暴力 / 仇恨言论等)、处置动作(拦截 / 复核)
  4. 保存后系统自动重建 FAISS 向量索引,新策略立即生效

示例 5:人工复核

  1. 进入 审核任务 页面,筛选状态为「待复核」的任务
  2. 点击「查看」打开任务详情
  3. 查看 AI 分析结果、Agent 处理日志和命中规则
  4. 点击「通过」或「拒绝」完成人工复核

示例 6:查看数据看板

进入 数据看板 页面,可查看:

  • 审核总量、通过率、拒绝率、待复核数量
  • 近 7 天审核趋势折线图
  • 违规类型分布饼图
  • 最近审核记录

项目结构

PolySafe/
├── backend/
│   ├── app/
│   │   ├── main.py              # FastAPI 入口
│   │   ├── config.py            # 配置管理
│   │   ├── database.py          # 数据库连接
│   │   ├── models.py            # ORM 模型(Task / Batch / Policy / Rule)
│   │   ├── schemas.py           # Pydantic Schema
│   │   ├── routers/
│   │   │   ├── tasks.py         # 任务 API
│   │   │   ├── batches.py       # 批量任务 API
│   │   │   ├── policies.py      # 策略 API
│   │   │   └── dashboard.py     # 看板 API
│   │   └── services/
│   │       ├── doubao_service.py # 豆包大模型调用
│   │       ├── faiss_service.py  # FAISS 向量检索
│   │       ├── file_extract.py  # 文件类型检测与文本提取
│   │       ├── rule_engine.py   # 规则引擎
│   │       └── task_service.py  # 任务编排
│   ├── seed_data.py             # 种子数据(12 策略 + 30 规则)
│   ├── requirements.txt
│   └── .env.example
├── frontend/
│   └── src/
│       ├── App.tsx              # 路由定义
│       ├── components/
│       │   └── Layout.tsx       # 全局布局
│       ├── pages/
│       │   ├── DashboardPage.tsx # 数据看板
│       │   ├── TaskListPage.tsx  # 审核任务
│       │   ├── SubmitPage.tsx    # 内容提交
│       │   └── PolicyPage.tsx    # 策略管理
│       ├── lib/api.ts           # API 封装
│       └── types/index.ts       # 类型定义
└── README.md

环境变量

变量 说明 默认值
ARK_API_KEY 豆包 Ark API 密钥 (必填)
ARK_MODEL_ID 豆包模型端点 ID your_model_id_here
ARK_BASE_URL Ark API 基础地址 https://ark.cn-beijing.volces.com/api/v3(示例值,请以官方文档为准)

About

一个基于大语言模型(VLM)的多模态内容审核 Agent 系统,能够自动化审核图像、视频、文本等用户生成内容,精准识别违规信息,并支持可配置策略与人机协同,大幅降低人工审核成本。

Resources

Stars

24 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages