# 文本合规 API 文档

# 接口说明

基于业界先进的语义模型和海量的多语种样本库,有效识别各类场景中涉政、违禁、色情、暴恐、辱骂、广告导流等风险文本内容,支持风险标签识别。

购买请点击API套餐购买 (opens new window)、APPID获取请点击API使用控制台 (opens new window)、快速体验请点击文本合规SaaS (opens new window)、交流讨论请点击讯飞开放平台社区 (opens new window)
特别注意:utc、signature、uuid的值请求时需要UrlEncode

# 接口Demo

部分开发语言Demo如下,其他开发语言请参照文档进行开发,欢迎大家到讯飞开放平台社区 (opens new window)交流集成经验。

文本合规API Demo java语言 (opens new window)
文本合规API Demo python语言 (opens new window)

# 接口要求

内容 说明
传输方式 http[s] (为提高安全性,强烈推荐https)
请求地址 https://audit.iflyaisol.com/audit/v2/syncText (opens new window)
注:服务器IP不固定,为保证您的接口稳定,请勿通过指定IP的方式调用接口,使用域名方式调用
Content-Type application/json;charset=UTF-8
接口鉴权 签名机制,详情请参照下方接口鉴权
字符编码 UTF-8
响应格式 统一采用JSON格式
开发语言 任意,只要可以向讯飞云服务发起HTTP请求的均可
适用范围 任意操作系统,但因不支持跨域不适用于浏览器
文本长度 单次文本不得超过5000个字符

# 接口鉴权

# 1、鉴权参数列表

所有鉴权参数均放在url地址栏。

参数名 类型 必传 描述
accessKeyId String 即为控制台获取的APIKey
accessKeySecret String 即为控制台获取的APISecret
utc String 当前时间,格式:"yyyy-MM-dd'T'HH:mm:ssZ",
服务端会校验传入的时间与服务器时间之间的误差,超过 30 分钟即为非法。
signature String 签名串,详细获取步骤234中有signature的获取参考
appId String 即为控制台获取的APPID
uuid String 请求随机字符串, uuid有防重放的功能,如果调试,请注意更换uuid的值

# 2、第一步baseString获取

假设请求 url 中的查询参数为一个集合,将集合内满足条件的参数按照参数名 ASCII 码从小到大排序(字典序),使用键值对的格式(即 key1=value1&key2=value2…注意 value 需要 URLEncoder)拼接成字符串,得到baseString。示例如下:

特别注意以下3个规则:(1)参数值为空的不参与签名;(2)signature 参数本身不参与签名;(3)参数名区分大小写。

accessKeyId=simpleAPIKey&accessKeySecret=simpleAPISecret&appId=simpleAPPID&utc=2023-02-23T06%3A40%3A54%2B0000&uuid=44dfa903-adb2-45d3-a1fe-fd8a53f86b2a
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
注意:在实际使用时,simpleXXX需替换控制台的真实值。utc、signature、uuid的值请求时需要UrlEncode。以上utc示例时间UrlEncode前为2023-02-23T06:40:54+0000。randomStr用UUID.randomUUID()函数获得的值替换。

# 3、第二步根据baseString与accessKeySecret获取signature的值

根据得到的baseString和控制台获取的accessKeySecret(即APISecret),利用HMAC运算(HmacSHA1)生成签名byte[],然后使用base64编码得到signature,示例如下:

mH2xDQ5f+mO/Pi6DbrxXrzYQxF0=
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
注意:调试阶段可以与以上结果比对,需要保持baseString与第一步完全一致。

# 4、第三步拼接放到url地址栏

根据第二步获得的signature值,与url地址拼接得到最终地址栏结果,示例如下:

https://audit.iflyaisol.com/audit/v2/syncText?accessKeyId=simpleAPIKey&accessKeySecret=simpleAPISecret&utc=2023-02-23T06%3A40%3A54%2B0000&signature=mH2xDQ5f+mO/Pi6DbrxXrzYQxF0=&appId=simpleAPPID&uuid=44dfa903-adb2-45d3-a1fe-fd8a53f86b2a
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
注意:黑白名单使用鉴权与文本合规鉴权完全一致,只是url地址有变动。具体业务参数通过json以post的形式发送给服务端。

# 请求与返回示例

在调用业务接口时,均在 Http RequestBody中配置以下参数,请求与返回数据均为json字符串,示例如下。

# 1、请求json示例

{
  "is_match_all": 1,
  "content": "塔利班组织联合东突组织欲图。",
  "lib_ids": [ //黑白名单指定
    "7c284099364b473e96ce6d9da7750f4f",
    "7c284099364b473e96ce6d9da7750f4f"
  ],
  "categories": [ //指定检测的敏感分类
    "pornDetection",
    "violentTerrorism",
    "political",
    "lowQualityIrrigation",
    "contraband",
    "advertisement",
    "uncivilizedLanguage"
  ]
}

