图片生成
图片生成API用于根据给定的文本提示词同步生成图像。其业务逻辑为接收包含模型名称、文本提示词以及图片生成参数(如图像尺寸、随机数种子等)的请求,调用相应模型进行图片生成,并返回生成结果的URL以及相关状态和使用信息。
前提条件
已在“在线推理 > 预置服务”页面开通SDXL或Qwen_Image模型的商用服务,或者至少为其中一个模型创建了自定义接入点。具体操作,请参见在ModelArts Studio(MaaS)预置服务中开通商用服务和在ModelArts Studio(MaaS)预置服务中创建自定义接入点。
接口信息
名称 |
说明 |
取值 |
---|---|---|
API地址 |
调用图片生成的API地址。 |
https://api.modelarts-maas.com/v1/images/generations |
model参数 |
model参数调用名称。 |
您可以通过任选以下方式获取model参数值。
|
请求参数说明
- SDXL模型
表3 请求body参数(body体需要小于8M) 参数名称
参数类型
是否必填
默认值
说明
示例值
model
string
是
无
模型名称,具体请参见支持模型列表的“model参数值”列。
stable-diffusion-xl
prompt
string
是
无
文本提示词,用于引导模型生成图像。长度支持75 tokens以下(每个单词和标点都算一个token)。SDXL模型当前仅支持英文。
A cartoon-style cat that is skiing.
size
string
是
无
生成图像尺寸。用户可以自定义图像的尺寸,但是MaaS平台会对图像输出的尺寸进行调整,即用户输入的任意尺寸(如宽/高)会被除以8后向下取整,再乘以8得到最终输出的尺寸。
SDXL模型需要介于[512x512, 1024x1024]之间。推荐值如下:- 1024x1024
- 768x1024
- 1024x768
- 768x768
- 768x512
- 512x768
- 512x512
1024x1024
guidance_scale
float
否
2.5
生成自由度控制(数值越高越严格),取值范围为[1, 10],保留一位小数。
说明:仅SDXL模型支持该参数。
2.5
response_format
string
否
b64_json
返回格式,可取值为[url, b64_json],目前仅支持b64_json。
b64_json
seed
int
否
1
随机种子,取值范围为[0, 2147483648],默认值为1。
333
- Qwen-Image模型
表4 请求body参数(body体需要小于8M) 参数名称
参数类型
是否必填
默认值
说明
示例值
model
string
是
无
模型名称,具体请参见支持模型列表的“model参数值”列。
qwen-image
prompt
string
是
无
文本提示词,用于引导模型生成图像,支持中英文。长度支持2000 tokens以下(每个单词和标点都算一个token)。如果长度超过800,会自动截断为800 tokens。
A running cat
size
string
是
无
生成图像尺寸,需要介于[512x512, 2048x2048]之间,height和width需要被8整除,否则会向下兼容。推荐值如下:- 2048x2048
- 1536x1536
- 1024x1024
- 512x512
1024x1024
response_format
string
否
b64_json
返回格式,可取值为[url, b64_json],目前仅支持b64_json。
b64_json
seed
int
否
1
随机种子,取值范围为[0, 2147483648],默认值为1。
333
响应参数说明
状态码:200
参数 |
参数类型 |
说明 |
---|---|---|
model |
string |
本次请求使用的模型。 |
created |
int |
任务创建时间的Unix时间戳(毫秒)。 |
data |
list[dict] |
图像数据列表,格式为png,数据格式:[{"url": null, "b64_json": "Base64字符串"}]。 |
error |
error结构 |
已弃用,返回为空。 |
usage |
usage结构 |
结构内容为json结构体,KV值可自定义,例如: { "model_latency":6000, "prompt_tokens": 0, "completion_tokens": 1024, "total_tokens": 1024 } |
请求示例
- Rest API请求示例:
- Python示例:
import requests import json if __name__ == '__main__': url = "https://api.modelarts-maas.com/v1/images/generations" # API地址 api_key = "MAAS_API_KEY" # 把yourApiKey替换成已获取的API Key # Send request. headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}' } data = { "model": "stable-diffusion-xl", # model参数 "prompt": "A cartoon-style cat that is skiing.", # SDXL模型当前仅支持英文 "size": "1024x1024", "guidance_scale": 3 } response = requests.post(url, headers=headers, data=json.dumps(data), verify=False) # Print result. print(response.status_code) print(response.text)
- cURL示例:
curl -X POST https://api.modelarts-maas.com/v1/images/generations \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $MAAS_API_KEY" \ -d '{ "model": "stable-diffusion-xl", "prompt": "A cartoon-style cat that is skiing.", "size": "1024x1024", "guidance_scale": 3 }'
- Python示例:
- OpenAI SDK请求示例:
from openai import OpenAI base_url = "https://api.modelarts-maas.com/v1/" # API地址 api_key = "MAAS_API_KEY" # 把MAAS_API_KEY替换成已获取的API Key client = OpenAI(api_key=api_key, base_url=base_url) response = client.images.generate( model="stable-diffusion-xl", prompt="A cartoon-style cat that is skiing.", size="1024x1024", extra_body= { "guidance_scale": 3 } ) print(response.data[0].b64_json)
响应示例
{ "model": "stable-diffusion-xl", "created": 1753704897984, "data": [ { "url": null, "b64_json": "data:image/png;base64,xxxx" } ], "usage": { "model_latency": 2324, "prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0 }, "error": null }