535 次查看 |
2023年5月22日 11:19
如何使用 AIGCaaS API
如何使用 AIGCaaS API
AIGCaaS 是 AIGC 领域的 API 平台,如何使用 AIGCaaS 的 API 是核心关键点,本文将会从接口角度,分享使用 AIGCaaS API 的使用方法。
参数分类
在 AIGCaaS 平台,分为两种参数:
系统参数
所谓系统参数指的是和你使用具体的 API 无关的参数,主要用户进行系统鉴权使用,这部分参数主要包括:
参数名 | 类型 | 位置 | 解释 |
---|---|---|---|
Nonce | string | headers | 防重放配置 随机字符串(最大长度64位,推荐20位)且10秒内不可重复 |
Timestamp | string | headers | 发起请求时间戳 与服务器时间差小于10秒 |
SecretID | string | headers | 密钥信息 密钥配置中的 secret_id 配置 |
Token | string | headers | 签名结果 sha256(Timestamp, SecretKey, Nonce) |
Aigcaas-Async | string | headers | 【选填】是否以异步请求方式发起,异步请求相关内容可以参考异步请求文档 |
Aigcaas-Async-Callback | string | headers | 【选填】异步请求的回调地址/通知地址,异步请求相关内容可以参考考异步请求文档 |
关于参数说明:
- 请求级安全防护:
Nonce 参数是防重放配置,本质是随机字符串(最大长度64位,推荐20位,且10秒内不可重复;
Timestamp 参数是发起请求时间戳,与服务器时间差小于10秒;
Token 签名结果sha256(Timestamp, SecretKey, Nonce)
;
所以可以认为,在10秒内,每个用户的 Nonce 是唯一的,所以 Token 也是唯一的(出现重复的概率极低,可以趋近于无穷小),此时即便你的 API 请求被别人抓包所获取,他也没办法多次盗用请求,因为每个请求只能被服务器认可一次,如果:
- 10秒内重复请求,会因为 Nonce 参数重复而拒绝响应;
- 10秒外再发起重复请求,会因为 Timestamp 参数过期而拒绝响应;
- 账号信息安全防护:
SecretID 密钥信息,密钥配置中的 secret_id 配置;
Token 签名结果sha256(Timestamp, SecretKey, Nonce)
;
在服务端获取到的 SecretId与SecretKey两个信息,分别用于参数传输与参与签名,通过sha256
算法签名后的结果极难通过撞库等方法进行逆向,所以相对拉说也是进行账号信息防护;
综上所述,SecretID
与Token
组合是用于身份信息验证的使用;Nonce
与Timestamp
,Token
组合,是用户请求防盗使用;
API 参数
所谓的 API 参数,指的是具体的应用 API 所需要的参数信息,以“胶片质感扩散生成模型”为例:
参数名 | 类型 | 位置 | 解释 |
---|---|---|---|
text | string | body | 文本 绘画的文本描述(仅支持英文描述) |
width | integer | body | 图片宽度 需要为8的倍数,最大800 |
height | integer | body | 图片高度 需要为8的倍数,最大800 |
negative_prompt | string | body | 反面描述内容 反面描述内容 |
guidance_scale | number | body | CFG 控制图片与提示词的相关程度 |
seed | integer | body | 随机种子数 控制生成图片是否可复现 |
numinferencesteps | integer | body | 推理步数 推理过程给图想去噪音,数值越大效果越好,速度越慢,本平台限制(5,40) |
eta | number | body | 噪声种子 噪声种子(取值范围0.0-1.0) |
请求方法
AIGCaaS 平台所接入的 AIGC 应用 API,其地址格式为:
https://api.aigcaas.cn/v2/application/${应用名}/api/${接口名}
以胶片质感扩散生成模型为例,可以在产品页面和 API Explorer 页面查看到具体的 API 内容:
所有的 AIGC 应用 API 的请求方法均是 POST方法,所以,可以这样做总结:
请求地址:https://api.aigcaas.cn/v2/application/${应用名}/api/${接口名}
请求方法:POST
入参:
参数名 | 类型 | 位置 | 解释 |
---|---|---|---|
Nonce | string | headers | 防重放配置 随机字符串(最大长度64位,推荐20位)且10秒内不可重复 |
Timestamp | string | headers | 发起请求时间戳 与服务器时间差小于10秒 |
SecretID | string | headers | 密钥信息 密钥配置中的 secret_id 配置 |
Token | string | headers | 签名结果 sha256(Timestamp, SecretKey, Nonce) |
api 参数 | string | body | API 参数 |
以 Python 语言为例:
import time
import json
import hashlib
import random
import requests
# 签名对象
getSha256 = lambda content: hashlib.sha256(content.encode("utf-8")).hexdigest()
# 密钥信息获取与帮助文档:https://www.aigcaas.cn/article/16.html
secret_id = '<请替换为自己的密钥信息: SecretId>' # 密钥信息
secret_key = '<请替换为自己的密钥信息: SecretKey>' # 密钥信息
application_name = 'analog' # 应用名称
api_name = 'analog' # 接口名称
# 请求地址
url = "https://api.aigcaas.cn/v2/application/%s/api/%s" % (application_name, api_name)
# 构建请求头
nonce = str(random.randint(1, 10000))
timestamp = str(int(time.time()))
token = getSha256(("%s%s%s" % (timestamp, secret_key, nonce)))
headers = {
'SecretID': secret_id,
'Nonce': nonce,
'Token': token,
'Timestamp': timestamp,
'Content-Type': 'application/json'
}
# 构建请求 body
data = {
"text": ""
}
# 获取响应
response = requests.request("POST", url, headers=headers, data=json.dumps(data))
print(response.text)
关于异步调用,可以参考文档:https://www.aigcaas.cn/article/18.html
响应结果
在 AIGCaaS 平台中,平台级响应结果主要体现在 Response Header 中,API 的响应结果主要体现在 Response Body 中。
例如,某次失败的请求,响应结果:
Headers
X-Forwarded-For: 172.17.0.9
Host: api.aigcaas.cn
X-Nginx-Proxy: true
Connection: upgrade
Content-Length: 22
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Mobile: ?0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Secretid: x.temp.id.cibqLMAKuyKkUBABVPbDdpJlGbuqwNtZhnNTiyjHxuiDfPOHCz
Accept: application/json, text/plain, */*
Content-Type: application/json
Sec-Ch-Ua-Platform: "macOS"
Origin: https://www.aigcaas.cn
Sec-Fetch-Site: same-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.aigcaas.cn/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Aigcaas-Request-Id: 354ea732-6402-4614-a83b-81cbbd37f148
Aigcaas-Timestamp: 1684898592
Aigcaas-Backed-Status: False
其中,平台级结果为Aigcaas-XXXX
,例如:
Aigcaas-Request-Id: 354ea732-6402-4614-a83b-81cbbd37f148
Aigcaas-Timestamp: 1684898592
Aigcaas-Statue: False
对应的是请求 ID(用于错误追踪等)以及接收到请求的时间戳等。值得注意的是,Aigcaas-Statue
参数决定当前请求是否成功,如果为 True,表示成功,并进行计费,如果为 False 表示失败,不进行计费。
成功的定义:成功获取到了结果;
失败的定义:没有成功获得到结果,出现了错误信息;
特殊的情况:由于安全限制等原因,导致模型已经响应结果,但是被安全隔离,尽管没有获得到预期结果,但是也算是成功请求;
Body
{
"error": "APIError",
"message": "API Server Error, the system failed to obtain a correct return of the model.",
"help": "https://www.aigcaas.cn/article/35.html"
}
该响应结果,为最终的结果。通常情况下,包括两个层面:
- 平台级错误:主要有
status
,message
以及help
三个参数,用于表示状态,信息以及帮助文档; - 模型自定义响应结果:此处不做规约;
代码生成
您只需要在中间的列表中,输入对应的参数即可:
例如,我填写了文本参数,然后选择右边的在线调用选项,并点击发送请求:
此时可以看到右侧已经输出了对应的信息:
此时即完成了接口的体验,接下来点击案例代码:
通过选择对应的编程语言,即可获得到当前应用的对应测试案例,您只需要修改:
- 密钥信息:填写密钥信息(或许密钥信息方法见下文)
- 请求Body:根据需要对请求 Body 参数进行调整即可
温馨提示:
1. 本平台所提供 API 会产生相对应的金币消耗,这部分金币消耗是用于 API 调用时的 GPU 资源消耗,并非模型服务本身费用,模型均为开源模型,由第三方免费托管至本平台,如由第三方存在侵权行为等,请联系客服微信(B063-1206)进行处理;
2. 本平台在文章中可能会涉及到最佳实践,最佳案例以及相关带有"最"的描述,均指的是限定在本平台内,而非行业,不具有排他性;例如某文章如果说"这个实践操作可以算是最佳实践了"指的是仅限在当前平台内(AIGCaaS)中算是最佳实践,所以请各位在阅读时仔细辨别。另外,此处所说的"最佳"、"最"仅为举例,并不仅局限于这几个词,而是所有的类似词汇。
暂无评论
评论