# 2、返回json示例

{
  "code": "000000",
  "desc": "成功",
  "data": {
    "result": {
      "suggest": "block",
      "detail": {
        "content": "塔利班组织联合东突组织欲图",
        "category_list": [
          {
            "confidence": 70,
            "category": "violentTerrorism",
            "suggest": "block",
            "category_description": "暴恐_恐怖组织_恐怖组织",
            "word_list": [
              "塔利班"
            ],
            "word_infos": [
              {
                "word": "塔利班",
                "positions": [
                  0,
                  1,
                  2
                ]
              }
            ]
          }
        ]
      }
    },
    "request_id": "T20230406102001116cff41968935000"
  },
  "sid": "18d9e15b7147465084fe064c40556edf"
}

# 参数说明

# 1、请求参数说明

参数名 类型 必传 描述
content String 待识别文本,文本长度最大支持 5 千字符
is_match_all Integer 是否全匹配:
1 代表是
0 代表否
默认取值0,匹配到敏感词则不再匹配,不会返回所有敏感分类。
categories List<String> 指定检测的敏感分类:
pornDetection 色情
violentTerrorism 暴恐
political 涉政
lowQualityIrrigation 低质量灌水
contraband 违禁
advertisement 广告
uncivilizedLanguage 不文明用语
lib_ids List<String> 指定自定义词库id列表,通过接口创建词库后返回,可以同时携带多个黑白名单id

# 2、返回参数说明

参数名 类型 描述
sid String 本次会话唯一id标识,用于排查接口调用问题
code String 会话调用成功标记:
000000 表示调用成功
其他数字 表示会话调用异常
desc String 对会话调用是否成功的描述
data Object 审核结果
data.request_id String 文本合规审核的标识
data.result Object 内容识别结果
data.result.suggest String 审核建议结果:
pass 通过
block 不合规结果
data.result.detail Object 审核结果详情
data.result.detail.content String 审核文本具体内容
data.result.detail.category_list List<Object> 敏感节点列表
data.result.detail.category_list[n].suggest String 内容建议结果:
pass 通过
block 不合规内容
data.result.detail.category_list[n].category String 敏感分类
data.result.detail.category_list[n].category_description String 识别类型
data.result.detail.category_list[n].confidence Integer 该分类下建议结果的置信度:
取值 0-100
data.result.detail.category_list[n].word_list List<String> 敏感词列表
data.result.detail.category_list[n].word_infos List<Object> 敏感词附属信息
data.result.detail.category_list[n].word_infos[n].word String 敏感词
data.result.detail.category_list[n].word_infos[n].positions List<Integer> 敏感词位置下标信息

# 合规黑白名单

黑白名单各个API接口鉴权、业务参数传递,同文本合规完全一致,请参考上方接口鉴权进行生成,合规黑白名单业务参数说明如下。

# 1、新增黑名单词库

新增黑名单词库,此词库可以在文本合规API调用过程中,填充lib_ids集合的值,从而让对应词库生效。请求接口地址:https://audit.iflyaisol.com/audit_res/v1/wordLib/createBlack (opens new window)

# (1)请求示例与传参

{
  "name": "黑名单库1",
  "category": "contraband",
  "suggestion": "block"
}
请求参数名 类型 必传 描述
name String 词库名称(不去重)
suggestion String 处理方式:
block:违规
category String 一级分类预设分类或自定义:
contraband:违禁

# (2)返回示例与返参

{
  "code": "000000",
  "desc": "success",
  "data": {
    "lib_id": "c92f643417fc4f0a8d677355667acb55"
  },
  "sid": "5e9da0e81f86423ab85811a108c3480b"
}
返回参数名 类型 描述
lib_id String 词库 ID

# 2、根据lib_id添加黑名单词条

请求接口地址:https://audit.iflyaisol.com/audit_res/v1/wordLib/addWord (opens new window)

# (1)请求示例与传参

{
  "lib_id": "c92f643417fc4f0a8d677355667acb55",
  "word_list": [ // 黑名单词条
    "傻缺",
    "蠢材"
  ]
}
请求参数名 类型 必传 描述
lib_id String 词库ID
word_list List 词条列表:
单次添加不能超过 500,总数不能超过 10000;
仅支持中文词条,单个长度最长不超过 20;
不能包含特殊符号,如:"[`~!@#$%^*_+\-=<>?,./;':" \t]"

# (2)返回示例与返参

{
  "code": "000000",
  "desc": "success",
  "sid": "f2460be6414646bc906c0f035a21a200"
}

# 3、根据lib_id查询词条明细

请求接口地址:https://audit.iflyaisol.com/audit_res/v1/wordLib/info (opens new window)

# (1)请求示例与传参

