腾讯云文本内容安全(TMS)对接使用完全指南:从开通服务到生产级部署
1. 引言:为什么需要文本内容安全
随着互联网内容的指数级增长,各类UGC平台、社交应用、电商评论系统都面临着日益严峻的内容安全挑战。色情信息、暴力言论、违法违规广告、恶意谩骂等内容不仅严重破坏用户体验,更可能带来法律合规风险,轻则被监管部门约谈处罚,重则导致平台关停。腾讯云文本内容安全(Text Moderation System,TMS)正是为解决这一问题而生的AI智能识别产品。
TMS基于深度学习技术,能够对输入的文本进行智能分析,识别其中是否存在色情、违法、谩骂、广告等风险内容,并返回处置建议、风险标签及对应的置信度分数。目前,TMS提供三大核心服务:文本安全内容服务(检测互联网常见风险)、文本AI生成识别服务(鉴别文本是否为AI工具生成)、以及文本金融大模型审校服务(专为金融场景设计)。
本文将从零开始,完整讲解腾讯云TMS的对接流程,涵盖开通服务、获取密钥、API调用、SDK集成、自定义策略配置以及生产环境最佳实践,帮助你在最短时间内快速上线内容审核能力。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
2. TMS产品能力全景解析
在开始对接之前,有必要对TMS的产品能力有一个全面的认识。TMS并非一个单一的审核接口,而是一套完整的内容安全解决方案。
2.1 文本安全内容服务
这是TMS最核心的服务,适用于检测互联网上常见的文本风险。系统预设了多个维度的风险识别能力:
- 色情内容:识别性相关的低俗内容,包含性行为描述、性器官描述、色情段子等,并能检测各种变体如拼音、拆字、谐音变体等,具有很好的抗干扰能力。
- 暴恐违禁:识别涉及暴力、恐怖主义、违禁品等相关内容。
- 违法违规:检测涉及法律禁止的各类违规信息。
- 谩骂攻击:识别人身攻击、侮辱性言论等不文明内容。
- 广告垃圾:检测各类垃圾广告、引流信息等。
- 灌水内容:识别无意义的重复内容或刷屏信息。
2.2 文本AI生成识别服务
随着ChatGPT等生成式AI技术的快速发展,AI生成或改写的文本已深度渗透进教育、小说、传媒等场景。TMS的AI生成识别服务可以帮助企业鉴别一段文本是否为AI工具生成,返回AI生成的概率分数。这一能力在学术诚信检测、内容原创性验证等场景中具有重要价值。
2.3 文本金融大模型审校服务
当前主流的AI审核服务多基于互联网UGC场景构建,难以满足金融行业在内容形态与审核规则上的专业需求。金融大模型审校服务基于大模型技术,专为应对金融场景中的长文本语义理解与特有风险识别而设计,能够识别行业俚语、暗示内幕、夸大宣传等金融场景特有风险。
3. 对接前的准备工作
3.1 账号准备
对接TMS服务前,需要完成以下准备工作:
- 注册腾讯云账号并完成实名认证
- 确保账户余额大于0元
- 获取API密钥(SecretId和SecretKey)
API密钥的获取方式:登录腾讯云控制台,进入"访问管理" > "API密钥管理",创建或查看已有的密钥对。SecretKey请妥善保管,不要硬编码在代码中或提交到代码仓库,建议使用环境变量或密钥管理服务。
3.2 开通TMS服务
开通TMS服务的步骤非常简便:
- 登录内容安全控制台,单击"立即开通"。
- 在弹窗的审核服务管理页面,选择"文本内容安全服务",单击"确定"即完成开通。
- 新用户首次开通服务后,自动获得3000条文本的免费试用包(不含"文本AI生成识别"能力),自开通之日起15天内有效。
- 在内容安全控制台的左侧导航栏中,选择"名单管理" > "关键词名单" > "自定义名单"。
- 单击"新建词库",填写词库名称,选择识别结果(违规/疑似/放过)和匹配模式(精确匹配/模糊匹配),单击"确定"完成创建。
- 在新建词库后,单击"管理"进入词库管理页面,单击"添加关键词"为词库新增自定义关键词。
- 添加关键词时,可选择对应的机审标签、关键词类型,通过文本输入或文件上传两种方式添加。
- 在内容安全控制台的"应用管理"页面,单击"新建应用",输入应用名称和应用说明,单击"保存"完成应用创建。应用名称建议按业务线或应用来命名,如"社区论坛"、"直播间"、"AI问答"等。
- 新建应用后,单击"新建策略"来构建具体需要调用的安全策略。在一个应用中,可根据不同的场景配置多条策略。
- 在新建策略页面,选择"文本内容安全",根据业务输入Biztype(策略唯一标识)、Biztype名称、场景名称,单击"下一步"进入策略模板配置。Biztype仅支持数字、英文、下划线和短划线,最多32个字符。
- 在策略模板配置页面,根据具体业务选择对应的行业、业务类型、业务场景,单击"确定引用模板"保存,完成策略创建。例如,AI聊天室的个人简介审核,可选择系统推荐模板:"社交 - 语聊房 - 个人资料"。如未找到业务分类,请选择通用模板。
- 请求域名:tms.tencentcloudapi.com
- 请求协议:HTTPS(不支持HTTP)
- 文本长度限制:最长10,000个字符(以Unicode编码计量)
- 请求频率:内容安全默认1000次/秒,AI生成识别默认50次/秒
- 支持语言:中文、英文
- 分场景配置审核规则:利用BizType机制为不同场景设置不同阈值
- 优化自定义词库:用精确匹配替代模糊匹配,设置白名单,定期清理过于宽泛的关键词
- 善用三级判定:Review进入人工复审而非直接拦截
- 建立反馈闭环:用户申诉→人工复核→确认误判→更新词库/调整阈值→持续优化
- 按量后付费:价格为每万条文本25元,日结
- 套餐包(预付费):价格更优惠,最低10元/万条
试用包用尽或到期后,系统将自动切换为按量后付费模式,价格为每万条文本25元。你也可以购买套餐包来获取更优惠的价格。
4. 控制台配置:自定义词库与审核策略
4.1 配置自定义词库
自定义词库用于添加个性化的识别词库,帮助系统识别业务特定的违规内容。配置步骤如下:
精确匹配要求输入文本与关键词完全一致;模糊匹配则可检测变体后的输入词,支持拆分字、形似字、音似字、简繁体、大小写、大写数字等形式的相似词匹配。自定义词库中,红色代表违规,橙色代表疑似。
4.2 配置审核策略(BizType)
策略是业务下内容安全的规则集,包含风险识别模型和关键词库。配置策略后会获取一个BizType字段的值,该值为API接口的关键传参。配置步骤如下:
配置完成后,在调用API时通过BizType参数指定策略名称,该策略就会生效。
5. API接口详解
5.1 接口基本信息
TMS的核心接口是TextModeration,提供内容安全和AI生成识别服务。接口的基本信息如下:
5.2 请求参数
TextModeration接口的核心请求参数如下:
| 参数名称 | 必选 | 类型 | 描述 |
|---|---|---|---|
| Action | 是 | String | 公共参数,本接口取值:TextModeration |
| Version | 是 | String | 公共参数,本接口取值:2020-12-29 |
| Region | 是 | String | 公共参数,详见产品支持的地域列表 |
| Content | 是 | String | 待检测的文本内容,需为UTF-8编码并以Base64格式传入 |
| BizType | 否 | String | 接口使用的识别策略编号,需在控制台获取 |
| DataId | 否 | String | 为待检测文本分配的数据ID,便于标识和管理 |
| User | 否 | Object | 用户相关信息 |
5.3 返回结果
TextModeration接口的返回结果主要包含以下字段:
| 字段 | 说明 |
|---|---|
| Suggestion | 审核建议:Block(违规)/ Review(疑似)/ Pass(正常) |
| Label | 违规类型标签(色情、暴恐、违法等) |
| Score | 置信度评分 |
| DetailResults | 详细识别结果 |
| Keywords | 命中的关键词(如有) |
6. SDK集成与代码示例
腾讯云推荐使用SDK接入,因为SDK封装了签名过程,开发时只需关注产品提供的具体接口即可,接入流程较为便捷。腾讯云提供了API Explorer工具,可在线调用接口并快速生成SDK调用示例代码。
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
# 从环境变量获取密钥
import os
secret_id = os.environ.get("TENCENTCLOUD_SECRET_ID")
secret_key = os.environ.get("TENCENTCLOUD_SECRET_KEY")
cred = credential.Credential(secret_id, secret_key)
http_profile = HttpProfile()
http_profile.endpoint = "tms.tencentcloudapi.com"
client_profile = ClientProfile()
client_profile.httpProfile = http_profile
client = tms_client.TmsClient(cred, "ap-guangzhou", client_profile)
req = models.TextModerationRequest()
# 待审核文本需先进行Base64编码
text_content = "这是一段需要审核的文本内容"
encoded_content = base64.b64encode(text_content.encode("utf-8")).decode("utf-8")
req.Content = encoded_content
# 指定审核策略(可选,不填使用默认策略)
req.BizType = "YourBizType"
# 分配数据ID便于追踪
req.DataId = "msg_20260713_001"
resp = client.TextModeration(req)
print(json.dumps(resp.__dict__, ensure_ascii=False, indent=2))6.2 Java SDK
Maven依赖:
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>最新版本</version>
</dependency>调用示例:
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
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) {
String secretId = System.getenv("TENCENTCLOUD_SECRET_ID");
String secretKey = System.getenv("TENCENTCLOUD_SECRET_KEY");
Credential cred = new Credential(secretId, secretKey);
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("tms.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
TmsClient client = new TmsClient(cred, "ap-guangzhou", clientProfile);
TextModerationRequest req = new TextModerationRequest();
String textContent = "这是一段需要审核的文本内容";
String encodedContent = Base64.getEncoder().encodeToString(textContent.getBytes());
req.setContent(encodedContent);
req.setBizType("YourBizType");
req.setDataId("msg_20260713_001");
try {
TextModerationResponse resp = client.TextModeration(req);
System.out.println(TextModerationResponse.toJsonString(resp));
} catch (Exception e) {
e.printStackTrace();
}
}
}6.3 Go SDK
安装SDK:
go get github.com/tencentcloud/tencentcloud-sdk-go调用示例:
package main
import (
"encoding/base64"
"fmt"
"os"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
tms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tms/v20201229"
)
func main() {
secretId := os.Getenv("TENCENTCLOUD_SECRET_ID")
secretKey := os.Getenv("TENCENTCLOUD_SECRET_KEY")
credential := common.NewCredential(secretId, secretKey)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "tms.tencentcloudapi.com"
client, _ := tms.NewClient(credential, "ap-guangzhou", cpf)
request := tms.NewTextModerationRequest()
textContent := "这是一段需要审核的文本内容"
encodedContent := base64.StdEncoding.EncodeToString([]byte(textContent))
request.Content = &encodedContent
bizType := "YourBizType"
request.BizType = &bizType
dataId := "msg_20260713_001"
request.DataId = &dataId
response, err := client.TextModeration(request)
if err != nil {
fmt.Printf("调用失败: %s\n", err)
return
}
fmt.Printf("%s\n", response.ToJsonString())
}7. 自定义策略的进阶配置
7.1 多场景策略分离
不同业务场景对内容审核的要求各不相同——社区论坛需要宽松一点的谩骂阈值,金融平台对违规荐股零容忍,游戏平台需要重点拦截外挂广告。腾讯云TMS通过BizType机制实现策略分离:每个BizType对应一套独立的审核策略,调用API时通过BizType参数指定使用哪套策略。
建议按场景建立多套策略:
├── BizType_forum(社区论坛)
│ ├── 开启:色情、暴恐、违法、谩骂、广告
│ ├── 关联词库:社区专用词库
│ └── 谩骂阈值:适中
├── BizType_live(直播弹幕)
│ ├── 开启:全部类型
│ ├── 关联词库:直播专用词库
│ └── 所有阈值:严格
├── BizType_ecom(电商评价)
│ ├── 开启:色情、违法、广告
│ ├── 关联词库:电商专用词库
│ └── 广告阈值:极严
└── BizType_game(游戏聊天)
├── 开启:色情、谩骂、广告
├── 关联词库:游戏专用词库
└── 特殊:外挂广告关键词7.2 分级词库管理
建议按维度建立多个自定义词库,灵活组合:
├── 词库A:通用违规词(跨场景通用敏感词)
├── 词库B:行业特定词(特定行业术语)
├── 词库C:竞品关键词(竞品品牌和引流词)
├── 词库D:营销违规词(虚假宣传相关)
└── 词库E:时效性词库(热点事件相关临时词)每个词库可以独立关联到不同的策略中,实现灵活的规则组合。
8. 生产环境最佳实践
8.1 超时设置
建议将读取超时设置为30秒,避免网络波动导致的超时报错:
连接超时:5秒
读取超时:30秒8.2 错误重试
对于网络异常导致的调用失败,建议实现自动重试机制(最多重试3次)。重试时应使用指数退避策略,避免在服务端压力大时加剧问题。
8.3 三级审核结果的处理策略
腾讯云TMS返回Block/Review/Pass三级结果:
| 结果 | 建议处理方式 |
|---|---|
| Block | 自动拦截(高确信违规) |
| Review | 人工复审而非直接拦截 |
| Pass | 正常发布 |
关键优化点:不要把Review也当作Block处理。Review内容应该进入人工复审流程,而不是直接拦截。
8.4 异步审核
对于非实时场景,建议使用异步调用方式,提升系统吞吐量。异步审核通过提交审核任务后,再通过查询接口或回调方式获取审核结果。
8.5 误判率优化
内容审核的另一面是误判——正常内容被错误拦截,导致用户投诉甚至流失。以下是系统性的误判率优化方案:
9. 计费与成本优化
9.1 计费模式
腾讯云TMS提供两种计费模式:
新用户首次开通服务后,可获得3000条文本的免费试用包,自开通之日起15天内有效。
9.2 套餐包选择建议
不同规模的企业可根据业务量选择不同规格的套餐包:
| 套餐类型 | 规格 | 有效期 | 参考价格 |
|---|---|---|---|
| 入门包 | 180万条 | 1年 | 2000元(首单5折) |
| 基础包 | 720万条 | 1年 | 11,900元(8.5折) |
9.3 成本优化建议
对于中小企业,每天5000条用户内容,按量付费每月约375元,购买套餐包可进一步降低成本。建议根据实际业务量选择合适的套餐包,避免资源浪费。
10. 常见问题解答
问1:TMS支持检测哪些语言?
目前支持检测中文和英文两种语言,可以识别中文和英文文本中包含的色情、广告、垃圾等信息,同时支持自定义词库配置识别自定义的违规文本。
问2:TextModeration接口的文本长度限制是多少?
最长支持10,000个字符(以Unicode编码计量)。超过此限制的文本需要拆分后分批审核。
问3:如何获取BizType?
BizType需在内容安全控制台的"应用管理"中创建策略时生成。在新建策略页面输入Biztype名称后,系统会自动生成对应的策略编号。
问4:自定义词库创建后多久生效?
自定义词库创建并关联到策略后,即刻生效,无需等待。在调用API时通过BizType参数指定关联了该词库的策略即可使用。
问5:Review结果应该如何处理?
Review表示"疑似"违规,建议进入人工复审流程而非直接拦截。通过人工复审确认是否真正违规,既能保证审核准确性,又能减少误判对用户体验的伤害。
问6:TMS的请求频率限制是多少?
内容安全服务默认1000次/秒,AI生成识别服务默认50次/秒。如需更高频率,可联系腾讯云客服申请提升配额。




