# 文本合规 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不会返回具体的违禁词以及违禁词位置。
# 支持自定义的违规词添加吗?
答:支持。可以添加自定义的违规词库,同时可以指定放行的词库。