腾讯云文本内容安全(TMS)对接使用完全指南:从开通服务到生产级部署
1. 腾讯云文本内容安全(TMS)产品概述
文本内容安全(Text Moderation System,TMS)是腾讯云推出的一款基于深度学习技术的文本AI智能识别产品。它能够帮助企业自动识别文本中出现的色情、暴恐、违法、谩骂、广告等风险内容,有效降低人工审核成本,提升内容合规性。
目前,腾讯云TMS提供三大核心服务模块:
- 文本安全内容服务:检测互联网上常见的文本色情、违法、谩骂、广告等风险,适用于社区评论、直播弹幕、用户资料等通用UGC场景。
- 文本AI生成识别服务:鉴别文本是否为AI工具生成或改写,适用于教育、小说、传媒等需要区分人工与AI内容的场景。
- 文本金融大模型审校服务:基于大模型技术,专门应对金融场景中的长文本语义理解与特有风险识别,支持规则定制。
TMS支持中文和英文两种语言的文本审核,文本长度限制为最长10,000个字符(以Unicode编码计量)。默认接口请求频率限制为1000次/秒。对于大多数中小企业和开发者而言,TMS的接入过程极其简单——无需安装额外脚本,通过HTTPS API直接调用,配合多语言SDK,最快30分钟即可完成对接。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 接入前的准备工作
在正式开始对接腾讯云TMS之前,需要完成以下几项准备工作。
2.1 注册腾讯云账号并完成实名认证
如果还没有腾讯云账号,需要先完成注册。访问腾讯云官网,点击注册按钮,按照提示填写手机号、邮箱等信息完成注册。注册完成后,需进行实名认证——个人认证需提供身份证信息,企业认证需提供营业执照等信息。
2.2 获取API密钥(SecretId和SecretKey)
API密钥是调用腾讯云API的身份凭证,用于对开发者的身份和权限进行校验。获取步骤如下:
- 登录腾讯云控制台
- 进入"访问管理" > "API密钥管理"
- 点击"新建密钥",系统会生成一对密钥:SecretId和SecretKey
需要注意的是,SecretKey请妥善保管,不要硬编码在代码中或提交到代码仓库,建议使用环境变量或密钥管理服务来存储。
2.3 确保账户余额充足
开通TMS服务需要账户余额大于0元。如果账户余额不足,需要先在控制台进行充值。
3. 开通文本内容安全服务
完成准备工作后,即可开通TMS服务。整个过程仅需几分钟。
3.1 开通步骤
- 登录内容安全控制台
- 在概览页单击"立即开通"
- 在弹出的审核服务管理窗口中,选择"文本内容安全服务"
- 单击"确定"完成开通
3.2 免费试用权益
新用户首次开通服务后,即可自动获得3000条文本的免费试用包(不含"文本AI生成识别"能力),自开通之日起15天内有效。这对于中小企业和个人开发者来说是一个非常好的零成本体验机会。
3.3 计费方式
腾讯云TMS采用预付费套餐包模式,依据数据请求次数进行计费。若试用包用尽或到期,客户可主动开通按量后付费功能。后付费模式结算方式为日结,价格为每万条文本25元。用户也可购买套餐包来获取更优惠的价格。
4. 控制台配置:自定义词库与审核策略
开通服务后,需要在控制台进行配置,包括创建自定义词库和配置审核策略。配置完成后会获取一个BizType字段的值,该值将在后续API调用中使用。
4.1 配置自定义词库
腾讯云TMS默认能够识别色情、暴恐、违法、谩骂、广告、灌水等7大类违规内容。但不同行业、不同平台对"违规内容"的定义各不相同。自定义词库就是你的"个性化审核规则"——系统识别不了的,你自己来定义。
配置自定义词库的步骤如下:
- 在内容安全控制台的"名单管理" > "关键词名单" > "自定义名单"页面,点击"创建词库"
- 在弹出的新建关键词库框中,输入词库名称,选择识别结果和匹配模式,单击确定完成创建
- 创建词库后,单击"管理"进入词库管理页面
- 单击"添加关键词",选择对应的机审标签、关键词类型,可通过文本输入或文件上传的方式添加关键词
自定义词库支持中英文关键词,无需训练模型,即配即用。建议预设词库与自定义词库组合使用,通用规则交给腾讯,特殊需求自己定义。
4.2 配置审核策略(BizType)
策略是业务下内容安全的规则集,包含风险识别模型和关键词库。在一个应用中,可根据不同的场景配置多条策略。
配置审核策略的步骤如下:
- 在应用管理页面,单击"新建应用",输入应用名称和应用说明
- 新建应用后,单击"新建策略"
- 在新建策略页面,选择"文本内容安全",输入Biztype、Biztype名称、场景
- 在策略模板配置页面,根据具体业务选择对应的行业、业务类型、业务场景
- 单击确定引用模板保存,完成策略创建
Biztype是策略的唯一标识,仅支持数字、英文、下划线和中划线,最多32个字符。该值为API接口的关键传参。不同BizType对应一套独立的审核策略,可以关联不同的自定义词库和识别规则。
例如,AI聊天室的个人简介审核,可选择系统推荐模板:社交 - 语聊房 - 个人资料。如未找到业务分类,请选择通用模板。
5. SDK安装与开发环境准备
腾讯云提供了7种常见的编程语言SDK,已经封装了签名和请求过程,开发时只需关注产品提供的具体接口即可。支持的编程语言包括Python、Java、PHP、Go、Node.js、.NET、C++。
5.1 Python SDK安装
使用pip命令安装腾讯云Python SDK:
pip install tencentcloud-sdk-python也可以仅安装TMS专用模块:
pip install tencentcloud-sdk-python-common
pip install tencentcloud-sdk-python-tms5.2 Java SDK安装(Maven)
在pom.xml中添加以下依赖:
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>最新版本</version>
</dependency>5.3 Go SDK安装
使用go get命令安装:
go get github.com/tencentcloud/tencentcloud-sdk-go6. API调用与代码示例
腾讯云TMS的核心接口为TextModeration(文本审核),请求协议为HTTPS(不支持HTTP)。
6.1 核心请求参数
调用TextModeration接口时,需要传入以下核心参数:
- Action:必选,本接口取值:TextModeration
- Version:必选,本接口取值:2020-12-29
- Region:必选,地域参数
- Content:必选,待检测的文本内容,需为UTF-8编码并以Base64格式传入
- BizType:可选,审核策略编号,在控制台获取
- DataId:可选,为待检测文本分配的数据ID,便于标识和管理
6.2 返回结果说明
TextModeration接口返回的主要字段如下:
- Suggestion:审核建议,取值包括Block(违规)、Review(疑似)、Pass(正常)
- Label:违规类型标签(色情、暴恐、违法、谩骂、广告等)
- Score:置信度评分
- DetailResults:详细识别结果
- Keywords:命中的关键词(如有)
6.3 Python完整调用示例
import base64
import json
import os
from tencentcloud.common import credential
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.tms.v20201229 import tms_client, models
def text_moderation(content, biz_type=None):
try:
# 实例化认证对象,从环境变量获取密钥
cred = credential.Credential(
os.environ.get("TENCENTCLOUD_SECRET_ID"),
os.environ.get("TENCENTCLOUD_SECRET_KEY")
)
# 实例化客户端
client = tms_client.TmsClient(cred, "ap-guangzhou")
# 实例化请求对象
req = models.TextModerationRequest()
# 将文本进行Base64编码
content_base64 = base64.b64encode(content.encode('utf-8')).decode('utf-8')
req.Content = content_base64
# 如果指定了BizType则传入
if biz_type:
req.BizType = biz_type
# 调用接口
resp = client.TextModeration(req)
# 解析返回结果
result = json.loads(resp.to_json_string())
return {
"suggestion": result.get("Suggestion"),
"label": result.get("Label"),
"score": result.get("Score"),
"detail_results": result.get("DetailResults"),
"keywords": result.get("Keywords")
}
except TencentCloudSDKException as e:
print(f"调用失败: {e}")
return None
if __name__ == "__main__":
# 测试调用
test_content = "这是一段需要审核的测试文本"
result = text_moderation(test_content)
if result:
print(f"审核结果: {json.dumps(result, ensure_ascii=False, indent=2)}")6.4 Java完整调用示例
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.tms.v20201229.TmsClient;
import com.tencentcloudapi.tms.v20201229.models.TextModerationRequest;
import com.tencentcloudapi.tms.v20201229.models.TextModerationResponse;
import java.util.Base64;
public class TmsDemo {
public static void main(String[] args) {
try {
// 实例化认证对象
Credential cred = new Credential(
System.getenv("TENCENTCLOUD_SECRET_ID"),
System.getenv("TENCENTCLOUD_SECRET_KEY")
);
// 实例化客户端
TmsClient client = new TmsClient(cred, "ap-guangzhou");
// 实例化请求对象
TextModerationRequest req = new TextModerationRequest();
// 将文本进行Base64编码
String content = "这是一段需要审核的测试文本";
String contentBase64 = Base64.getEncoder().encodeToString(content.getBytes("UTF-8"));
req.setContent(contentBase64);
// 可选:设置BizType
// req.setBizType("your_biz_type");
// 调用接口
TextModerationResponse resp = client.TextModeration(req);
// 输出结果
System.out.println("Suggestion: " + resp.getSuggestion());
System.out.println("Label: " + resp.getLabel());
System.out.println("Score: " + resp.getScore());
} catch (TencentCloudSDKException e) {
System.err.println("调用失败: " + e.getMessage());
}
}
}6.5 Go完整调用示例
package main
import (
"encoding/base64"
"fmt"
"os"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
tms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tms/v20201229"
)
func main() {
// 实例化认证对象
credential := common.NewCredential(
os.Getenv("TENCENTCLOUD_SECRET_ID"),
os.Getenv("TENCENTCLOUD_SECRET_KEY"),
)
// 实例化客户端配置
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "tms.tencentcloudapi.com"
// 实例化客户端
client, _ := tms.NewClient(credential, "ap-guangzhou", cpf)
// 实例化请求对象
request := tms.NewTextModerationRequest()
// 将文本进行Base64编码
content := "这是一段需要审核的测试文本"
contentBase64 := base64.StdEncoding.EncodeToString([]byte(content))
request.Content = &contentBase64
// 调用接口
response, err := client.TextModeration(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf("API错误: %s\n", err)
return
}
if err != nil {
fmt.Printf("调用失败: %s\n", err)
return
}
// 输出结果
fmt.Printf("Suggestion: %s\n", *response.Response.Suggestion)
fmt.Printf("Label: %s\n", *response.Response.Label)
fmt.Printf("Score: %d\n", *response.Response.Score)
}7. 高级配置:自定义词库与多策略管理
7.1 多词库分组管理
可以创建多个自定义词库,分别管理不同类型的关键词:
├── 词库A:外挂广告关键词
├── 词库B:竞品品牌关键词
├── 词库C:行业特定敏感词
└── 词库D:节日营销违规词7.2 多策略分场景配置
不同业务场景对内容审核有不同的要求。建议为不同场景创建不同的BizType策略:
├── BizType_forum(社区论坛)
│ ├── 开启:色情、暴恐、违法、谩骂、广告
│ ├── 关联词库:社区专用词库
│ └── 谩骂阈值:适中
│
├── BizType_live(直播弹幕)
│ ├── 开启:全部类型
│ ├── 关联词库:直播专用词库
│ └── 所有阈值:严格
│
├── BizType_ecom(电商评价)
│ ├── 开启:色情、违法、广告
│ ├── 关联词库:电商专用词库
│ └── 广告阈值:极严
│
└── BizType_game(游戏聊天)
├── 开启:色情、谩骂、广告
├── 关联词库:游戏专用词库
└── 特殊:外挂广告关键词8. 生产环境最佳实践
8.1 超时设置
建议将连接超时设置为5秒,读取超时设置为30秒,避免网络波动导致的调用超时。
8.2 错误重试机制
对于网络异常导致的调用失败,建议实现自动重试机制,最多重试3次。
8.3 异步审核
对于非实时场景(如批量审核、离线审核),建议使用异步调用方式,提升系统吞吐量。
8.4 内网调用
如果服务部署在腾讯云上,建议使用内网域名调用API,减少网络延迟和外网流量费用。
8.5 降级策略
当审核服务不可用时,建议实现降级策略(如放行+日志记录),确保业务不中断。
8.6 三级判定结果处理
腾讯云TMS返回Block、Review、Pass三级结果。建议的处理方式如下:
- Block:自动拦截(高确信违规)
- Review:人工复审而非直接拦截
- Pass:正常发布
关键优化点:不要把Review也当作Block处理。Review内容应该进入人工复审,而不是直接拦截。
8.7 建立反馈闭环
建议建立用户申诉 → 人工复核 → 确认误判 → 更新词库/调整阈值 → 效果验证的持续优化闭环。
9. 成本优化建议
腾讯云TMS提供灵活的阶梯定价:
- 新用户首次开通可获得3000条免费试用包
- 文本内容安全服务套餐包:180万条/2000元(5折首单)
- 后付费日结:25元/万条
建议根据业务量选择合适的套餐包,避免按量后付费的高单价。
10. 常见问题解答
Q1:开通TMS服务需要多长时间?
A:开通服务仅需几分钟。登录内容安全控制台,点击立即开通,选择文本内容安全服务即可完成。新用户会自动获得3000条免费试用包。
Q2:TMS支持检测哪些语言?
A:TMS原生支持中文和英文两种语言的文本内容审核。对于中英混排的文本,TMS也具备良好的识别能力。
Q3:文本长度有限制吗?
A:有。单次请求的文本长度限制为最长10,000个字符(以Unicode编码计量)。
Q4:调用频率有限制吗?
A:内容安全服务默认1000次/秒,AI生成识别服务默认50次/秒。
Q5:如何降低审核误判率?
A:可以从以下几个方面入手:分场景配置不同的审核策略(BizType);优化自定义词库,使用精确匹配替代模糊匹配;设置白名单;善用三级判定(Block/Review/Pass),Review内容走人工复审而非直接拦截;建立用户申诉与反馈闭环持续优化。
Q6:TMS可以单独购买吗?
A:可以单独购买文本内容安全服务来实现敏感词识别。如有需要可进入文本内容安全购买页进行购买。





