对语言模型流式输出文字进行文本审核

文本审核增强版升级AIGC类文字检测能力,支持对模型流式输出文字进行自动拼接并审核。本文介绍文本审核服务的流式输出文字审核功能。

使用场景

大语言模型应用支持通过流式输出的方式尽快的将中间结果显示在用户界面上。以通义千问为例子,开发者可以通过参数控制流式输出模式,具体参考文档:API详情

当采用模型流式输出的方式时,通常需要开发者拼接文字片段后作为文本审核服务的输入内容,但这个方式存在明显的缺点:

  • 大语言模型容易生成较长内容的文字,拼接全部输出文字后,内容长度有可能超过文本审核的输入限制;

  • 采用流式输出的方式用户端会更快看到模型生成内容片段,待全部内容输出时潜在风险可能长时间暴露给用户。

因此阿里云文本审核增强版提供了对模型流式输出文字进行自动拼接并审核的功能。该功能既避免了由于内容过长导致文本审核输入限制,也显著降低潜在风险暴露给用户的时间。

功能特性

使用场景

支持的文本审核服务

特性说明

大语言模型生成文字场景:采用模型流式输出的模式,且开启了增量输出时,每次生成内容不包含已经输出的部分。

服务名称:大语言模型生成文字检测

service:llm_response_moderation

  • 通过指定输入参数 sessionId 来标记本次请求内容属于同一段流式内容,文本审核引擎会自动拼接后进行审核。

  • 大语言模型生成文字检测服务:会对本次请求输入的文字片段,和拼接前序文字片段后不超过5000字的部分,同时进行检测并返回标签,具体请参考面向大语言模型的文本审核PLUS服务

  • 使用该场景会对文本审核服务有更高的QPS要求和费用产生,请根据实际业务用量评估。具体参考 费用说明 部分。

AIGC类文字场景:采用模型流式输出的模式,且开启了增量输出时,每次生成内容不包含已经输出的部分。

服务名称:AIGC类文字检测service:ai_art_detection

  • 通过指定输入参数 sessionId 来标记本次请求内容属于同一段流式内容,文本审核引擎会自动拼接后进行审核。

  • AIGC类文字检测服务:会对本次请求输入的文字片段,和拼接前序文字片段后不超过2000字的部分,同时进行检测并返回标签,具体请参考 使用文本审核增强版识别文本违规风险

  • 使用该场景会对文本审核服务有更高的QPS要求和费用产生,请根据实际业务用量评估。具体参考 费用说明 部分。

费用说明

阿里云文本审核增强版默认的计费方式为按量后付费,即按照调用审核的文本次数计费,对使用流式输出文字的场景下调用审核的文本次数会显著增加。

因此我们建议采用机器审核QPS的预付费方式(最低 500QPS起),需要联系商务开通和购买

付费方式对比

以通义千问为例子,对比不同付费方式下,流式输出文字场景的模型服务费用和文本审核费用:

选择模型

模型使用说明

模型月度费用参考

qwen-turbo

  • 按照模型服务调用10 QPS,每次模型生成平均为1K tokens

  • 相当于每天生成文字为864,000K tokens

  • 模型官网计费单价为 0.008元/1K tokens

约 20.7 万元

审核付费方式

审核使用说明

审核月度费用参考

按量后付费

  • 每200 tokens审核一次,相当于每天审核次数为 432万次

  • 文本审核官网计费单价为 7.5元/万次

约 9.72 万元

按量后付费

  • 每500 tokens审核一次,相当于每天审核次数为 172.8万次

  • 文本审核官网计费单价为 7.5元/万次

约 3.88 万元

按QPS预付费

  • 每3-5 tokens审核一次,相当于审核服务并发要求 1000QPS

  • 文本审核QPS官网计费为 3,333 元 /每100QPS/月

约 3.33 万元

按QPS预付费

  • 每5-10 tokens审核一次,相当于审核服务并发要求 500QPS

  • 文本审核QPS官网计费为 3,333 元 /每100QPS/月

