chatgpt审核接入
OpenAI Moderation API 中文开发文档
适用环境:PHP 7.4 / ThinkPHP 5 / FastAdmin / MySQL
本文按照 OpenAI 官方 Moderation API 的接口规范整理,重点说明如何在社区系统中审核用户发布的文本,包括接口参数、违规类型、返回数据结构和 FastAdmin 接入方法。
一、接口概述
Moderation API 是 OpenAI 提供的内容安全审核接口,可以检测用户输入的文本是否包含色情、暴力、仇恨、骚扰、自残等风险内容。
它支持中文,无需先将中文翻译成英文。
|
项目 |
说明 |
|---|---|
|
请求方式 |
POST |
|
API 地址 |
|
|
推荐模型 |
|
|
身份认证 |
Bearer API Key |
|
请求格式 |
JSON |
|
返回格式 |
JSON |
|
中文文本 |
支持 |
|
图片审核 |
支持,具体类别有限制 |
|
视频审核 |
不支持此接口直接审核视频 |
|
PHP 7.4 |
支持通过 cURL 调用 |
对于你的社区系统,推荐使用 omni-moderation-latest。该模型可以直接对中文帖子、评论、聊天消息等进行审核。
二、请求参数
2.1 请求头
POST /v1/moderations HTTP/1.1 Host: api.openai.com Authorization: Bearer YOUR_OPENAI_API_KEY Content-Type: application/json
YOUR_OPENAI_API_KEY 是在 OpenAI API 平台创建的密钥,必须保存在 PHP 服务端,不能放到 H5 或 JavaScript 前端代码中。
2.2 请求 Body
|
参数 |
类型 |
必填 |
说明 |
|---|---|---|---|
|
|
string |
否 |
审核模型,建议显式指定 |
|
|
string / array |
是 |
需要审核的文本或多模态输入 |
最简单的文本审核请求:
{ "model": "omni-moderation-latest", "input": "这是一条社区用户发布的中文评论" }
批量文本审核请求:
{ "model": "omni-moderation-latest", "input": [ "今天天气真好", "这是一条普通的社区消息", "欢迎大家参加周末活动" ] }
注意:批量输入适合离线审核或后台批处理。实时审核时建议为每条内容保留独立的审核记录。
三、所有违规类型中文说明
根据官方文档,omni-moderation-latest 提供 13 个内容审核类别。
3.1 完整类别对照表
|
API 字段 |
中文名称 |
识别内容 |
支持输入 |
|---|---|---|---|
|
|
骚扰、辱骂 |
攻击、羞辱、骚扰他人的语言 |
文本 |
|
|
威胁性骚扰 |
包含暴力或严重伤害威胁的骚扰 |
文本 |
|
|
仇恨言论 |
基于种族、宗教、性别、国籍等受保护特征的仇恨表达 |
文本 |
|
|
仇恨威胁 |
针对受保护群体的暴力或严重伤害威胁 |
文本 |
|
|
非法行为指导 |
提供违法行为的实施方法、建议或指导 |
文本 |
|
|
涉暴非法行为指导 |
涉及暴力违法行为或武器获取的指导 |
文本 |
|
|
自残相关内容 |
鼓励、宣扬或描述自残、自杀、进食障碍 |
文本、图片 |
|
|
自残意图 |
表达正在或打算实施自残行为 |
文本、图片 |
|
|
自残方法指导 |
提供或鼓励实施自残的方法 |
文本、图片 |
|
|
色情内容 |
旨在引起性兴奋的内容或性服务推广,不包括正常性教育 |
文本、图片 |
|
|
未成年人性内容 |
涉及未成年人的性内容 |
文本 |
|
|
暴力内容 |
描述死亡、暴力或身体伤害 |
文本、图片 |
|
|
血腥暴力 |
对死亡、暴力、身体伤害的露骨细节描写 |
文本、图片 |
3.2 容易混淆的类别
harassment 和 hate 的区别
例如:
-
“你真是个没用的人”可能属于骚扰。
-
因某人的种族、宗教等受保护特征进行仇恨攻击,可能属于仇恨言论。
self-harm 和 self-harm/intent 的区别
-
self-harm:识别自残相关的鼓励、宣扬或描述。 -
self-harm/intent:识别说话者自身的自残意图。
对于 self-harm/intent,社区系统不应简单将其等同于恶意违规。用户可能正在寻求帮助,建议采用更谨慎的人工处理流程。
illicit 不代表所有违法内容
它主要识别帮助实施违法行为的建议或指导,而不是判断一篇文章中提到的行为是否违法。
3.3 官方接口不能直接覆盖的社区规则
以下不属于这 13 个专门类别:
|
社区规则 |
是否直接支持 |
|---|---|
|
商业广告 |
不专门支持 |
|
微信、WhatsApp 引流 |
不专门支持 |
|
垃圾信息 |
不专门支持 |
|
重复刷屏 |
不专门支持 |
|
虚假招聘 |
不专门支持 |
|
虚假商品 |
不专门支持 |
|
政治观点是否符合平台规则 |
不专门支持 |
|
发布他人隐私信息 |
不专门支持 |
这些需要结合规则引擎、用户行为数据或其他 AI 模型来审核。
四、API 返回数据结构
4.1 完整返回示例
下面是根据官方结构编写的示例数据,分数仅用于说明字段格式,不代表真实模型检测结果。
{ "id": "modr-example123", "model": "omni-moderation-latest", "results": [ { "flagged": true, "categories": { "harassment": true, "harassment/threatening": false, "hate": false, "hate/threatening": false, "illicit": false, "illicit/violent": false, "self-harm": false, "self-harm/intent": false, "self-harm/instructions": false, "sexual": false, "sexual/minors": false, "violence": false, "violence/graphic": false }, "category_scores": { "harassment": 0.96, "harassment/threatening": 0.02, "hate": 0.01, "hate/threatening": 0.001, "illicit": 0.001, "illicit/violent": 0.001, "self-harm": 0.001, "self-harm/intent": 0.001, "self-harm/instructions": 0.001, "sexual": 0.001, "sexual/minors": 0.001, "violence": 0.01, "violence/graphic": 0.001 }, "category_applied_input_types": { "harassment": ["text"], "harassment/threatening": ["text"], "hate": ["text"], "hate/threatening": ["text"], "illicit": ["text"], "illicit/violent": ["text"], "self-harm": ["text"], "self-harm/intent": ["text"], "self-harm/instructions": ["text"], "sexual": ["text"], "sexual/minors": ["text"], "violence": ["text"], "violence/graphic": ["text"] } } ] }
4.2 顶层返回字段
|
字段 |
类型 |
中文说明 |
|---|---|---|
|
|
string |
本次审核请求的唯一标识 |
|
|
string |
实际使用的审核模型 |
|
|
array |
审核结果数组 |
4.3 results 内部字段
|
字段 |
类型 |
中文说明 |
|---|---|---|
|
|
boolean |
是否检测到潜在有害内容 |
|
|
object |
各类别是否被标记 |
|
|
object |
各类别模型评分 |
|
|
object |
各类别评分对应的输入类型 |
4.4 flagged 的含义
$result = $response['results'][0]; if ($result['flagged'] === true) { // AI 检测到潜在违规 } else { // AI 未检测到对应类别的违规 }
注意:flagged = false 并不意味着内容一定合法或完全符合社区规则。
4.5 categories 的含义
例如:
{ "harassment": true, "hate": false, "violence": false }

浙公网安备 33010602011771号