Screen a Prompt
发送文本、图像或两者,并获取判定结果。
Get Moderation Usage
查看您的计费筛查次数和下一笔费用。
概览
Moderation API 会在您的 AI 产品根据用户输入生成内容之前,对用户输入进行筛查。您可以发送提示词文本、图像或两者,Dodo Payments 会返回allow、flag 或 deny 判定,以及每个内容类别的分数。
您可以将其用于任何接受用户输入的图像、视频或文本生成模型之前。默认情况下,Moderation API 对每个商户启用,并使用您现有的 Dodo Payments API 密钥,因此无需注册。Dodo Payments 可以针对单个商户将其关闭,此时调用会返回 403 和 MODERATION_DISABLED。
我们构建 Moderation API 的原因
AI 生成产品会根据用户输入的任何内容创建新内容。您不可能手动审核每条提示词,而一次有害的输出就可能让您的业务面临风险。 作为您的 Merchant of Record,Dodo Payments 对通过平台销售的内容承担法律和声誉责任。Merchant Acceptance Policy 会审核 AI 内容生成工具,不允许冒充、深度伪造或露骨内容,包括 AI 生成的内容。生成有害内容、导致大量拒付或被支付合作伙伴标记的账户,可能会被置于审核状态或暂停。 我们构建 Moderation API,帮助您在模型创建此类内容之前将其拦截:- 在生成之前进行筛查。 被拦截的提示词永远不会到达您的模型,因此不会产生有害输出,也不会为其消耗计算资源。
- 覆盖生成场景中重要的类别。 筛查会对 17 个类别评分,包括真人相似度、未经同意的私密图像、暗示未成年人的语言,以及真人与色情内容的组合(这会构成色情深度伪造)。
- 无需接入其他供应商。 API 使用您的 Dodo Payments API 密钥运行,费用从您的余额中扣除。无需单独签订合同、开具发票或创建账户。
- 保护用户内容隐私。 Dodo Payments 不会存储或记录您筛查的文本和图像。
Moderation API 是供您自行执行政策的工具。它不能替代 Merchant Acceptance Policy,您仍需对产品生成的内容负责。
工作原理
用户提交提示词后、模型运行前,从您的后端调用 Moderation API: 每次调用算作一次筛查。在同一次调用中发送的文本和图像算作一次筛查。判定结果
decision 字段包含判定结果:
筛查提示词
要筛查提示词,请向/moderation/screen 发送 POST 请求,并至少提供 text 或 image 之一。请求接受三个字段:
TypeScript 和 Python SDK 将该端点公开为
client.moderation.screen()。此示例会在 deny、flag 以及任何错误情况下拦截生成:
示例调用实时模式,因为只有实时模式会运行审核模型。测试模式返回模拟判定结果,不会筛查内容。实时模式的筛查会计费。
flag 与 deny 同样处理。如果您的产品允许某些被标记的内容,请检查 triggered,按类别作出决定。
筛查图像
发送图像以筛查用户上传的参考图像,或在展示生成的图像之前进行筛查。图像必须满足以下要求:- 格式为 JPEG、PNG、WebP、GIF 或 BMP。
- base64 字符串最多 6,991,530 个字符,解码后的图像最多 5 MiB。
- 图像必须是单个静态帧。动画 GIF 和 WebP 图像会被拒绝。
- 最长边至少为 32 像素。
400 和 MODERATION_INVALID_IMAGE;图像过大时会返回 413 和 MODERATION_INPUT_TOO_LARGE。
要筛查图像,请读取文件,将其编码为 base64,然后在 image 中发送。要同时筛查图像及其提示词,请在同一次调用中发送 text 和 image。这算作一次筛查。此示例使用上一个示例中的 client:
读取响应
响应会返回判定结果及其依据:
请基于
decision 和 triggered 编写逻辑。每个类别都有自己的阈值,因此在代码中使用单一分数阈值不会与判定结果匹配。
类别
每个响应都会根据 17 个类别对内容评分:处理错误
错误会返回标准的 Dodo Payments 错误正文,其中包含code 和 message。任何错误都不是判定结果,因此都不允许生成内容:
SDK 默认会对
429 或 503 重试两次,并在尝试之间等待 Retry-After。重试次数耗尽后,SDK 会抛出错误,您的代码必须拦截请求。
测试集成
测试模式会返回模拟判定结果,且不会调用审核模型,因此您可以免费测试路由逻辑。使用测试模式 API 密钥向https://test.dodopayments.com 发送请求。
默认模拟判定结果为 allow。要获取其他结果,请将以下字符串之一放在 text 的任意位置:
模拟判定结果会附带说明,表明该结果为模拟结果,且其所有类别分数均为
0。测试模式执行与实时模式相同的请求验证。对于图像,它会检查 base64 编码和格式,但不会检查帧数或尺寸。
上线前,请确认您的集成能够处理每种情况:
1
Deny Blocks Generation
发送
dodo_mock_deny,并确认不会调用您的模型。2
Flag Follows Your Policy
发送
dodo_mock_flag,并确认您的产品执行方式符合您的政策。3
Overload Retries
发送
dodo_mock_overloaded,并确认您的代码会等待 Retry-After,且在没有判定结果时不会生成内容。4
An Outage Blocks Generation
发送
dodo_mock_not_ready,并确认不会调用您的模型。5
Every Generation Path Screens
检查所有到达您模型的代码路径是否都会先调用 Moderation API。
定价和计费
Moderation API 的费用为每 1,000 次可计费筛查 0.30 美元。没有免费层级,也没有最低消费。 可计费筛查是返回判定结果的实时模式筛查。以下筛查免费且不计入费用:- 测试模式中的筛查。
- 返回错误的筛查,包括
429和503。
moderation_fees 显示在您的余额账本中。Payouts 会将其显示在 Moderation Fees 下。
跟踪用量
要查看用量,请调用GET /moderation/usage。响应会返回:
访问权限和隐私
筛查需要具有写入权限的 API 密钥。任何 API 密钥(包括只读密钥)都可以读取用量。请参阅身份验证,了解如何创建密钥并设置其访问级别。 Dodo Payments 不会存储您筛查的文本或图像,也不会将其写入日志。对于每次实时模式筛查,Dodo Payments 会保留时间、判定结果以及您提供的request_id,用于计费和用量报告。
Usage-Based Billing
向您自己的客户收取每次生成的费用。
Credit-Based Billing
销售生成额度,并按使用次数扣除。