本文档介绍如何通过 腾讯云 EdgeOne Makers Model Pro 调用朱雀(Zhuque)AIGC 检测模型,对文本与图片进行 AI 生成内容识别,覆盖文本检测(zhuque-text)与图片检测(zhuque-image)两类能力,并支持同步与异步两种调用模式。文中接口路径、参数与响应均基于正式环境端到端联调结果。
概述
朱雀是腾讯面向 AIGC 内容检测的能力,可判断文本或图片是否由 AI 生成。通过 EdgeOne AI 网关统一接入后,您可以使用以下两类模型:
Provider 名称 | 能力 | 典型用途 |
zhuque-text | AIGC 文本检测 | 判断文本是否由 AI 生成,给出分段标签与占比。适用于 AI 内容审核、原创性检测等场景 |
zhuque-image | AIGC 图片检测 | 判断图片是否由 AI 生成,给出置信度。适用于 AI 图片内容审核、版权保护等场景 |
说明:
费用说明
操作步骤
步骤一:创建网关
1. 登录 EdgeOne 控制台,根据您是否已有 EdgeOne 资源,选择以下对应入口:
若您无任何 EdgeOne 资源:在控制台首页找到 一个入口,智能调度多模型 卡片,单击 创建项目 ,直接进入创建 AI 网关的流程。


若您已有 EdgeOne 资源:进入控制台后页面已定位至 Makers Model Pro,单击创建项目即可。


2. 创建完成后,记录系统分配的 网关域名 与 API Key。请妥善保存网关域名与 API Key,现不支持更换 API Key,遗失需重新创建网关。


