VarunMA-23/Real-Time-Content-Moderation-Abuse-Detection-Platform

GitHub: VarunMA-23/Real-Time-Content-Moderation-Abuse-Detection-Platform

面向大规模应用的多阶段实时内容审核平台,结合轻量级 ML 分类器、LLM 深度分析与人工审核闭环,实现对仇恨言论、垃圾信息和违规内容的高效检测与拦截。

Stars: 0 | Forks: 0

# ReadMe 文件终版 # 🛡️ ShieldAI — 实时内容审核平台 ## 📌 目录 - [概述] - [系统架构] - [系统流程] - [核心功能] - [技术栈] - [ML Pipeline] - [数据集] - [数据库 Schema] - [可扩展性设计] - [安全性设计] - [故障处理] - [Human-in-the-Loop Learning] - [入门指南] - [项目结构] - [路线图] ## 概述 ShieldAI 是一个供大型社交和聊天应用使用的平台,用于实时审核用户生成的内容。它支持**每天数百万条消息**的处理,在快速路径上具有亚秒级延迟,拥有用于深度分析的多阶段 ML pipeline,以及带有反馈循环的人工审核控制台。 **关键设计目标:** - 为同步的“发送前”API 提供超低延迟 - 为基于 LLM 的深度分析提供可扩展的异步 pipeline - 为每个客户和地区提供可配置的策略引擎 - Human-in-the-loop 反馈以持续改进模型 - 在任何 ML 服务宕机时实现优雅降级 ## 系统架构 ``` Client App │ ▼ API Gateway │ ▼ Moderation API (FastAPI) ├── Fast Path (inline): Lightweight ML model + Rules Engine │ └── Decision: ALLOW / WARN / BLOCK ──────────────► Response to Client │ └── Enqueue to `moderation_jobs` topic (Kafka/RabbitMQ) │ ▼ ┌───────────────────────────────────┐ │ Worker Services │ │ │ │ ┌─────────────────────────────┐ │ │ │ Text Classification Worker │ │ │ │ (Transformers - fast) │ │ │ └─────────────────────────────┘ │ │ │ │ ┌─────────────────────────────┐ │ │ │ LLM Moderation Worker │ │ │ │ (GPT / Claude / Local LLM) │ │ │ └─────────────────────────────┘ │ │ │ │ ┌─────────────────────────────┐ │ │ │ Image Moderation Worker │ │ │ │ (CV / NSFW models) │ │ │ └─────────────────────────────┘ │ └───────────────────────────────────┘ │ ▼ `moderation_results` topic │ ▼ Moderation DB (PostgreSQL) │ ├──► Review Console (Flagged content queues) │ └──► Data Warehouse (Analytics + Model training) ``` ## 系统流程 ### 阶段 1 — 快速路径(同步,<100ms) 当用户发送消息时,**审核 API** 会立即运行: 1. 一个轻量级的、经过 fine-tuning 的 ML 分类器对消息进行评分。 2. 策略引擎(缓存在 Redis 中)应用特定于平台的规则。 3. 返回决策:`ALLOW`、`WARN` 或 `BLOCK`。 ### 阶段 2 — 深度分析(异步) 同时,该消息被放入 Kafka 队列并由工作服务消费: 1. **文本分类 Worker** — 基于 transformer 的毒性/垃圾信息检测。 2. **LLM Worker** — 使用带有 few-shot prompts 的 LLM,并针对平台策略进行调优,以进行细致的上下文分析。 3. **图像 Worker** — 运行 CV 模型进行 NSFW/暴力图像内容检测。 结果被写入审核数据库并显示在审核控制台中。 ### 阶段 3 — 人工审核 被标记的内容进入审核队列。审核员批准、拒绝或上报决策。所有决策作为标记的训练数据反馈回去。 ### 阶段 4 — 学习循环 当轻量级 ML 模型和 LLM 出现分歧时(例如,ML 判定为 `safe`,而 LLM 判定为 `toxic`),该分歧会被单独存储在数据仓库中,并标记为 active learning —— 优先对不确定/冲突的案例进行标记,以随着时间的推移改进快速模型。 ## 核心功能 | 功能 | 描述 | | --- | --- | | **发送前审核 API** | 同步评分,目标延迟 <100ms | | **异步深度 Pipeline** | 通过消息队列 Worker 进行 LLM + 图像审核 | | **策略引擎** | 针对每个客户、地区和平台可配置的规则 | | **审核控制台** | 队列、决策历史、申诉工作流 | | **分析仪表板** | 策略影响、误报/漏报追踪 | | **Human-in-the-Loop** | 审核员决策作为训练标签反馈回去 | | **冲突检测** | ML 与 LLM 的分歧被标记以进行重新训练 | | **批量重放** | 在策略/模型更改后重新扫描历史消息 | ## 技术栈 | 层级 | 技术 | | --- | --- | | **API** | FastAPI | | **异步 Worker** | Celery / 自定义 Kafka 消费者 | | **消息队列** | Kafka / RabbitMQ | | **主数据库** | PostgreSQL | | **搜索 / 审计** | Elasticsearch / OpenSearch | | **缓存** | Redis(策略、信任分数) | | **ML — 快速** | Transformers(经过 fine-tuning 的 BERT/DistilBERT) | | **ML — 深度** | OpenAI / Anthropic / 通过 LangChain 的本地 LLM | | **图像 ML** | 基于 CV 的 NSFW 检测模型 | | **部署** | Docker + Kubernetes(根据队列深度自动扩缩容) | ## ML Pipeline ``` Incoming Message │ ▼ ┌──────────────────────────────────┐ │ Stage 1: Lightweight Classifier │ ← <50ms target │ (fine-tuned DistilBERT) │ └──────────────────────────────────┘ │ ├── Clearly Safe → ALLOW ├── Clearly Harmful → BLOCK └── Borderline / Uncertain │ ▼ ┌─────────────────────────┐ │ Stage 2: LLM Analysis │ ← async, deeper context │ (few-shot, policy-aware│ └─────────────────────────┘ │ └── Detailed risk label + explanation → DB ``` **冲突案例:** 如果阶段 1 判定为 `safe`,而阶段 2 判定为 `toxic`(反之亦然),该结果将作为高价值训练示例存储在数据仓库中。 ## 数据集 轻量级 ML 模型基于三个公开数据集的融合组合进行训练: | 数据集 | 用例 | | --- | --- | | [Jigsaw 有毒评论数据集](https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge) | 毒性、侮辱、猥亵、威胁 | | [仇恨言论与冒犯性语言数据集](https://github.com/t-davidson/hate-speech-and-offensive-language) | 仇恨言论与冒犯性语言分类 | | [SMS 垃圾信息收集数据集](https://archive.ics.uci.edu/ml/datasets/SMS+Spam+Collection) | 垃圾信息检测 | ## 数据库 Schema 审核数据库存储每条被审核消息的完整生命周期: ``` messages ( id UUID PRIMARY KEY, content TEXT, content_type ENUM('text', 'image', 'voice'), customer_id UUID, user_id UUID, created_at TIMESTAMP ) moderation_results ( id UUID PRIMARY KEY, message_id UUID REFERENCES messages(id), stage ENUM('fast_model', 'llm', 'image'), risk_score FLOAT, labels JSONB, -- e.g. {"toxic": 0.91, "spam": 0.02} decision ENUM('allow', 'warn', 'block', 'hold_for_review'), model_version VARCHAR, created_at TIMESTAMP ) reviewer_decisions ( id UUID PRIMARY KEY, message_id UUID REFERENCES messages(id), reviewer_id UUID, decision ENUM('confirm', 'override', 'escalate'), notes TEXT, created_at TIMESTAMP ) policy_configs ( id UUID PRIMARY KEY, customer_id UUID, region VARCHAR, rules JSONB, updated_at TIMESTAMP ) ``` ## 可扩展性设计 - **快速路径**和 **LLM Worker** 是独立部署的 —— 根据队列深度和 CPU/GPU 可用性进行独立扩缩容。 - **Redis** 缓存策略配置和用户信任分数,以避免每次请求都查询数据库。 - **针对每个客户的速率限制**,以防止滥用和突发垃圾信息攻击。 - **K8s 自动扩缩容**应用于 API 层和 Worker 层,由 Kafka 消费者滞后触发。 ## 安全性设计 - **身份验证:** 审核控制台使用 OAuth2/OIDC;审核员与管理员角色使用 RBAC。 - **内部服务:** 所有微服务之间使用 mTLS;严格的 Kubernetes 网络策略。 - **隐私保护:** 在将内容发送到外部 LLM API 之前进行 PII 检测和脱敏处理。 - **对抗鲁棒性:** 检测混淆尝试(l33tspeak、同形字、零宽字符)。 - **IP 信誉:** 集成滥用情报源以进行协同攻击检测。 ## 故障处理 | 故障 | 响应 | | --- | --- | | LLM 服务宕机 | 回退到基于规则的保守拦截或挂起以待审核 | | 图像服务宕机 | 挂起以待审核,不进行静默放行 | | 消息处理失败 | 死信队列 (DLQ) + 向运维发送警报 | | 频繁的 DLQ 失败 | 升级为人工审核 | | 分析数据仓库缓慢 | 优雅降级 —— UI 显示缓存/过期数据 | | 策略更新 | 批量重放任务以重新扫描过去 N 小时的消息 | ## Human-in-the-Loop 学习 审核员的决策是模型改进的核心反馈信号: ``` Reviewer Decision │ ▼ ┌─────────────────────────────────────┐ │ Was there a model disagreement? │ └─────────────────────────────────────┘ │ │ YES NO │ │ ▼ ▼ High-priority Standard training example training example (active learning) │ ▼ Data Warehouse → Periodic fine-tuning → Updated fast model ``` 这使得轻量级快速模型能够从真实世界的审核员纠正中不断改进 —— 这是一个经典的 **active learning** 循环,优先处理最不确定或冲突的案例。 ## 入门指南 ### 前置条件 - Python 3.11+ - Docker & Docker Compose - Node.js 18+(用于审核控制台 UI) ### 本地设置 ``` # Clone repository git clone cd shieldai # 启动 infrastructure (Kafka, Redis, PostgreSQL) docker-compose up -d # 安装 Python dependencies pip install -r requirements.txt # 运行 database migrations alembic upgrade head # 启动 Moderation API uvicorn app.main:app --reload --port 8000 # 启动 workers (在单独的终端中) celery -A app.workers worker --loglevel=info ``` ### API 使用 ``` # 为 message 评分 (同步 fast path) curl -X POST \ -H "Content-Type: application/json" \ -d '{ "message": "Your content here", "customer_id": "abc123", "user_id": "user456" }' # Response { "decision": "allow", "risk_score": 0.04, "labels": { "toxic": 0.02, "spam": 0.04 }, "latency_ms": 43 } ``` ## 项目结构 ``` shieldai/ ├── app/ │ ├── api/ # FastAPI routes (moderation, review, policy) │ ├── workers/ # Celery workers (text, LLM, image) │ ├── models/ # ML model loading and inference │ ├── policy/ # Policy engine logic │ ├── db/ # SQLAlchemy models and migrations │ └── core/ # Config, auth, shared utilities ├── ml/ │ ├── datasets/ # Dataset fusion and preprocessing scripts │ ├── training/ # Fine-tuning scripts │ └── evaluation/ # Metrics and evaluation notebooks ├── console/ # Reviewer console frontend (React) ├── infra/ │ ├── docker-compose.yml │ └── k8s/ # Kubernetes manifests ├── tests/ └── README.md ``` ## 路线图 - [ ] 语音审核 pipeline(基于 Whisper 的转录 + 文本审核) - [ ] 多语言支持(跨语言毒性检测) - [ ] 具有 WebSocket 更新的实时审核员仪表板 - [ ] 针对策略更改的 A/B 测试框架 - [ ] 针对移动客户端的设备端/边缘审核 - [ ] 协同虚假行为 (CIB) 检测模块 ## 伦理考量 该系统涉及真实的权衡: - **延迟与准确性:** 快速路径为了速度牺牲了一部分准确性。LLM 路径更准确,但在大规模下无法实现同步。 - **公平性:** 众所周知,毒性模型存在人口统计学偏差(例如,对 AAVE 的误报率更高)。审核员反馈循环对于监控和纠正这一点至关重要。 - **策略主观性:** 什么算作“有害”因文化、地区和平台而异。可配置的策略引擎正是为了避免一刀切的审核而存在的。 - **过度审核:** 误报压制了合法言论。分析中的误报追踪是一级指标,而不是事后才考虑的补充。 ## 简历亮点 该项目展示了: - 多阶段 ML pipeline(快速模型 → LLM 级联) - 具有消息队列的实时和异步系统设计 - Human-in-the-loop 和 active learning 工作流 - 内容安全领域的专业知识 - 分布式系统:自动扩缩容、缓存、优雅降级 - 安全性:零信任、PII 脱敏、对抗鲁棒性
标签:Apex, API服务, API网关, AV绕过, DLL 劫持, FastAPI, Kafka, LLM, Naabu, NSFW检测, RabbitMQ, SonarQube插件, Unmanaged PE, 云计算, 人工审核系统, 人工智能, 人机协同, 仇恨言论检测, 低延迟API, 内容安全, 内容审核, 反馈循环, 可配置策略, 合规科技, 垃圾信息过滤, 大语言模型, 子域名突变, 实时审核, 异步处理管道, 微服务架构, 搜索引擎查询, 数据处理管道, 文本分类, 有害内容检测, 机器学习, 测试用例, 消息队列, 深度学习, 用户模式Hook绕过, 社交应用, 系统可扩展性, 系统调用监控, 网络安全, 聊天应用, 规则引擎, 请求拦截, 逆向工具, 隐私保护, 高吞吐量, 高并发