Stable-Diffusion-XL
Stable-Diffusion-XL是业内知名的跨模态大模型,由StabilityAI研发并开源,有着业内领先的图像生成能力。本文介绍了相关API。
- 模型版本为stable-diffusion-xl-base-1.0
功能介绍
调用本接口,根据用户输入的文本生成图片。
注意事项
如果调用时出现请求超时情况,建议使用以下方式调用:
(1)如果未部署该服务,需要部署本模型为服务,再调用部署好的服务。发布服务流程可参考说明文档,详细计费可查看价格文档。
(2)如果已经部署过此服务,可在部署资源中进行复购。
在线调试
平台提供了 API在线调试平台-示例代码 ,用于帮助开发者调试接口,平台集成快速检索、查看开发文档、查看在线调用的请求内容和返回结果、复制和下载示例代码等功能,简单易用,更多内容请查看API在线调试介绍。
HTTP调用
鉴权说明
本文API,支持2种鉴权方式。不同鉴权方式,调用方式不同,使用Header、Query参数不同,详见本文请求说明。开发者可以选择以下任一种方式进行鉴权。
请求说明
- 基本信息
请求地址: https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/text2image/sd_xl
请求方式: POST
- Header参数
根据不同鉴权方式,查看对应Header参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
基于安全认证AK/SK进行签名计算鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Query参数
只有访问凭证access_token鉴权方式,需使用Query参数。
访问凭证access_token鉴权
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
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", "1024x1024", "1536x1536", "2048x2048"] · 适用文章配图 :["1024x768", "2048x1536"] · 适用海报传单:["768x1024", "1536x2048"] · 适用电脑壁纸:["1024x576", "2048x1152"] · 适用海报传单:["576x1024", "1152x2048"] |
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 |
seed | integer | 否 | 随机种子,说明: · 不设置时,自动生成随机数 · 取值范围 [0, 4294967295] |
cfg_scale | float | 否 | 提示词相关性,说明:默认值为5,取值范围0-30 |
style | string | 否 | 生成风格。说明: (1)可选值: · Base:基础风格 · 3D Model:3D模型 · Analog Film:模拟胶片 · Anime:动漫 · Cinematic:电影 · Comic Book:漫画 · Craft Clay:工艺黏土 · Digital Art:数字艺术 · Enhance:增强 · Fantasy Art:幻想艺术 · Isometric:等距风格 · Line Art:线条艺术 · Lowpoly:低多边形 · Neonpunk:霓虹朋克 · Origami:折纸 · Photographic:摄影 · Pixel Art:像素艺术 · Texture:纹理 (2)默认值为Base |
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,示例如下。
# 步骤一,获取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
}
}
SDK调用
平台支持通过Python SDK、Go SDK、Java SDK 和 Node.js SDK调用本文API,SDK调用说明文档请参考推理服务V1-图像Images文档。
错误码
如果请求错误,服务器返回的JSON文本包含以下参数。
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回以下内容,需要重新获取新的Access Token再次请求。
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
更多相关错误码,请查看错误码说明。