边缘安全加速平台 EO 调用朱雀 AIGC 检测模型

这篇档介绍如何通过 腾讯云 EdgeOne Makers Model Pro 调用朱雀(Zhuque)AIGC 检测模型,对文本与图片进行 AI 生成内容识别,覆盖文本检测(zhuque-text)与图片检测(zhuque-image)两类能力,并支持同步与异步两种调用模式。文中接口路径、参数与响应均基于正式环境端到端联调结果。

相关产品
边缘安全加速平台 EO 产品页,含版本规格、价格与购买入口。

一、概述

朱雀是腾讯面向 AIGC 内容检测的能力,可判断文本或图片是否由 AI 生成。通过 EdgeOne AI 网关统一接入后,你可以使用以下两类模型:

Provider 名称 能力 典型用途
zhuque-text AIGC 文本检测 判断文本是否由 AI 生成,给出分段标签与占比。适用于 AI 内容审核、原创性检测等场景
zhuque-image AIGC 图片检测 判断图片是否由 AI 生成,给出置信度。适用于 AI 图片内容审核、版权保护等场景

注意:说明:

注意:该功能仅对企业版套餐开放。如需使用,请 联系我们 开通。

二、费用说明

调用朱雀模型会产生费用,计费单位为 EIU(Edge Inference Unit),具体单价、每次调用的 EIU 消耗与计费规则,详见 边缘推理用量单元计费说明。

费用将在你的腾讯云账号中产生,你可登录 腾讯云费用中心 查看账单与用量明细。

三、步骤一:创建网关

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 result if 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 – 上游推理服务异常或超时 稍后重试;如持续异常请联系我们
赞 (0)
上一篇 4天前
下一篇 4天前