You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何利用DeviantArt API检测Deviation是否包含“Created using AI tools”免责声明及替代接口咨询

如何通过DeviantArt API检测作品是否带有AI工具创作声明?

我最近在尝试用DeviantArt API判断某件作品(Deviation)是否带有「Created using AI tools」的免责声明。我已经写了Python代码完成授权,并且调用了deviation/metadata接口获取扩展元数据,但返回的响应里完全找不到这个AI声明的信息。

我的代码如下:

import requests
import os
# Authorize
url = "https://www.deviantart.com/oauth2/token";
params = {
    'grant_type': 'client_credentials',
    'client_id': os.environ['client_id'],
    'client_secret': os.environ['client_secret'],
}
response = requests.get(url, params=params)
access_token = response.json().get("access_token")
# Get deviation metadata
url = 'https://www.deviantart.com/api/v1/oauth2/deviation/metadata'
params = {
    'access_token': access_token,
    'deviationids': {'EBA58C48-2D63-D8D4-8FE1-214FDCD39A65'},
    'ext_submission': 'yes',
}
response = requests.get(url, params=params)
print(response.text)

返回的响应内容:

{"metadata":[{"deviationid":"EBA58C48-2D63-D8D4-8FE1-214FDCD39A65","printid":null,"author":{"userid":"EF857E1E-E23F-8F8C-E41A-BAD53080D05E","username":"lizschnabel","usericon":"https:\/\/a.deviantart.net\/avatars\/l\/i\/lizschnabel.jpg?4","type":"premium"},"is_watching":false,"title":"Recon Squad and old SSR Intruder Pods","description":"","license":"No License","allows_comments":true,"tags":[{"tag_name":"ai","sponsored":false,"sponsor":""},{"tag_name":"sciencefiction","sponsored":false,"sponsor":""},{"tag_name":"futurewarfare","sponsored":false,"sponsor":""}],"is_favourited":false,"is_mature":false,"submission":{"creation_time":"2023-11-25T08:07:44-0800","category":"","file_size":"5.6 MB","resolution":"3600x2152","submitted_with":{"app":"DeviantArt","url":"https:\/\/www.deviantart.com"}},"can_post_comment":false}]}

请问是否存在其他API接口可用于检测Deviation是否带有"Created using AI tools"免责声明?


解决方案:使用deviation/info接口并指定ext_ai_attribution参数

你当前用的deviation/metadata接口确实不包含AI创作声明的字段,得换成deviation/info接口,而且必须加上ext_ai_attribution: 'yes'这个参数才能拿到相关信息。

修改后的代码示例:

import requests
import os

# 授权流程保持不变
url = "https://www.deviantart.com/oauth2/token"
params = {
    'grant_type': 'client_credentials',
    'client_id': os.environ['client_id'],
    'client_secret': os.environ['client_secret'],
}
response = requests.get(url, params=params)
access_token = response.json().get("access_token")

# 替换为deviation/info接口
url = 'https://www.deviantart.com/api/v1/oauth2/deviation/info'
params = {
    'access_token': access_token,
    'deviationids': 'EBA58C48-2D63-D8D4-8FE1-214FDCD39A65',  # 这里改成字符串格式,原代码的集合可能导致参数解析异常
    'ext_ai_attribution': 'yes',  # 必须加这个参数才会返回AI声明数据
}
response = requests.get(url, params=params)
print(response.json())

关键说明:

  • 接口选择deviation/info是专门用来获取作品详细信息的接口,包含AI创作声明这类扩展元数据,而metadata接口只返回基础元数据。
  • 必填参数ext_ai_attribution: 'yes'是触发返回AI声明字段的开关,不加的话不会返回相关内容。
  • 参数格式deviationids需要传字符串格式的ID,原代码里用集合{'xxx'}可能会导致请求参数解析错误,建议改成字符串。

调用成功后,你会在返回的JSON响应里看到ai_attribution字段,结构大概是这样:

"ai_attribution": {
    "disclaimer": "Created using AI tools",
    "tools": [
        {"name": "MidJourney", "version": "v5.2"}
    ]
}

内容的提问来源于stack exchange,提问作者Stevoisiak

火山引擎 最新活动