约 1.67 万元

按量后付费

当您开通文本审核增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。

审核类型

支持的业务场景(服务)

计费单价

文本审核高级(text_advanced)

大语言模型生成文字检测:llm_response_moderation

15元/万次

文本审核通用(text_standard)

AIGC文字检测:

ai_art_detection

7.5元/万次

资源包抵扣

如果您的审核量较大,或有相对固定的审核需求,建议预先购买资源包的方式。购买资源包规格越大,享受的折扣越大,支持叠加购买和使用。更多内容,请参见购买内容审核增强版抵扣资源包

该资源包用于内容审核增强版用量的抵扣,无法与内容安全流量包共享,具体的抵扣系数如下:

审核类型

支持的业务场景(服务)

抵扣系数

文本审核高级(text_advanced)

大语言模型生成文字检测:llm_response_moderation

抵扣系数为2,表示每成功调用一次接口,抵扣资源包的流量包容量规格2次。

例如购买的资源包的流量包容量规格为10次,当您成功调用1次接口,抵扣流量包容量规格2次,剩余8次。

文本审核通用(text_standard)

AIGC文字检测:

ai_art_detection

抵扣系数为1,表示每成功调用一次接口,抵扣资源包的流量包容量规格1次。

例如购买的资源包的流量包容量规格为10次,当您成功调用1次接口,抵扣流量包容量规格1次,剩余9次。

接入指南

步骤一:开通服务

访问开通服务,开通文本审核增强版服务。

开通文本增强版服务后,默认付费方式是按量后付费,且按照实际用量结算当日费用,不调用服务不收费。接口接入使用后系统会按使用量自动出账,具体信息,请参见计费说明您也可以购买按量抵扣资源包,资源包相较于后付费存在一定阶梯折扣,适合使用量级可预期和较大的用户。

步骤二:为RAM用户授权

在接入SDK或者API之前,您需要为RAM用户授权。您可以为阿里云账号和RAM用户创建一个访问密钥(AccessKey)。在调用阿里云API时您需要使用AccessKey完成身份验证。获取方式,请参见获取AccessKey

  1. 使用RAM管理员登录RAM控制台

  2. 创建RAM用户。

    具体操作,请参见创建RAM用户

  3. 向RAM用户授权系统策略权限:AliyunYundunGreenWebFullAccess

    具体操作,请参见为RAM用户授权

    完成以上配置后,您可以使用RAM用户调用内容安全API。

步骤三:安装并接入SDK

目前支持的接入地域如下,具体请参见文本审核增强版SDK及接入指南

地域

外网接入地址

内网接入地址

华东2(上海)

green-cip.cn-shanghai.aliyuncs.com

green-cip-vpc.cn-shanghai.aliyuncs.com

华北2(北京)

green-cip.cn-beijing.aliyuncs.com

green-cip-vpc.cn-beijing.aliyuncs.com

华东1(杭州)

green-cip.cn-hangzhou.aliyuncs.com

green-cip-vpc.cn-hangzhou.aliyuncs.com

华南1(深圳)

green-cip.cn-shenzhen.aliyuncs.com

green-cip-vpc.cn-shenzhen.aliyuncs.com

西南1(成都)

green-cip.cn-chengdu.aliyuncs.com

暂无

目前支持两种审核服务类型,分别是大语言模型生成文字检测(具体参考文本审核增强版PLUS服务API部分)和AIGC类文字检测(文本审核增强版通用服务API部分)

文本审核增强版PLUS服务API

使用说明

业务接口:https://green-cip.{region}.aliyuncs.com

您可以调用该接口创建文本内容检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见文本审核增强版SDK及接入指南

  • 计费信息:

    该接口为收费接口。仅对HTTP状态码为200的请求进行计量计费,产生其他错误码时不会计费。关于计费方式,请参见计费说明

QPS限制

本接口的单用户QPS默认限制为100次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。如采用机器审核QPS的预付费方式,可根据业务峰值扩容,请联系商务开通。

请求参数

名称

类型

是否必须

