在中国上线 AI 产品,需要同时满足多部法律法规的要求。本文梳理算法备案、生成式 AI 管理办法、数据安全法、个人信息保护法的实操要求。
中国 AI 合规法律体系
│
┌─────────────────┼─────────────────┐
│ │ │
网络安全法 数据安全法 个人信息保护法
(2017) (2021) (2021)
│ │ │
└────────┬────────┘ │
│ │
┌────────┴────────┐ │
│ │ │
算法推荐管理规定 生成式AI管理办法 │
(2022) (2023.8生效) │
│ │ │
└────────┬────────┴─────────────────┘
│
深度合成管理规定
(2023.1生效)
│
AI 标准体系
(TC260 正在制定)
Step 1: 准备材料
├── 算法基本信息表
├── 算法安全自评估报告
├── 算法机制说明文档
├── 数据来源和标注规则
├── 用户权益保护方案
└── 内容审核机制说明
│
▼
Step 2: 网上提交
├── 登录算法备案系统: https://beian.cac.gov.cn
├── 填写算法信息
├── 上传相关材料
└── 等待审核
│
▼
Step 3: 审核与公示
├── 网信部门审核(通常 30-60 个工作日)
├── 补充材料(如需要)
├── 审核通过后获得备案号
└── 在产品中公示备案信息
│
▼
Step 4: 持续合规
├── 算法重大变更需重新备案
├── 年度安全评估报告
└── 配合监督检查
# 算法安全自评估报告
## 一、算法基本信息
1. 算法名称:[你的产品名] 生成式对话算法
2. 算法类型:生成式人工智能
3. 算法用途:为用户提供智能对话、内容生成服务
4. 应用场景:[具体描述]
5. 算法提供者:[公司名称]
## 二、算法机制说明
1. 算法原理:基于大语言模型 (LLM),通过 [基座模型] 进行自然语言理解和生成
2. 模型来源:[开源模型/自研模型/API 调用]
3. 训练数据:[描述数据来源、规模、清洗方法]
4. 输入输出:输入为用户文本,输出为模型生成的文本回复
## 三、数据安全评估
1. 数据收集:
- 收集的数据类型:[对话文本、用户反馈、设备信息]
- 收集目的:[提供对话服务、改进服务质量]
- 合法基础:[用户同意]
2. 数据处理:
- 数据存储位置:[中国境内/境外]
- 数据加密方式:[传输加密TLS 1.3、存储加密AES-256]
- 数据保留期限:[30天/用户删除]
- 数据出境情况:[是/否,如否说明原因]
3. 数据标注:
- 标注团队:[内部/外包]
- 标注规则:[描述标注标准和质量控制]
- 标注人员培训:[描述培训机制]
## 四、内容安全评估
1. 内容审核机制:
- 输入审核:[关键词过滤 + ML分类器]
- 输出审核:[实时审核 + 人工抽检]
- 审核覆盖范围:[政治、色情、暴力、诈骗等]
2. 安全对齐措施:
- RLHF/DPO 训练
- 系统提示词约束
- 输出过滤层
3. 应急处置:
- 违规内容发现机制
- 处置流程和时间要求
- 用户举报渠道
## 五、用户权益保护
1. 用户知情权:隐私政策、算法说明
2. 用户选择权:关闭推荐、删除数据
3. 用户救济权:申诉渠道、人工服务
4. 未成年人保护:[年龄验证、内容过滤]
## 六、风险评估与缓解
| 风险 | 可能性 | 影响 | 缓解措施 |
|------|--------|------|---------|
| 生成有害内容 | 中 | 高 | 输入输出双重审核 |
| 泄露个人信息 | 低 | 高 | PII脱敏、加密存储 |
| 生成虚假信息 | 中 | 中 | 事实核查提示、来源标注 |
| 被用于违法活动 | 低 | 高 | 使用监控、举报机制 |
| 条款要点 | 具体要求 | 实现方式 |
|---|---|---|
| 训练数据合规 | 使用合法来源数据,不得侵犯他人知识产权 | 数据来源审查、版权过滤 |
| 标注规范 | 制定清晰标注规则,标注人员需培训 | 标注SOP、质检流程 |
| 内容标识 | AI 生成内容需标识 | 水印、元数据标记 |
| 内容审核 | 不得生成违法内容,建立健全审核机制 | 关键词+ML+人工审核 |
| 用户投诉 | 提供投诉举报渠道,及时处理 | 投诉入口、响应SLA |
| 数据安全 | 采取数据安全措施,防止数据泄露 | 加密、隔离、访问控制 |
| 个人信息 | 遵守个人信息保护法,获取同意 | 隐私政策、同意机制 |
| 算法备案 | 按规定完成算法备案 | 向网信办提交备案 |
| 安全评估 | 提供具有舆论属性或社会动员能力的需做安全评估 | 安全评估报告 |
| 境外模型 | 使用境外模型需满足同等合规要求 | 额外审查和评估 |
import hashlib
import time
from enum import Enum
class VerifyMethod(Enum):
PHONE = "phone" # 手机号验证(最常见)
ID_CARD = "id_card" # 身份证验证
FACE = "face" # 人脸识别
BANK_CARD = "bank_card" # 银行卡验证
class RealNameVerification:
"""实名认证服务"""
def __init__(self, sms_provider=None, id_verify_provider=None):
self.sms = sms_provider
self.id_verify = id_verify_provider
async def verify_phone(self, phone: str, code: str) -> dict:
"""手机号实名验证(最基础的实名方式)"""
# 1. 发送验证码
# 2. 验证码校验
# 3. 记录验证结果
result = await self.sms.verify_code(phone, code)
if result['valid']:
# 生成实名认证令牌
verify_token = self._generate_verify_token(phone, VerifyMethod.PHONE)
return {
'verified': True,
'method': VerifyMethod.PHONE.value,
'phone_hash': hashlib.sha256(phone.encode()).hexdigest()[:16],
'verify_token': verify_token,
'verified_at': int(time.time())
}
return {'verified': False, 'reason': '验证码错误'}
async def verify_id_card(self, name: str, id_number: str) -> dict:
"""身份证实名验证(通过第三方服务)"""
# 常用第三方:
# - 阿里云实人认证
# - 腾讯云人脸核身
# - 百度云身份证识别
result = await self.id_verify.verify(name, id_number)
if result['match']:
verify_token = self._generate_verify_token(
id_number, VerifyMethod.ID_CARD
)
return {
'verified': True,
'method': VerifyMethod.ID_CARD.value,
# 不存储身份证号,只存哈希
'id_hash': hashlib.sha256(id_number.encode()).hexdigest()[:16],
'verify_token': verify_token,
'verified_at': int(time.time())
}
return {'verified': False, 'reason': '身份信息不匹配'}
def _generate_verify_token(self, identifier: str, method: VerifyMethod) -> str:
"""生成实名认证令牌"""
# 令牌不包含原始身份信息
payload = f"{method.value}:{identifier}:{time.time()}"
return hashlib.sha256(payload.encode()).hexdigest()
# 使用
verifier = RealNameVerification(
sms_provider=SMSProvider(),
id_verify_provider=IDVerifyProvider()
)
# 在用户注册/使用 AI 功能前检查实名
"""
@app.middleware("http")
async def require_realname(request, call_next):
if request.url.path.startswith("/api/chat"):
user = get_current_user(request)
if not user.is_verified:
return JSONResponse(
status_code=403,
content={"error": "请先完成实名认证",
"redirect": "/verify"}
)
return await call_next(request)
"""
from dataclasses import dataclass
from typing import Optional
import re
@dataclass
class AuditResult:
passed: bool
risk_level: str # low, medium, high, critical
categories: list[str]
filtered_content: str
reason: Optional[str] = None
class ContentAuditor:
"""内容审核系统——满足中国合规要求"""
# 审核类别
CATEGORIES = {
'politics': '政治敏感',
'pornography': '色情',
'violence': '暴力',
'terrorism': '恐怖主义',
'gambling': '赌博',
'drugs': '毒品',
'fraud': '诈骗',
'abuse': '辱骂',
'privacy': '隐私泄露',
'illegal': '其他违法'
}
def __init__(self, custom_keywords: dict = None):
# 基础关键词库(实际生产中应该使用专业的敏感词库)
self.keywords = self._load_keywords()
if custom_keywords:
for category, words in custom_keywords.items():
self.keywords.setdefault(category, []).extend(words)
def audit_input(self, text: str) -> AuditResult:
"""审核用户输入"""
return self._audit(text, is_input=True)
def audit_output(self, text: str) -> AuditResult:
"""审核模型输出"""
return self._audit(text, is_input=False)
def _audit(self, text: str, is_input: bool) -> AuditResult:
"""执行内容审核"""
flagged_categories = []
filtered_text = text
# Step 1: 关键词匹配
for category, keywords in self.keywords.items():
for keyword in keywords:
if keyword in text:
flagged_categories.append(self.CATEGORIES[category])
filtered_text = filtered_text.replace(keyword, '**')
break
# Step 2: 正则模式匹配
regex_patterns = self._get_regex_patterns()
for category, pattern in regex_patterns.items():
if re.search(pattern, text, re.IGNORECASE):
flagged_categories.append(self.CATEGORIES[category])
# Step 3: ML 分类器(可选,调用第三方服务)
# ml_result = self.ml_classifier.classify(text)
# Step 4: 确定风险等级
risk_level = self._determine_risk(flagged_categories)
# Step 5: 返回结果
passed = risk_level not in ['high', 'critical']
return AuditResult(
passed=passed,
risk_level=risk_level,
categories=flagged_categories,
filtered_content=filtered_text if passed else "",
reason=f"内容涉及: {', '.join(flagged_categories)}" if flagged_categories else None
)
def _determine_risk(self, categories: list) -> str:
"""确定风险等级"""
if not categories:
return 'low'
high_risk = {'政治敏感', '恐怖主义', '色情'}
if any(c in high_risk for c in categories):
return 'critical'
medium_risk = {'暴力', '诈骗', '毒品'}
if any(c in medium_risk for c in categories):
return 'high'
return 'medium'
def _load_keywords(self) -> dict:
"""加载关键词库"""
# 实际生产中应该从安全词库服务加载
return {
'politics': [], # 从专业词库加载
'pornography': [],
'violence': [],
'fraud': ['代开发票', '刷单', '网络赌博'],
'illegal': []
}
def _get_regex_patterns(self) -> dict:
"""正则模式"""
return {
'privacy': r'\d{6}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]',
}
# 集成到对话管道
auditor = ContentAuditor()
async def safe_chat(user_input: str, user_id: str):
# 1. 审核输入
input_audit = auditor.audit_input(user_input)
if not input_audit.passed:
# 记录违规尝试
log_violation(user_id, 'input', input_audit)
return "您输入的内容涉及违规信息,请修改后重试。"
# 2. 调用 LLM
llm_output = await call_llm(user_input)
# 3. 审核输出
output_audit = auditor.audit_output(llm_output)
if not output_audit.passed:
# 输出违规,不展示,重新生成
log_violation(user_id, 'output', output_audit)
return await regenerate_safe_response(user_input)
# 4. 添加 AI 生成标识
return f"{llm_output}\n\n[内容由AI生成,仅供参考]"
## 数据出境安全评估要求
### 需要申报安全评估的情况
1. 关键信息基础设施运营者
2. 处理100万人以上个人信息的数据处理者
3. 累计向境外提供10万人以上个人信息
4. 累计向境外提供1万人以上敏感个人信息
5. 其他影响国家安全或公共利益的情况
### 使用境外 LLM API 的合规考虑
如果使用 OpenAI/Anthropic 等境外 API:
#### 方案1: 通过境内代理/中转
- 使用 Azure OpenAI(有中国区域)
- 或使用国内已备案的 API 代理服务
- 数据不出境或出境前脱敏
#### 方案2: 数据脱敏后出境
- 用户输入发送前去除 PII
- 对话历史不传至境外
- 严格遵守数据出境评估要求
#### 方案3: 使用国内模型
- 通义千问 (Qwen)
- 文心一言 (ERNIE)
- 智谱 AI (GLM)
- 百川智能 (Baichuan)
- 月之暗面 (Moonshot/Kimi)
- DeepSeek
### 国内模型对比(截至2025年5月)
| 模型 | 提供商 | API 价格 | 备案状态 | 特点 |
|------|--------|---------|---------|------|
| Qwen-Max | 阿里云 | ¥0.02/千token | ✅ 已备案 | 性价比高 |
| ERNIE 4.0 | 百度 | ¥0.12/千token | ✅ 已备案 | 多模态 |
| GLM-4 | 智谱AI | ¥0.1/千token | ✅ 已备案 | 长上下文 |
| DeepSeek V3 | 深度求索 | ¥0.001/千token | ✅ 已备案 | 极低成本 |
| Moonshot | 月之暗面 | ¥0.012/千token | ✅ 已备案 | 长文本 |
## 中国 AI 产品合规检查清单
### 算法备案
[ ] 完成算法备案(网信办算法备案系统)
[ ] 算法安全自评估报告
[ ] 算法机制说明文档
[ ] 在产品中公示备案信息
[ ] 重大变更重新备案
[ ] 年度安全评估报告
### 生成式AI合规
[ ] 训练数据来源合法
[ ] 数据标注规则和培训记录
[ ] AI生成内容标识(水印/元数据)
[ ] 内容审核机制(输入+输出)
[ ] 用户投诉举报渠道
[ ] 安全评估报告
### 实名认证
[ ] 用户实名认证机制
[ ] 认证方式(手机号/身份证)
[ ] 未认证用户功能限制
[ ] 认证信息安全存储(哈希化)
### 内容安全
[ ] 敏感词库(持续更新)
[ ] 输入内容审核
[ ] 输出内容审核
[ ] 人工审核机制
[ ] 违规内容处置流程
[ ] 举报渠道和响应机制
### 数据安全
[ ] 数据分类分级
[ ] 数据出境安全评估(如适用)
[ ] 数据加密存储和传输
[ ] 数据访问控制
[ ] 数据备份和恢复
### 个人信息保护
[ ] 隐私政策(包含AI处理说明)
[ ] 单独同意机制
[ ] 用户数据查询/导出/删除
[ ] 个人信息保护影响评估
[ ] 个人信息出境评估
### 未成年人保护
[ ] 青少年模式
[ ] 使用时间限制
[ ] 内容过滤
[ ] 充值限制