APIMODELSAPIMODELS

提示词被内容安全拦截怎么办

TL;DR 一句话:这是模型方的内容安全系统拒绝了这次请求,你的 API Key、余额和参数都没问题,被拦的请求也不扣费。原样再发多半还会被拦——先从报错看被拦的是提示词、生成结果还是参考图,改那一处再发。

每个图片、视频模型背后都有模型方的内容安全检查,最多查三处:你写的提示词、你传的参考图或参考视频、模型生成出来的画面。任何一处没通过,任务就以 state 为 "failed"、failCode 为 "CONTENT_MODERATION" 结束,failMsg 会写明被拦的是哪一部分。

被拦的请求不扣费。建任务时冻结的额度会全部退回,你可以改完再试,失败的那一次不花钱。

在我们的错误码里,CONTENT_MODERATION 标为「不可重试」:同样的提示词、同样的图,再发几乎都会被拒。解决办法是改内容,或者换一个规则适合你这类内容的模型。

先看报错:被拦的是哪一部分

不同模型的措辞不一样,但都能归到下面几类。在 failMsg 里找第二列的说法即可。

被拦的是什么报错里的说法怎么办
提示词"Your prompt was blocked by the content safety policy"、"rejected by the upstream content safety system"、"triggered the sensitive-word filter"改写提示词,见下一节
生成结果:提示词过了,画面没过"The generated image was filtered by the safety policy"、"The generated images appear to be unsafe"、"the output image may contain sensitive information"每次生成的画面都不一样,偶尔重试一次能过;连续两次被过滤,就改提示词里要画面呈现的内容
参考图(或提示词)"Your prompt or reference image was blocked"、"the input image may contain sensitive information"、"change the image or prompt"先换一张图试
参考素材里有可识别的真人"a reference image or video appears to show a real, identifiable person"这个模型不收真人;换成插画或合成人脸,或者改用我们的 Seedance 2.0 / 2.0 Mini
任何看起来像未成年人的内容"may involve the depiction of minors"、"Prompts involving minors"所有模型都不支持,不要尝试绕过
裸露或色情内容"may involve nudity or sexual content"标准模型不允许;见下面「换个模型」一节

正常内容被误拦时,提示词怎么改

正常的商业或创作内容被拦,大多是几个词或几处细节触发的,不是创意本身有问题。用中性、具体的词描述画面里看得见的东西,画面用不上的细节都删掉。

删掉真实人名。提示词里出现明星、政治人物等公众人物,是最常见的触发原因之一;想要什么样子就直接描述外形,不要点名。自己不拥有的品牌名也一并去掉。

服装、产品图写清用途和衣物,不要写身体:「电商目录图,成年模特穿连体泳衣,全身、正面、纯白背景」和一段描写模特身材的文字,在审核眼里完全是两回事。

打斗、恐怖、战争场面,写动作、紧张感和氛围,不写伤口、血和受伤的细节。

参考图裁到真正要用的部分(产品、衣服、房间),画面里用不上的人去掉。

什么时候换个模型

每家模型方划的线不一样,同一条提示词,这个模型拒、那个模型可能就过了。常见的是下面两种情况。

参考照片或视频里有真人。有些图片、视频模型只要参考素材里有可识别的真人就会拒,重试也没用。我们的 Seedance 2.0 和 Seedance 2.0 Mini(模型名 seedance-2.0、seedance-2.0-mini)可以接收真人参考照片和视频。

内容合法、但超出严格模型接受范围的,比如泳装、人体艺术、风格化的打斗。名字带 Spicy 的模型审核更宽松:图片有 Seedream 5.0 Pro Spicy(画质和请求格式与 Seedream 5.0 Pro 相同)、Z-Image Spicy、Qwen Image Edit Spicy,图生视频有 Wan 2.7 / Wan 2.2 Spicy。它们仍然有模型自身的安全系统,涉及未成年人的内容在任何模型上都不接受。

在程序里怎么处理

按 failCode 判断,不要按报错文字判断,因为各模型的措辞不一样。failCode 为 "CONTENT_MODERATION" 时:不要自动重试同样的输入,把 failMsg 展示给你的用户,让他改提示词或换图。只对标为可重试的错误码自动重试,比如 UPSTREAM_BUSY 和 TIMEOUT。完整的错误码列表见 API 文档。

调用示例

cURL

# A blocked task, as returned when you poll it (video tasks: /v1/video/generations)
curl "https://api.apimodels.app/v1/images/generations?task_id=TASK_ID" \
  -H "Authorization: Bearer $APIMODELS_API_KEY"
# → { "code": 200, "data": { "taskId": "...", "state": "failed",
#       "failCode": "CONTENT_MODERATION",
#       "failMsg": "Your prompt was blocked by the content safety policy. Please adjust your prompt and try again." } }

Python

import os, requests

H = {"Authorization": f"Bearer {os.environ['APIMODELS_API_KEY']}"}
d = requests.get("https://api.apimodels.app/v1/images/generations",
                 headers=H, params={"task_id": task_id}).json()["data"]

if d["state"] == "failed":
    if d.get("failCode") == "CONTENT_MODERATION":
        # Not charged. The same input will be blocked again: ask the user to edit it.
        print("Blocked:", d["failMsg"])
    elif d.get("failCode") in ("UPSTREAM_BUSY", "TIMEOUT"):
        pass  # safe to retry the same request

常见问题

被内容安全拦截会扣费吗?

不扣。任务失败时,建任务时冻结的额度全部退回;不管被拦的是提示词、参考图还是生成结果,都一样。

为什么同一个提示词有时能过、有时被拦?

如果拦截发生在生成结果上,每次画出来的都不一样,所以这次能过、下次可能就不过。模型方也会不时调整审核规则。同一个提示词连续两次被过滤,就改写,不要再重试。

能关掉内容审核吗?

不能,审核是模型方服务的一部分。正常内容反复被严格的模型拒,可以试审核更宽松的模型,比如名字带 Spicy 的几款。涉及未成年人的内容在哪里都会被拒。

参考图是真人照片被拒了怎么办?

这个模型不收可识别的真人,同一张照片再发还是会失败。换成插画或合成人脸,或者把任务交给可以接收真人参考照片和视频的 Seedance 2.0、Seedance 2.0 Mini。

程序怎么区分是被审核拦了还是别的错误?

看 failCode。被审核拦下一律是 "CONTENT_MODERATION",并且标为不可重试;临时性问题用的是 UPSTREAM_BUSY、TIMEOUT 等其他错误码。

相关阅读

收录于
APIMODELS on Product HuntAPIMODELS featured on ToolifyAPIMODELS featured on There's An AI For That