示例值

描述

Service

String

llm_response_moderation

审核服务类型。取值:

  • llm_response_moderation:大语言模型生成文字检测

ServiceParameters

JSONString

审核服务需要的参数集。JSON字符串格式,关于每个字符串的描述,请参见表ServiceParameters

表 1. ServiceParameters

名称

类型

是否必须

示例值

描述

content

String

检测内容

审核的文本内容,限定在600字以内。

sessionId

String

10123****

会话ID,标记本次请求内容属于同一段流式内容,文本审核引擎会自动拼接后进行审核,拼接文字片段后不超过 2000字的部分。

说明

使用 sessionId时不能够同时传入参数 accountId。

返回参数

名称

类型

示例值

描述

Code

Integer

200

状态码。更多信息,请参见Code说明

Data

JSONObject

{"Result":[...]}

审核结果数据,具体请参见Data

Message

String

OK

请求消息的响应消息。

RequestId

String

AAAAAA-BBBB-CCCCC-DDDD-EEEEEEEE****

请求ID。

表 2. Data

名称

类型

示例值

描述

Result

JSONArray

检测的风险标签、置信分等结果,具体请参见Result

Advice

JSONArray

[{"Answer":"这是标准回答"}]

调用检测服务llm_query_moderation时,如果输入指令检索并匹配特定知识库,则返回标准回答,具体请参见Advice

表 3. Result

名称

类型

示例值

描述

Label

String

political_xxx

文字内容检测运算后返回的标签,可能会检出多个标签和分值。支持的标签请参见风险标签部分。

Confidence

Float

81.22

置信分值,0到100分,保留到小数点后2位。部分标签无置信分。

Riskwords

String

AA,BB,CC

检测到的敏感词,多个词用逗号分隔,部分标签不会返回敏感词。

CustomizedHit

JSONArray

[{"LibName":"...","Keywords":"..."}]

当命中自定义库时,Label为customized,返回自定义库名称和自定义词,具体参见CustomizedHit

表 4. CustomizedHit

名称

类型

示例值

描述

LibName

String

自定义库1

自定义库名称。

Keywords

String

自定义词1,自定义词2

自定义词,多个词用逗号分隔。

表 5. Advice

名称

类型

示例值

描述

Answer

String

这是一条标准回答

在调用检测服务时,支持返回代答内容:

  • 检索匹配用户自定义拒答代答库:如命中风险标签并匹配到用户自定义拒答代答库,系统将随机选择一条用户自定义答案返回。

  • 检索匹配系统拒答代答库:如命中风险标签并匹配到系统拒答代答库,系统将随机选择一条默认答案返回。

HitLabel

String

political_xxx

在文字内容检测运算后返回的标签中,取较高风险的标签,支持的标签请参见风险标签

HitLibName

String

自定义代答库001

自定义配置代答库名称。

示例

请求示例

{
    "Service": "llm_response_moderation",
    "ServiceParameters": {
        "content": "流式输出内容",
        "sessionId": "10123****"
    }
}

正常返回示例

