• 判断一段文本或图片是否属于敏感内容
  • 按类别分别给出评分,便于自行设阈值
  • 可以作为生成前的守门员,也可以独立使用
POST/v1/moderations

认证

string必填

所有接口均使用 Bearer Token 进行认证。

获取 API Key:访问控制台 创建。

请求时在请求头中添加:

Authorization: Bearer YOUR_OAIRoute_KEY

请求参数

string必填

固定填 omni-moderation-latest。

stringarray必填

待审核内容。可以是单个字符串,也可以是字符串数组,或包含图片的多模态内容块数组。

input[] 的元素字段 · 2 项
string可选

传多模态内容时必填。取值 text 或 image_url。

string可选

图片地址,支持 HTTP(S) 与 Base64 data URI。

响应

string

本次审核请求的唯一标识。

string

实际使用的审核模型。

array

审核结果数组,与输入顺序一一对应。

results[] 的元素字段 · 3 项
boolean

是否被判定为违规。这是 categories 中任一项为 true 的汇总结果。

object

按类别给出的布尔判定。键名与评分项同名,例如 hate、harassment、violence、self-harm、sexual。

object

按类别给出的 0 到 1 评分。数值越高越接近该类内容。

怎么用评分

flagged 是官方给的汇总判定,但实际业务里往往需要自己调阈值:

用途建议
严格拦截任一评分超过 0.3 就拦
常规过滤用 flagged 的默认结果
只做提醒评分超过 0.7 才提示,不阻断

category_scores 不是概率,不要按百分比理解。不同类别之间的数值不可横向比较,只在同一类别内纵向比较。

作为生成前置检查

在调用图像生成前先跑一遍审核,能避免任务建了又失败、还占用额度:

def safe_to_generate(prompt: str) -> bool:
    r = requests.post(
        "https://api.oairoute.com/v1/moderations",
        headers={"Authorization": "Bearer YOUR_OAIRoute_KEY"},
        json={"model": "omni-moderation-latest", "input": prompt},
    )
    return not r.json()["results"][0]["flagged"]

错误码

错误响应的格式、状态码与重试建议见错误码与限流,常见报错的排查步骤见常见问题。

使用示例

检查单条文本

input 可以是字符串,返回一个结果对象。flagged 为 true 表示命中任一类别。

批量检查

input 传字符串数组,一次返回多条结果,顺序与输入一致。批量比逐条请求快得多。

检查图片

图片通过内容块传入,与文本消息结构相同。返回的类别里会多出图像相关的判定。

只取最高风险分

实际业务里通常只关心最突出的那一类。取 category_scores 的最大值判断即可。

curl --request POST https://api.oairoute.com/v1/moderations \
  -H "Authorization: Bearer YOUR_OAIRoute_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"omni-moderation-latest","input":"待审核文本"}' \
  | jq '.results[0].category_scores | to_entries | max_by(.value)'