腾讯云文本内容安全(TMS)对接使用完全指南:从开通服务到生产级部署
1. 引言:为什么需要文本内容安全
随着互联网内容的指数级增长,各类UGC平台、社交应用、电商评论系统都面临着日益严峻的内容安全挑战。色情信息、暴力言论、违法违规广告、恶意谩骂等内容不仅影响用户体验,更可能带来严重的法律合规风险。腾讯云文本内容安全(Text Moderation System,TMS)正是为解决这一问题而生的AI智能识别产品。
TMS基于深度学习技术,能够对输入的文本进行智能分析,识别其中是否存在色情、违法、谩骂、广告等风险内容,并返回处置建议、风险标签及对应的置信度分数。目前,TMS提供三类核心服务:文本安全内容服务(适用于检测互联网常见风险)、文本AI生成识别服务(鉴别文本是否为AI工具生成)、以及文本金融大模型审校服务(专为金融场景设计,可识别行业黑话与隐性违规)。
本文将从零开始,手把手教你完成腾讯云TMS的完整对接流程,涵盖开通服务、获取密钥、API调用、SDK集成、自定义策略配置以及生产环境最佳实践,帮助你在30分钟内快速上线内容审核能力。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. 产品能力全景解析
在开始对接之前,有必要对TMS的产品能力有一个全面的认识。TMS并非一个单一的审核接口,而是一套完整的内容安全解决方案。
2.1 文本安全内容服务
这是TMS最核心的服务,适用于检测互联网上常见的文本风险。系统预设了多个维度的风险识别能力:
- 色情内容:识别性相关的低俗内容,包含性行为描述、性器官描述、色情段子等,并能检测各种变体如拼音、拆字、谐音变体等,具有很好的抗干扰能力。
- 暴恐违禁:识别涉及暴力、恐怖主义、违禁品等相关内容。
- 违法违规:检测涉及法律禁止的各类违规信息。
- 谩骂攻击:识别人身攻击、侮辱性言论等不文明内容。
- 广告垃圾:检测各类垃圾广告、引流信息等。
- 灌水内容:识别无意义的重复内容或刷屏信息。
2.2 文本AI生成识别服务
随着ChatGPT等生成式AI技术的快速发展,AI生成或改写的文本已深度渗透进教育、小说、传媒等场景。TMS的AI生成识别服务可以帮助企业鉴别一段文本是否为AI工具生成,返回AI生成的概率分数。这一能力在学术诚信检测、内容原创性验证等场景中具有重要价值。
2.3 文本金融大模型审校服务
当前主流的AI审核服务多基于互联网UGC场景构建,难以满足金融行业在内容形态与审核规则上的专业需求。金融大模型审校服务基于大模型技术,专为应对金融场景中的长文本语义理解与特有风险识别而设计,能够识别行业俚语、暗示内幕、夸大宣传等金融场景特有风险。
3. 接入前的准备工作
在正式开始调用API之前,需要完成以下准备工作。
3.1 开通TMS服务
进入腾讯云内容安全控制台,选择"文本内容安全服务",点击"确定"即可完成开通。首次开通的用户会自动获得3000条免费试用包,可用于初期测试和验证。
3.2 获取API密钥
API调用需要用到SecretId和SecretKey用于身份鉴权。获取方式如下:
- 登录腾讯云控制台
- 进入"访问管理" > "API密钥管理"
- 创建或查看已有的密钥对(SecretId + SecretKey)
密钥安全提示:SecretKey请妥善保管,不要硬编码在代码中或提交到代码仓库。建议使用环境变量或密钥管理服务(如腾讯云SSM)来存储和读取密钥。
3.3 配置CAM权限
如果使用的是子账号或协作者账号,需要确保该账号拥有TMS服务的访问权限。主账号可在CAM控制台创建子账号,并配置授予子账号的访问权限。具体来说,需要为子账号授权包含tms:TextModeration操作的策略。
登录控制台必须授权相应的CAM权限,子用户被授予权限后,可在子用户登录界面输入主账号ID、子用户名和子用户密码登录控制台,并在云产品中选择内容安全进入控制台。
4. 两种接入方式详解
腾讯云TMS支持原生API和SDK两种接入方式,各有优劣。
4.1 原生API接入
原生API接入需要开发者根据腾讯云的签名指引,自行构建请求、生成签名进行鉴权。这种方式灵活性最高,但开发工作量也相对较大,需要处理签名算法、HTTP请求构造、错误处理等底层细节。
接口请求域名为 tms.tencentcloudapi.com,协议仅支持HTTPS。文本长度限制为最长10,000个字符(以Unicode编码计量)。默认接口请求频率限制为1000次/秒。
4.2 SDK接入(推荐)
腾讯云推荐使用SDK接入方式。SDK已经封装了签名和请求过程,开发者只需关注产品提供的具体接口即可,接入流程更为便捷。腾讯云提供了7种常见编程语言的SDK:
- Python:
tencentcloud-sdk-python - Java:
tencentcloud-sdk-java - PHP:
tencentcloud-sdk-php - Go:
tencentcloud-sdk-go - NodeJS:
tencentcloud-sdk-nodejs - .NET:
tencentcloud-sdk-dotnet - C++:
tencentcloud-sdk-cpp
各语言SDK的使用说明可参考腾讯云官方文档,建议安装最新版本的SDK。
5. 核心接口TextModeration详解
TMS的核心接口是 TextModeration,本接口提供内容安全和AI生成识别服务。
5.1 请求参数
以下为接口的核心请求参数:
| 参数名称 | 必选 | 类型 | 描述 |
|---|---|---|---|
| Action | 是 | String | 公共参数,本接口取值:TextModeration |
| Version | 是 | String | 公共参数,本接口取值:2020-12-29 |
| Region | 是 | String | 公共参数,详见产品支持的地域列表 |
| Content | 是 | String | 待检测的文本内容,需为UTF-8编码并以Base64格式传入 |
| BizType | 否 | String | 接口使用的识别策略编号,需在控制台获取 |
| DataId | 否 | String | 您为待检测文本分配的数据ID,用于标识和管理,长度不超过64个字符 |
| User | 否 | Object | 业务用户对应的设备信息,包含IP、MAC等字段 |
特别说明:Content字段需要先将文本进行UTF-8编码,然后再进行Base64编码。例如,中文文本"你好"需要先转换为UTF-8字节,再Base64编码后传入。
BizType字段用于指定使用的审核策略。如果不传该参数,系统会使用默认策略。BizType的获取方式是在内容安全控制台的策略管理页面查看或创建。
5.2 返回结果数据结构
接口返回结果包含以下核心字段:
| 字段 | 类型 | 描述 |
|---|---|---|
| Suggestion | String | 审核建议:Block(违规拦截)/ Review(疑似需人工复审)/ Pass(正常通过) |
| Label | String | 违规类型标签:Normal(正常)、Porn(色情)、Abuse(谩骂)、Ad(广告)等 |
| Score | Integer | 置信度评分,取值范围0-100,越高代表文本越有可能属于当前返回的标签 |
| DetailResults | Array | 详细识别结果,包含每个标签的详细判定信息 |
| Keywords | Array | 命中的关键词列表,用于标注文本违规的具体原因 |
在DetailResults中,每个识别结果包含以下子字段:
- Label:检测结果对应的恶意标签(Normal/Porn/Abuse/Ad等)
- Suggestion:针对该标签的后续操作建议(Block/Review/Pass)
- Keywords:命中的关键词列表
- Score:该标签下的置信度分数
- LibType:词库类型,1为黑白库,2为自定义关键词库
- LibId:自定义库的ID
- LibName:自定义库的名称
- SubLabel:二级标签
特别说明:如果Keywords字段返回为空但Score不为空,说明识别结果是来自于语义模型判断而非关键词匹配。
6. 多语言SDK代码示例
以下提供Python、Java、Go三种主流语言的完整调用示例,所有示例均从API Explorer生成。
6.1 Python SDK示例
首先安装SDK:
pip install tencentcloud-sdk-python完整调用代码:
import json
import base64
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.tms.v20201229 import tms_client, models
def moderate_text(secret_id, secret_key, text, biz_type=None):
try:
# 实例化认证对象
cred = credential.Credential(secret_id, secret_key)
# 实例化HTTP选项
http_profile = HttpProfile()
http_profile.endpoint = \"tms.tencentcloudapi.com\"
# 实例化客户端配置
client_profile = ClientProfile()
client_profile.http_profile = http_profile
# 实例化TMS客户端
client = tms_client.TmsClient(cred, \"ap-guangzhou\", client_profile)
# 构造请求
req = models.TextModerationRequest()
# Content需要Base64编码
encoded_content = base64.b64encode(text.encode(\"utf-8\")).decode(\"utf-8\")
req.Content = encoded_content
if biz_type:
req.BizType = biz_type
# 发起请求
resp = client.TextModeration(req)
# 解析响应
result = json.loads(resp.to_json_string())
return result
except Exception as e:
print(f\"调用失败: {e}\")
return None
if __name__ == \"__main__\":
# 从环境变量获取密钥(推荐方式)
import os
secret_id = os.environ.get(\"TENCENT_SECRET_ID\")
secret_key = os.environ.get(\"TENCENT_SECRET_KEY\")
test_text = \"这是一个测试文本,用于验证内容审核功能\"
result = moderate_text(secret_id, secret_key, test_text)
if result:
print(f\"审核建议: {result.get('Suggestion')}\")
print(f\"违规标签: {result.get('Label')}\")
print(f\"置信度: {result.get('Score')}\")6.2 Java SDK示例
Maven依赖:
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>3.1.xxx</version>
</dependency>完整调用代码:
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.tms.v20201229.TmsClient;
import com.tencentcloudapi.tms.v20201229.models.*;
import java.util.Base64;
public class TextModerationDemo {
public static void main(String[] args) {
try {
// 实例化认证对象
Credential cred = new Credential(\"SecretId\", \"SecretKey\");
// 实例化HTTP选项
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint(\"tms.tencentcloudapi.com\");
// 实例化客户端配置
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 实例化TMS客户端
TmsClient client = new TmsClient(cred, \"ap-guangzhou\", clientProfile);
// 构造请求
TextModerationRequest req = new TextModerationRequest();
String text = \"待审核的文本内容\";
String encoded = Base64.getEncoder().encodeToString(text.getBytes(\"UTF-8\"));
req.setContent(encoded);
req.setBizType(\"default\");
// 发起请求
TextModerationResponse resp = client.TextModeration(req);
// 输出结果
System.out.println(TextModerationResponse.toJsonString(resp));
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
}
}6.3 Go SDK示例
安装SDK:
go get github.com/tencentcloud/tencentcloud-sdk-go完整调用代码:
package main
import (
\"encoding/base64\"
\"fmt\"
\"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(\"SecretId\", \"SecretKey\")
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = \"tms.tencentcloudapi.com\"
client, _ := tms.NewClient(credential, \"ap-guangzhou\", cpf)
request := tms.NewTextModerationRequest()
text := \"待审核的文本内容\"
encoded := base64.StdEncoding.EncodeToString([]byte(text))
request.Content = &encoded
response, err := client.TextModeration(request)
if _, ok := err.(*errors.TencentCloudSDKError); ok {
fmt.Printf(\"API错误: %s\", err)
return
}
if err != nil {
panic(err)
}
fmt.Printf(\"%s\", response.ToJsonString())
}7. 自定义策略配置
不同的业务场景对内容审核有不同的要求——社区论坛需要宽松一点的谩骂阈值,金融平台对违规荐股零容忍,游戏平台要重点拦截外挂广告。腾讯云TMS的自定义策略配置功能,让用户可以为不同场景设置不同的审核规则。
7.1 策略(BizType)机制
腾讯云TMS通过BizType(业务类型)实现策略分离:
- 每个BizType对应一套独立的审核策略
- 调用API时通过BizType参数指定使用哪套策略
- 不同BizType可以关联不同的自定义词库和识别规则
7.2 配置自定义策略的步骤
在内容安全控制台配置自定义策略的具体步骤如下:
- 登录内容安全控制台,在概览页单击"应用管理" > "新增应用",输入应用名称后保存
- 在应用管理页面,选择刚创建的应用,单击"场景管理"
- 在场景管理页面,单击"新建场景",输入场景名称、选择行业分类、选择文本内容安全后保存
- 场景创建完成后,单击"配置" > "文本内容安全"进入策略详情页面
- 系统会显示默认策略,如需更改可单击"编辑"修改当前策略
策略配置的主要参数包括:
- 识别类型选择:选择需要开启的违规类型(色情/暴恐/违法/谩骂/广告/灌水)
- 阈值调整:调整各类违规的判定阈值
- 自定义词库关联:将特定词库绑定到策略上
7.3 多场景策略矩阵最佳实践
建议按业务场景建立多套策略:
├── BizType_forum(社区论坛)
│ ├── 开启:色情、暴恐、违法、谩骂、广告
│ ├── 关联词库:社区专用词库
│ └── 谩骂阈值:适中
├── BizType_live(直播弹幕)
│ ├── 开启:全部类型
│ ├── 关联词库:直播专用词库
│ └── 所有阈值:严格
├── BizType_ecom(电商评价)
│ ├── 开启:色情、违法、广告
│ ├── 关联词库:电商专用词库
│ └── 广告阈值:极严
└── BizType_game(游戏聊天)
├── 开启:色情、谩骂、广告
├── 关联词库:游戏专用词库
└── 特殊:外挂广告关键词8. 自定义词库配置
腾讯云TMS默认就能识别色情、暴恐、违法、谩骂、广告、灌水等违规内容。但每个企业的业务不同,"违规"的边界也不同。自定义词库就是用户的"个性化审核规则"——系统识别不了的,用户自己来定义。
8.1 预设词库与自定义词库的区别
| 维度 | 预设词库 | 自定义词库 |
|---|---|---|
| 来源 | 腾讯官方维护 | 用户自行配置 |
| 覆盖范围 | 通用违规类型 | 业务特定关键词 |
| 生效范围 | 绑定子用户 | 绑定策略,所有子用户共享 |
| 更新方式 | 腾讯自动更新 | 用户自行维护 |
| 适用场景 | 通用安全审核 | 行业特定+精细化审核 |
最佳实践是预设词库与自定义词库组合使用,通用规则交给腾讯,特殊需求自己定义。
8.2 配置自定义词库的步骤
自定义词库的配置分为以下步骤:
第一步:创建自定义词库
登录腾讯云控制台,进入"内容安全" > "名单管理" > "关键词名单" > "自定义名单",点击"新建词库",填写文本库名称、处理建议(违规/疑似/放过)和匹配模式(精确匹配/模糊匹配)。
第二步:添加关键词
支持单条添加和批量导入两种方式。批量导入可下载模板后上传。支持中英文关键词,无需训练模型,即配即用。
第三步:创建自定义策略并关联词库
进入"策略管理"页面,创建新的审核策略(BizType),将自定义词库关联到该策略。
第四步:调用API时指定策略
在调用文本审核API时,通过BizType参数指定创建的策略名称。
8.3 高级技巧:分级词库管理
建议按维度建立多个自定义词库,灵活组合:
├── 通用违规词库:跨场景通用敏感词 → 所有策略
├── 行业特定词库:特定行业术语 → 对应行业策略
├── 竞品关键词库:竞品品牌和引流词 → 社区/评价策略
├── 营销违规词库:虚假宣传相关 → 电商/广告策略
└── 时效性词库:热点事件相关临时词 → 按需启用9. API Explorer:一站式调试工具
腾讯云提供了API Explorer在线调试工具,极大地降低了接口的接入门槛。
API Explorer的核心能力包括:
- 在线调用:直接在网页上填写参数并发起真实请求,实时查看返回结果
- 签名验证:自动完成签名计算,无需手动处理
- SDK代码生成:选择编程语言后自动生成对应的SDK调用代码
- 快速检索接口:方便查找和了解各接口的详细信息
使用API Explorer进行调试的流程非常简单:进入控制台 > API Explorer,选择产品为TMS、版本为2020-12-29、接口为TextModeration,填写Content等参数后点击"发送请求"即可查看结果。调试成功后,可以直接复制生成的SDK代码到自己的项目中。
10. 生产环境最佳实践
10.1 超时设置
建议将读取超时设置为30秒,避免网络波动导致的超时误报。连接超时可设置为5秒。
10.2 错误重试机制
对于网络异常导致的调用失败,建议实现自动重试机制,最多重试3次。重试时应采用指数退避策略,避免加重服务端压力。
10.3 异步审核与同步审核的选择
对于非实时场景(如离线批量审核),建议使用异步调用方式,提升系统吞吐量。对于实时交互场景(如用户发帖、发消息),则使用同步接口即时返回结果。
10.4 内网调用优化
如果服务部署在腾讯云上(如CVM、容器等),建议使用内网域名调用API,可以显著减少网络延迟并节省外网流量费用。
10.5 密钥安全管理
生产环境中严禁将SecretKey硬编码在代码中或提交到代码仓库。推荐使用以下方式:
- 环境变量:通过系统环境变量读取密钥
- 配置中心:使用腾讯云SSM(凭据管理系统)存储和获取密钥
- CAM角色:如果服务部署在腾讯云上,可使用CAM角色授权,无需显式配置密钥
10.6 上下文关联审核
对于IM聊天、大模型对话、帖子评论等需要关联上下文信息的审核场景,TMS支持上下文关联审核功能。通过SessionId字段将多轮对话或同一会话中的多条消息关联起来进行综合判断。
11. 计费说明与成本优化
了解TMS的计费方式有助于合理规划预算。
11.1 计费模式
文本内容安全的付费方式为预付费套餐包模式,依据数据请求次数进行计费。套餐包自购买日起1年内有效。
如果套餐包过期或消耗完毕且未购买新套餐包,将按照后付费日结的方式结算,价格为25元/万条;不满1万条的按比例折算。
11.2 免费额度
首次开通TMS服务的用户自动获得3000条免费试用包,可用于初期测试。
11.3 欠费与停服
如在停服7天内冲正则自动恢复服务。如停服超过7天则会销毁,需要重新开通。
12. 常见问题解答
问1:TMS支持哪些语言的文本审核?
目前支持中文和英文两种语言的检测。
问2:单条文本的长度限制是多少?
最长10,000个字符(以Unicode编码计量)。
问3:默认的QPS限制是多少?
内容安全服务默认1000次/秒,AI生成识别服务默认50次/秒。
问4:文本用空格或其他字符间隔了,还能检测到吗?
可以。腾讯云TMS的模糊匹配功能支持检测变体后的输入词,包括拆分字、形似字、音似字、简繁体等形式的相似词。
问5:为什么没有命中关键词,返回的参数中却显示命中恶意类型?
这是因为识别结果可能来自于语义模型判断而非关键词匹配。如果Keywords字段返回为空但Score不为空,说明是语义模型判断的结果。
问6:TMS支持私有化部署吗?
目前TMS以公有云SaaS服务形式提供,暂不支持私有化部署。