{
  "lib_id": "c92f643417fc4f0a8d677355667acb55",
  "return_word": true
}
请求参数名 类型 必传 描述
lib_id String 词库ID
return_word String 决定是否返回词条明细,建议必传true

# (2)返回示例与返参

{
  "code": "000000",
  "desc": "success",
  "data": {
    "lib_id": "c92f643417fc4f0a8d677355667acb55",
    "name": "黑名单库1",
    "category": "contraband",
    "category_name": "违禁",
    "suggestion": "block",
    "type": 1,
    "scope": 1,
    "enable": true,
    "create_time": "2023-03-13 16:09:41",
    "update_time": "2023-03-13 17:13:06",
    "word_list": [
      {
        "word": "傻缺",
        "tts": "傻[=sha3]缺[=que1]",
        "time": "2023-03-13 17:13:06"
      },
      {
        "word": "蠢材",
        "tts": "蠢[=chun3]材[=cai2]",
        "time": "2023-03-13 17:13:06"
      }
    ]
  },
  "sid": "7c0f587e1e7146e1993eb5604aac5122"
}
返回参数名 类型 描述
lib_id String 词库 ID
name String 词库名称
category String 词库分类
category_name String 分类名称
suggestion String 处理方式
type Integer 词库类型:
1:黑名单
2:白名单
scope Integer 词库应用领域:
1:自定义词库
2:业务词库
enable Boolean 启用状态
create_time Date 创建时间
update_time Date 更新时间

# 4、根据lib_id删除词条

请求接口地址:https://audit.iflyaisol.com/audit_res/v1/wordLib/delWord (opens new window)

# (1)请求示例与传参

{
  "lib_id": "c92f643417fc4f0a8d677355667acb55",
  "word_list": [
    "傻缺",
    "蠢材"
  ]
}
请求参数名 类型 必传 描述
lib_id String 词库ID
word_list List 待删除的词列表(单次不能超过 500条)

# (2)返回示例与返参

{
  "code": "000000",
  "desc": "success",
  "sid": "67c3f36d7d88444b9a9ee6187cb6d4dc"
}

# 5、根据appid查询账户下所有词库

请求接口地址:https://audit.iflyaisol.com/audit_res/v1/wordLib/list (opens new window)

# (1)请求示例与传参

{// json传空{}即可,根据appid查询的
}

# (2)返回示例与返参

{
  "code": "000000",
  "desc": "success",
  "data": {
    "list": [
      {
        "lib_id": "317ec840bfa94d5598d0f9f3bdb0400a",
        "name": "黑名单库1",
        "category": "contraband",
        "category_name": "违禁",
        "suggestion": "block",
        "type": 1,
        "scope": 1,
        "enable": true,
        "create_time": "2023-03-13 15:49:33",
        "update_time": "2023-03-13 15:49:33"
      },
      {
        "lib_id": "e1dd4b6338894c2086bcd5a1860cd282",
        "name": "白名单库1",
        "suggestion": "pass",
        "type": 2,
        "scope": 1,
        "enable": true,
        "create_time": "2023-03-13 16:23:49",
        "update_time": "2023-03-13 16:23:49"
      }
    ],
    "total": 2
  },
  "sid": "e5ea2eb2123b436281f0e1a36cd1774a"
}
返回参数名 类型 描述
list List 词库列表
total Integer 词库总数
list[n].lib_id String 词库ID
list[n].name String 词库名称
list[n].category String 词库分类
list[n].category_name String 词库分类名称
list[n].suggestion String 处理方式
list[n].type Integer 词库类型
list[n].scope Integer 词库作用范围
list[n].enable Boolean 词库启用状态
list[n].create_time Date 创建时间 yyyy-MM-dd HH:mm:ss,东8区时间
list[n].update_time Date 更新时间 yyyy-MM-dd HH:mm:ss,东8区时间

# 6、根据lib_id删除词库

请求接口地址:https://audit.iflyaisol.com/audit_res/v1/wordLib/delete (opens new window)

# (1)请求示例与传参

{
  "lib_id": "c92f643417fc4f0a8d677355667acb55" // 删除词库的ID
}

# (2)返回示例与返参

{"code":"000000","desc":"success","sid":"88ce2fbdcd93428aadab17959c751748"}

# (2)返回示例

{
  "code": "000000",
  "desc": "success",
  "sid": "50cb6167dc1f43179321b5ac2133b384"
}

# 常见问题

# 文本合规一次性请求字符上限是多少?支持批量传多个文本吗?

答:请求字符上限是5000个字符,异步请求支持批量传多个文本。

# 文本合规支持对违禁词的定位与查找吗?

答:支持。但是对于整体违禁策略,API不会返回具体的违禁词以及违禁词位置。

# 支持自定义的违规词添加吗?

答:支持。可以添加自定义的违规词库,同时可以指定放行的词库。

在线
咨询
建议
反馈
体验
中心