Stable-Diffusion-XL
更新时间:2023-11-07
Stable-Diffusion-XL是业内知名的跨模态大模型,由StabilityAI研发并开源,有着业内领先的图像生成能力。本文介绍了相关API。
文生图
调用本接口,根据用户输入的文本生成图片。
请求说明
基本信息
请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/text2image/sd_xl
请求方式: POST
Header参数
名称 | 值 |
---|---|
Content-Type | application/json |
Query参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
access_token | string | 是 | 通过API Key和Secret Key获取的access_token,参考Access Token获取 |
Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
prompt | string | 是 | 提示词,即用户希望图片包含的元素。长度限制为1024字符,建议中文或者英文单词总数量不超过150个 |
negative_prompt | string | 否 | 反向提示词,即用户希望图片不包含的元素。长度限制为1024字符,建议中文或者英文单词总数量不超过150个 |
size | string | 否 | 生成图片长宽,默认值 1024x1024,取值范围如下: ["768x768", "768x1024", "1024x768", "576x1024", "1024x576", "1024x1024"] |
n | integer | 否 | 生成图片数量,说明: · 默认值为1 · 取值范围为1-4 · 单次生成的图片较多及请求较频繁可能导致请求超时 |
steps | integer | 否 | 迭代轮次,说明: · 默认值为20 · 取值范围为10-50 |
sampler_index | string | 否 | 采样方式,默认值:Euler a,可选值如下: · Euler · Euler a · DPM++ 2M · DPM++ 2M Karras · LMS Karras · DPM++ SDE · DPM++ SDE Karras · DPM2 a Karras · Heun · DPM++ 2M SDE · DPM++ 2M SDE Karras · DPM2 · DPM2 Karras · DPM2 a · LMS |
user_id | string | 否 | 表示最终用户的唯一标识符,可以监视和检测滥用行为,防止接口恶意调用 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
id | string | 请求的id |
object | string | 回包类型。image:图像生成返回 |
created | int | 时间戳 |
data | list(image_data) | 生成图片结果 |
usage | usage | token统计信息,token数 = 汉字数+单词数*1.3 (仅为估算逻辑) |
image_data说明
名称 | 类型 | 描述 |
---|---|---|
object | string | 固定值"image" |
b64_image | string | 图片base64编码内容 |
index | int | 序号 |
usage说明
名称 | 类型 | 描述 |
---|---|---|
prompt_tokens | int | 问题tokens数,包含提示词和负向提示词 |
total_tokens | int | tokens总数 |
示例
请求示例
# 步骤一,获取access_token,替换下列示例中的应用API Key与应用Secret Key
curl 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]'
# 步骤二,调用本文API,使用步骤一获取的access_token,替换下列示例中的“调用接口获取的access_token”
curl -X POST 'https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/text2image/sd_xl?access_token=[步骤一调用接口获取的access_token]' -d '{
"prompt": "cat",
"negative_prompt": "white",
"size": "1024x1024",
"steps": 20,
"n": 2,
"sampler_index": "DPM++ SDE Karras"
}' | iconv -f utf-8 -t utf-8
import requests
import json
def get_access_token():
"""
使用 API Key,Secret Key 获取access_token,替换下列示例中的应用API Key、应用Secret Key
"""
url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[应用API Key]&client_secret=[应用Secret Key]"
payload = json.dumps("")
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
return response.json().get("access_token")
def main():
url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/text2image/sd_xl?access_token=" + get_access_token()
payload = json.dumps({
"prompt": "cat",
"negative_prompt": "white",
"size": "1024x1024",
"steps": 20,
"n": 2,
"sampler_index": "DPM++ SDE Karras"
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == '__main__':
main()
响应示例
{
"id": "as-n1ykfe10iz",
"object": "image",
"created": 1698146755,
"data": [
{
"object": "image",
"b64_image": "图片base64",
"index": 1
},
{
"object": "image",
"b64_image": "图片base64",
"index": 2
}
],
"usage": {
"prompt_tokens": 8,
"total_tokens": 8
}
}
错误码
如果请求错误,服务器返回的JSON文本包含以下参数。
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求。
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
千帆大模型平台相关错误码,请查看错误码说明。