步骤二:调用模型
同步调用与异步调用的区别
朱雀支持同步与异步两种调用模式,由请求 Header 决定,请根据业务场景选择:
维度 | 同步模式 | 异步模式 |
提交 Header | 无特殊 Header | Work-Mode: async |
查询 Header | 不需要 | Work-Infer-Action: query |
请求次数 | 1 次 | 1 次提交 + N 次查询 |
响应内容 | 直接返回业务结果 JSON | 外层返回 {TaskId, Status, Output},其中 Output 为字符串化 JSON,需客户端二次解析 |
客户端阻塞 | 整个推理时长全程阻塞 | 提交立即返回,查询可异步进行 |
典型耗时(参考) | 文本约 10s 内、图片约 5s 内 | 提交 < 1s;结果通常 1~5s 内就绪 |
选型建议 | 实时单请求、低并发、代码简洁优先 | 批量任务、长耗时、不希望客户端阻塞 |
调用方式与鉴权
网关访问信息
项目 | 值 |
网关域名 | <your-gateway-domain>(创建网关后获取) |
协议 | HTTPS |
文本检测路由 | /v1/providers/zhuque-text/classify |
图片检测路由 | /v1/providers/zhuque-image/classify |
鉴权方式
所有请求均需在 Header 中携带 API Key:
Header | 取值 | 说明 |
Authorization | Bearer <API_KEY> | 从 EdgeOne AI 网关获取的 API Key |
Content-Type | application/json | 请求体格式 |
说明:
调用
zhuque-image 时,图片需大于 300×300 像素,大小限制 10 MB,支持格式 jpg、png、webp。同步调用
同步模式为默认模式,单次请求即可返回结果,无需轮询。
文本检测(zhuque-text)
请求参数:
参数 | 位置 | 类型 | 必填 | 说明 |
text | Body | string | 是 | 待检测的文本内容 |
is_merge | Body | bool | 否 | 是否合并段落,默认为 true。设为 false 时,每个段落独立输出置信度 |
curl 示例:
curl -X POST "https://<your-gateway-domain>/v1/providers/zhuque-text/classify" \\-H "Authorization: Bearer <API_KEY>" \\-H "Content-Type: application/json" \\-d '{"text": "hello world","is_merge": true}'
响应示例:
{"status": "success","softmax_confidence": 0.9274,"ratio_confidence": 1.0,"labels_ratio": {"0": 0.0001, "1": 0.0001, "2": 0.9999},"segment_labels": [{"text": "hello world", "label": 2, "conf": 0.9274, "order": 1, "position": [0, 11]}],"msg": ""}
响应字段说明
字段 | 类型 | 说明 |
status | string | 推理状态, success 表示成功 |
labels_ratio | object | 各类型内容占比。 "0" 为人工(Human)内容占比,"1" 为 AI 内容占比,"2" 为疑似 AI 内容占比,取值均在 [0, 1] |
ratio_confidence | float | 整体疑似 AI 内容占比,越大越可能为 AI,越小越可能为人工 |
segment_labels | array | 各分段的类型标签及 AI 置信度 |
softmax_confidence | float | 整体 AI 置信度,越大越可能为 AI,越小越可能为人工 |
msg | string | 错误信息,正常时为空 |
图片检测(zhuque-image)
请求参数
参数 | 位置 | 类型 | 必填 | 说明 |
imageUrl | Body | string | 二选一 | 公网可访问的图片 URL |
imageBase64 | Body | string | 二选一 | 图片的 Base64 编码内容 |
curl 示例:
curl -X POST "https://<your-gateway-domain>/v1/providers/zhuque-image/classify" \\-H "Authorization: Bearer <API_KEY>" \\-H "Content-Type: application/json" \\-d '{"imageUrl": "https://example.com/path/to/image.jpg"}'
响应示例:
{"status": "success","data": {"confidence": 0.1484},"message": ""}
响应字段说明
字段 | 类型 | 说明 |
status | string | 推理状态, success 表示成功 |
data.confidence | number | 该图片为 AI 生成的置信度,取值范围 [0, 1],越接近 1 越可能为 AI 生成 |
message | string | 错误信息,正常时为空 |
Python 同步调用示例:
import jsonimport urllib.requestGATEWAY = "https://<your-gateway-domain>"API_KEY = "<API_KEY>"HEADERS = {"Authorization": f"Bearer {API_KEY}","Content-Type": "application/json",}def classify_sync(provider: str, payload: dict) -> dict:req = urllib.request.Request(f"{GATEWAY}/v1/providers/{provider}/classify",data=json.dumps(payload).encode("utf-8"),headers=HEADERS,method="POST",)with urllib.request.urlopen(req, timeout=30) as resp:return json.loads(resp.read().decode("utf-8"))if __name__ == "__main__":text_result = classify_sync("zhuque-text", {"text": "hello world"})print("text =>", json.dumps(text_result, ensure_ascii=False, indent=2))img_result = classify_sync("zhuque-image",{"imageUrl": "https://example.com/path/to/image.jpg"},)print("image =>", json.dumps(img_result, ensure_ascii=False, indent=2))
异步调用
异步模式适用于批量提交或长耗时任务,分为提交与查询两步。提交时需在请求中额外携带 Header
Work-Mode: async。提交任务
下面分别给出文本与图片的提交示例,两者仅请求路径中的 provider 与请求体字段不同,其余步骤一致。
curl 示例(文本):
curl -X POST "https://<your-gateway-domain>/v1/providers/zhuque-text/classify" \\-H "Authorization: Bearer <API_KEY>" \\-H "Work-Mode: async" \\-H "Content-Type: application/json" \\-d '{"text":"hello world"}'
curl 示例(图片):
curl -X POST "https://<your-gateway-domain>/v1/providers/zhuque-image/classify" \\-H "Authorization: Bearer <API_KEY>" \\-H "Work-Mode: async" \\-H "Content-Type: application/json" \\-d '{"imageUrl": "https://example.com/path/to/image.jpg"}'
响应示例:
{"TaskId": "s1-b9d37cd7-a778-4216-82c5-ea9f2c491c11"}
查询结果:
提交后使用返回的
TaskId 轮询结果,查询请求需携带 Header Work-Infer-Action: query。curl 示例:
curl -X GET "https://<your-gateway-domain>/v1/providers/zhuque-text/query/<TaskId>" \\-H "Authorization: Bearer <API_KEY>" \\-H "Work-Infer-Action: query"
响应示例:
{"TaskId": "s1-b9d37cd7-a778-4216-82c5-ea9f2c491c11","Status": "SUCCEEDED","Output": "{\\"labels_ratio\\":{\\"0\\":0.0001,\\"1\\":0.0001,\\"2\\":0.9999},\\"ratio_confidence\\":1,\\"segment_labels\\":[{\\"conf\\":0.9274,\\"label\\":2,\\"order\\":1,\\"position\\":[0,11],\\"text\\":\\"hello world\\"}],\\"softmax_confidence\\":0.9274,\\"status\\":\\"success\\"}"}
注意:
异步模式的结果包在外层
{TaskId, Status, Output},其中 Output 为字符串化的 JSON,需在客户端再做一次 JSON 解析(json.loads / JSON.parse)。同步模式则无此封装。任务状态(Status)字段:
Status | 含义 |
QUEUED / PROCESSING | 任务进行中,需继续轮询 |
SUCCEEDED | 任务成功, Output 字段为业务结果 |
FAILED | 任务失败,停止轮询并按错误处理 |
Python 异步调用示例:
import jsonimport timeimport urllib.requestGATEWAY = "https://<your-gateway-domain>"API_KEY = "<API_KEY>"AUTH = {"Authorization": f"Bearer {API_KEY}"}def classify_async(provider: str, payload: dict, poll_interval: float = 1.0) -> dict:submit_headers = {**AUTH, "Work-Mode": "async", "Content-Type": "application/json"}req = urllib.request.Request(f"{GATEWAY}/v1/providers/{provider}/classify",data=json.dumps(payload).encode("utf-8"),headers=submit_headers,method="POST",)with urllib.request.urlopen(req, timeout=15) as resp:task_id = json.loads(resp.read().decode("utf-8"))["TaskId"]query_headers = {**AUTH, "Work-Infer-Action": "query"}while True:req = urllib.request.Request(f"{GATEWAY}/v1/providers/{provider}/query/{task_id}",headers=query_headers,method="GET",)with urllib.request.urlopen(req, timeout=15) as resp:result = json.loads(resp.read().decode("utf-8"))status = result.get("Status")if status == "SUCCEEDED":result["Output"] = json.loads(result["Output"])return resultif status == "FAILED":raise RuntimeError(f"task failed: {result}")time.sleep(poll_interval)if __name__ == "__main__":print(json.dumps(classify_async("zhuque-text", {"text": "hello world"}), ensure_ascii=False, indent=2))
注意事项
异步轮询规范
提交后必须使用返回的
TaskId 调用 /query/<TaskId> 查询,且必须携带 Header Work-Infer-Action: query。轮询间隔建议 1s;避免低于 500ms 的高频轮询,以免对网关与上游造成压力。
同步模式超时与重试
同步模式在整个推理周期内会阻塞 HTTP 连接,请将客户端超时设置得足够大(建议 ≥ 30s)。
对于长文本或大图,若担心同步阻塞,建议改用异步模式以避免连接超时风险。
幂等性提示:失败重试可能产生重复推理,业务侧请自行去重或限流。
常见错误码
HTTP 状态码 | 错误信息 | 含义 | 排查建议 |
401 | invalid api key | API Key 错误或失效 | 核对 Authorization Header 中的 Key 是否正确 |
403 | provider_not_allowed | 该网关未授权此 Provider | 检查 provider 名称拼写(应为 zhuque-text 或 zhuque-image) |
404 | - | 路径或 TaskId 不存在 | 检查 URL 是否包含 /v1/providers/ 前缀;查询时 TaskId 是否正确 |
429 | - | 触发限流 | 降低并发或增加重试退避 |
5xx | - | 上游推理服务异常或超时 | 稍后重试;如持续异常请联系我们 |