{
    "Code": 200,
    "Data": {
       "Advice": [
            {
                "HitLabel": "political_entity",
                "Answer": "这是一条标准回答返回的示例。",
                "HitLibName": "political_entity-001"
            } 
       "Result": [
            {
                "Label": "political_entity",
                "Confidence": 100.0,
                "RiskWords": "词A,词B,词C"
            },
            {
                "Label": "political_figure",
                "Confidence": 100.0,
                "RiskWords": "词A,词B,词C"
            }
        ]
    },
    "Message": "OK",
    "RequestId": "AAAAAA-BBBB-CCCCC-DDDD-EEEEEEEE****"
}

Code说明

Code

状态代码

说明

200

OK

请求成功。

400

BAD_REQUEST

请求有误。可能是请求参数不正确导致,请仔细检查请求参数。

408

PERMISSION_DENY

可能是您的账号未授权、账号欠费、账号未开通、账号被禁等。

500

GENERAL_ERROR

错误。可能是服务端临时出错。建议重试,若持续返回该错误码,请通过在线服务联系我们。

581

TIMEOUT

超时。建议重试,若持续返回该错误码,请通过在线服务联系我们。

588

EXCEED_QUOTA

请求频率超出配额。

文本审核增强版通用服务API

使用说明

业务接口:https://green-cip.{region}.aliyuncs.com

您可以调用该接口创建文本内容检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见文本审核增强版SDK及接入指南

  • 计费信息:

    该接口为收费接口。仅对HTTP状态码为200的请求进行计量计费,产生其他错误码时不会计费。关于计费方式,请参见计费说明

QPS限制

本接口的单用户QPS默认限制为100次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。如采用机器审核QPS的预付费方式,可根据业务峰值扩容,请联系商务开通。

请求参数

名称

类型

是否必须

示例值

描述

Service

String

ai_art_detection

审核服务类型。取值:

  • ai_art_detection:AIGC类文字检测

ServiceParameters

JSONString

审核服务需要的参数集。JSON字符串格式,关于每个字符串的描述见下表。

表 1. ServiceParameters

名称

类型

是否必须

示例值

描述

content

String

检测内容

审核的文本内容,限定在600字以内。

sessionId

String

10123****

会话ID,标记本次请求内容属于同一段流式内容,文本审核引擎会自动拼接后进行审核,拼接文字片段后不超过 2000字的部分。

说明

使用 sessionId时不能够同时传入参数 accountId。

返回参数

名称

类型

示例值

描述

Code

Integer

200

状态码。更多信息,请参见Code说明

Data

JSONObject

{"labels": "sexual_content","reason": "{\"riskTips\":\"色情_低俗词\",\"riskWords\":\"色情服务\"}"}

审核结果数据,具体信息请参见Data

Message

String

OK

请求消息的响应消息。

RequestId

String

AAAAAA-BBBB-CCCCC-DDDD-EEEEEEEE****

请求ID。

表 2.Data

名称

类型

示例值

描述

Labels

String

sexual_content

标签,多个用英文逗号分隔。包括:

  • ad:广告引流

  • political_content:涉政内容

  • profanity:辱骂内容

  • contraband:违禁内容

  • sexual_content:色情内容

  • violence:暴恐内容

  • nonsense:无意义内容

  • negative_content:不良内容

  • religion:宗教内容

  • cyberbullying:网络暴力

  • ad_compliance:广告法合规

  • C_customized:用户库命中

说明

标签会持续新增,建议业务对接过程对未知标签忽略处理。

Reason

String

{\"riskTips\":\"色情_低俗词\",\"riskWords\":\"色情服务\"}

原因定位的JSON字符串,包含以下字段:

  • riskTips:细分标签

  • riskWords:命中风险片段

  • customizedWords:命中用户词

  • customizedLibs:命中用户词库名

示例

请求示例

{
    "Service": "ai_art_detection",
    "ServiceParameters": {
        "content": "流式输出内容",
        "sessionId": "10123****"
    }
}

正常返回示例

{
    "Code": 200,
    "Data": {
        "labels": "sexual_content",
        "reason": "{\"riskTips\":\"色情_低俗词\",\"riskWords\":\"色情服务\"}"
    },
    "Message": "OK",
    "RequestId": "AAAAAA-BBBB-CCCCC-DDDD-EEEEEEEE****"
}

Code说明

Code

状态代码

说明

200

OK

请求成功。

400

BAD_REQUEST

请求有误。可能是请求参数不正确导致,请仔细检查请求参数。

407

NOT_SUPPORT

无法识别或不支持该语种类型。

408

PERMISSION_DENY

可能是您的账号未授权、账号欠费、账号未开通、账号被禁等。

500

GENERAL_ERROR

错误。可能是服务端临时出错。建议重试,若持续返回该错误码,请通过在线服务联系我们。

581

TIMEOUT

超时。建议重试,若持续返回该错误码,请通过在线服务联系我们。

588

EXCEED_QUOTA

请求频率超出配额。