您可以通过大模型应用防火墙 SDK 调用伪造内容检测能力,对图片和视频中的 AI 生成、深度伪造、拼接篡改等异常痕迹进行识别。本文以检测本地图片文件为例,介绍如何通过 SDK 完成深度伪造内容检测。
已参考SDK 安装和初始化完成 SDK 依赖安装和客户端初始化配置。
调用 SDK 前,请先确认素材格式和大小满足要求。
jpg、jpeg、png、webp。jpg、jpeg:data:image/jpeg;base64,png:data:image/png;base64,webp:data:image/webp;base64,mp4、avi。mp4:data:video/mp4;base64,avi:data:video/x-msvideo;base64,AppID,作为 scene 参数值。参考以下表格了解 SDK 中的关键参数说明及获取方法。
参数 | 示例值 | 说明 |
|---|---|---|
myUrl | https://cn-beijing.sdk.access.llm-shield.omini-shield.com | 大模型应用防火墙对外提供的接口服务地址,形如
|
ak、sk |
| 火山引擎账号的 Access Key ID 和 Secret Access Key。 获取说明请参见 Access Key(密钥)管理。 |
appid | app-d35p9du8pa51**** | 资产的唯一标识,完成控制台接入配置后,系统将自动生成 AppID。对应检测输入或输出内容是否合规中的 注意 SDK 调用时支持传入通过 SDK 方式接入的资产 AppID,其他接入方式的资产不生效。 |
region | cn-beijing | 资产所属地域,与 myUrl 中的 region 保持一致。
|
image_file | /Users/DeepFakeTest/image_001.png | 待检测对象的本地路径。 |
message.role | user | 内容来源。可选值包括 |
message.contenttype | IMAGE | 内容类型。在 SDK 中通常对应枚举值 |
from volcenginesdkllmshield import * import base64 # 加载图片内容并转换为Base64编码的函数 def load_image_content(image_file): with open(image_file, 'rb') as f: img_bytes = f.read() # 将二进制图片数据编码为Base64格式,并转换为UTF-8字符串 base64_bytes = base64.b64encode(img_bytes).decode('utf-8') return base64_bytes, len(base64_bytes) def main(): # 配置信息(请替换为实际值) myUrl = "https://cn-shanghai.sdk.access.llm-shield.omini-shield.com" #实例所在地域的服务接口地址 ak = "AKLT****" # Access Key,用于身份认证 sk = "TWpZ****" # Secret Key,用于身份认证 appid = "app-****" # 应用ID,标识要使用的审核应用 region = "cn-shanghai" # 实例所属地域 TIMEOUT = 50 # 超时时间(秒) image_file = "/Users/DeepFakeTest/image_001.png" # 待检测的图片文件路径 image_content, size = load_image_content(image_file) if size > 10*1024*1024: print(f"请求失败: {size/1024}KB") return try: # 发送请求并获取响应 client = ClientV2(myUrl, ak, sk, region, TIMEOUT) # 构建请求(使用 pydantic 模型) request = ModerateV2Request( scene=appid, message=MessageV2( role="user", # 检测的内容来源,user-用户提示词;assistant-模型响应内容 content=image_content, content_type=ContentTypeV2.IMAGE ), ) response = client.Moderate(request) # 使用 pydantic 的内置序列化方法 print("审核结果(JSON格式):") print(response.model_dump_json(by_alias=True, indent=2)) # pydantic 模型直接转 JSON except Exception as e: print(f"请求失败: {e}") if __name__ == "__main__": main()
以下响应结果以图片识别为例。
{ "ResponseMetadata": { "RequestId": "02177937369911100000000000000000000ffff0a1614e5e1****", "Service": "llmshield", "Action": "Moderate", "Version": "2025-08-31", "Region": "cn-shanghai" }, "Result": { "MsgID": "b298424d3aea4e3db10169b6ebac****", "RiskInfo": { "Risks": [ { "Category": "109", "Label": "10900000", "Prob": 1.0, "Matches": [] } ] }, "Decision": { "DecisionType": 2, "DecisionDetail": { "BlockDetail": {}, "ReplaceDetail": { "Replacement": null } }, "DecisionStrategyID": null, "HitStrategyIDs": [ "rule-d87gnhdtmscn1mp2****", "rule-d87gnhdtmscn1mp2****" ] }, "PermitInfo": { "Permits": [] }, "ContentInfo": "png", "Degraded": false, "DegradeReason": "" } }
调用完成后,通过响应结果判断送检内容是否为伪造内容。关注响应结果中的以下字段即可:
参数 | 示例值 | 说明 |
|---|---|---|
RiskInfo.Risks.Category | 109 | 风险一级分类,109 表示命中了深度伪造风险。 |
RiskInfo.Risks.Label | 10900000 | 命中的二级检测分类标签信息,10900000 表示命中了深度伪造风险对应的标签。 |
RiskInfo.Risks.Prob | 1.0 | 风险概率,表示检测内容属于该风险的可能性,取值范围为 0 到 1 之间。 |
Decision.DecisionType | 2 | 命中的策略动作,表示对该命中内容的处理动作:
|
Decision.HitStrategyIDs | rule-d87gnhdtmscn1mp2**** | 命中策略 ID 列表,表示内容命中的所有策略。深度伪造检测场景内置检测策略(为固定 ID),其他自定义策略不会生效。 |
ContentInfo | png | 风险内容的格式。
|
检测完成后,您还可以在控制台查看对应的深度伪造日志,便于后续审计和排查。