图片生成 (kling系列)
七牛云 AI 大模型推理 API 支持 Kling 系列模型的图像生成功能,包括文生图(Text-to-Image)和图生图(Image-to-Image),兼容 OpenAI Images API 接口格式,方便您集成到各种业务和应用场景中。
Kling 模型核心特点
- 异步接口: Kling 模型采用异步调用方式,提交任务后返回 task_id,需要轮询查询任务状态
- 多版本支持: 支持 v1、v1.5、v2、v2-new、v2.1 等多个版本
- 丰富比例: 支持多种宽高比例(16:9、9:16、1:1、4:3、3:4 等)
- 高级参考: 支持多种参考图片类型
- 角色特征参考: 保留角色整体特征(服装、姿态、身体特征),适合保持角色形象一致性
- 人物长相参考: 重点保留人物面部特征(五官、表情),要求图片仅含1张人脸
- 主体参考: 提供主体角色/物体的特征参考,支持2-4张图片综合生成
- 场景参考: 保留空间结构、环境氛围、光影关系等场景元素
- 风格参考: 提供艺术风格、绘画技法、色调、质感等视觉风格参考
- URL 返回格式: 接口返回的图片是 URL 而不是 Base64 编码,有效期为 7 天
- 多种功能:
- 文生图 (Text-to-Image): 根据文本描述生成图像
- 单图生图 (Single Image-to-Image): 基于单张参考图片进行编辑和改造
- 多图生图 (Multi Image-to-Image): 基于多张参考图片(2-4张)进行综合生成
- 负向提示词: 支持指定不希望出现的内容
- 参考强度控制: 支持调节参考图片的影响强度
接口说明
Token API 接入点
七牛云 AI 大模型推理 API 接入域名:
- 接入点:
https://api.qnaigc.com/v1 - 使用前提:获取 API KEY(API 密钥)
支持接口列表
| 接口名 | 说明 |
|---|---|
| /images/generations | 文生图/单图生图接口 • 文生图:根据文本描述生成图像 • 单图生图:基于单张参考图片和文本描述生成新的图像 返回格式:task_id(任务 ID) |
| /images/edits | 多图生图接口,基于多张参考图片(2-4张)和文本描述生成新的图像 返回格式:task_id(任务 ID) |
| /images/tasks/:task_id | 查询图像生成任务状态接口,根据任务 ID 查询生成进度和结果 |
支持的模型
| 模型 ID | 模型名称 | 说明 | 状态 |
|---|---|---|---|
| kling-v1 | Kling v1 | 文生图 V1.0 模型 | ✅ 已上线 |
| kling-v1-5 | Kling v1.5 | 文生图 V1.5 模型,支持角色特征参考和人物长相参考 | ✅ 已上线 |
| kling-v2 | Kling v2 | 文生图 V2.0 系列模型,支持图生图功能 | ✅ 已上线 |
| kling-v2-new | Kling v2-new | 文生图 V2.0 系列模型 | ✅ 已上线 |
| kling-v2-1 | Kling v2.1 | 文生图 V2.1 系列模型 | ✅ 已上线 |
请求参数说明
文生图/单图生图接口 (POST /images/generations)
接口说明: 创建文生图或单图生图任务,提交后会返回任务 ID(task_id),您需要使用查询接口轮询任务状态并获取生成的图像。
使用场景:
- 文生图:不传
image参数,仅使用prompt生成图像 - 单图生图:传入
image参数(单张参考图片),基于该图片和prompt生成新图像
Header 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | API Key,格式:Bearer YOUR_API_KEY |
| Content-Type | string | 是 | 请求内容类型,固定值:application/json |
Body 参数 (JSON)
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | - | 图像生成模型名称 详细说明: • 可选值: kling-v1、kling-v1-5、kling-v2、kling-v2-new、kling-v2-1• 不同版本支持的参数和功能可能有所不同 |
| prompt | string | 是 | - | 图像生成的文本描述提示词 详细说明: • 字符数限制:不超过 2500 个字符 • 建议:提示词越详细、具体,生成的图像质量越好 • 建议包含:风格、光线、构图、色彩等细节 • 使用逗号分隔不同的描述要素 • 示例: "一只橘色的猫,坐在窗台上,温暖的阳光,柔和的阴影,专业摄影,高清画质" |
| n | integer | 否 | 1 | 生成图像数量,取值范围:1-10 详细说明: • 控制一次请求生成的图像数量 • 注意:生成多张图片会消耗更多费用 |
| negative_prompt | string | 否 | - | 负向文本提示词 详细说明: • 用于指定不希望在生成图像中出现的内容 • 字符数限制:不超过 2500 个字符 • 注意:图生图场景下(image 字段不为空时)不支持负向提示词 |
| image | string | 否 | - | 参考图像(单图生图时使用) 详细说明: • 支持传入图片 Base64 编码或图片 URL(确保可访问) • 若使用 Base64 方式,请确保所有图像数据参数均采用 Base64 编码格式 • 提交 Base64 编码数据时,不要添加任何前缀(如 data:image/png;base64,),直接传递 Base64 编码字符串• 正确示例: iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==• 错误示例: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==• 图片格式支持:.jpg / .jpeg / .png • 图片文件大小不能超过 10MB • 图片宽高尺寸不小于 300px • 图片宽高比要在 1:2.5 ~ 2.5:1 之间 • 注意:进行单图生图时,此参数必填;仅文生图时不传此参数 • 对于 kling-v1-5 模型,当使用此参数时,image_reference 参数也必须同时传入 |
| image_reference | string | 否 | - | 图片参考类型 详细说明: • 枚举值: subject(角色特征参考)、face(人物长相参考)• 使用 face(人物长相参考)时,上传图片需仅含 1 张人脸• 仅 kling-v1-5 支持当前参数• 使用 kling-v1-5 且 image 参数不为空时,当前参数必填 |
| image_fidelity | float | 否 | 0.5 | 生成过程中对用户上传图片的参考强度 详细说明: • 取值范围:[0, 1] • 数值越大,参考强度越大 • 控制生成图像与参考图像的相似程度 |
| human_fidelity | float | 否 | 0.45 | 面部参考强度,即参考图中人物五官相似度 详细说明: • 仅 image_reference 参数为 subject 时生效• 取值范围:[0, 1] • 数值越大,参考强度越大 |
| aspect_ratio | string | 否 | 16:9 | 生成图片的画面纵横比(宽:高) 详细说明: • 枚举值: 16:9、9:16、1:1、4:3、3:4、3:2、2:3、21:9• 控制生成图像的宽高比例 |
响应体说明
创建文生图任务成功后,接口会立即返回任务 ID。图像尚未生成完成,需要通过查询接口获取最终结果。响应体包含以下字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| task_id | string | 图像生成任务唯一 ID,用于后续查询任务状态 |
响应示例:
{
"task_id": "chatimage-1762159125266058362-user123"
}
多图生图接口 (POST /images/edits)
接口说明: 创建多图生图任务,基于多张参考图像(2-4张)和文本描述生成新的图像。提交后会返回任务 ID(task_id),您需要使用查询接口轮询任务状态并获取生成的图像。
使用场景:
- 基于 2-4 张参考图片进行综合生成
- 支持使用
subject_image_list、scene_image、style_image等多种参考图片类型
Header 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | API Key,格式:Bearer YOUR_API_KEY |
| Content-Type | string | 是 | 请求内容类型,固定值:application/json |
Body 参数 (JSON)
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| model | string | 是 | - | 图像生成模型名称 详细说明: • 支持多图生图的模型: kling-v1、kling-v1-5、kling-v2、kling-v2-new、kling-v2-1 |
| image | string | 是 | - | 输入图像 URL 详细说明: • 注意:多图生图场景下此参数必填,但可以传空字符串,实际图像通过 subject_image_list 等参数指定• 如果直接提供图像 URL,必须是公开可访问的链接 |
| prompt | string | 是 | - | 图像编辑的文本描述提示词 详细说明: • 清晰描述期望的编辑效果 • 包含风格、色彩、构图等具体细节 • 字符数限制:不超过 2500 个字符 |
| n | integer | 否 | 1 | 生成图像数量,取值范围:1-10 详细说明: • 控制一次请求生成的图像数量 • 注意:生成多张图片会消耗更多费用 |
| subject_image_list | array | 否 | - | 多图生图的参考图片列表 详细说明: • 最多支持 4 张图片,最少支持 2 张图片 • 每个元素包含 subject_image 字段(图片 URL)• 图片格式支持:.jpg / .jpeg / .png • 图片文件大小不能超过 10MB • 图片宽高尺寸不小于 300px • 图片宽高比要在 1:2.5 ~ 2.5:1 之间 |
| scene_image | string | 否 | - | 场景参考图 URL 详细说明: • 内容为可公开访问的 URL 链接 • 图片格式支持:.jpg / .jpeg / .png • 图片文件大小不能超过 10MB • 图片宽高尺寸不小于 300px • 图片宽高比要在 1:2.5 ~ 2.5:1 之间 |
| style_image | string | 否 | - | 风格参考图 URL 详细说明: • 内容为可公开访问的 URL 链接 • 图片格式支持:.jpg / .jpeg / .png • 图片文件大小不能超过 10MB • 图片宽高尺寸不小于 300px • 图片宽高比要在 1:2.5 ~ 2.5:1 之间 |
| aspect_ratio | string | 否 | 16:9 | 生成图片的画面纵横比(宽:高) 详细说明: • 枚举值: 16:9、9:16、1:1、4:3、3:4、3:2、2:3、21:9• 控制生成图像的宽高比例 |
响应体说明
创建图生图任务成功后,接口会立即返回任务 ID。图像尚未生成完成,需要通过查询接口获取最终结果。响应格式与文生图接口相同:
| 字段名 | 类型 | 说明 |
|---|---|---|
| task_id | string | 图像生成任务唯一 ID,用于后续查询任务状态 |
响应示例:
{
"task_id": "chatimage-1762159125266058362-user123"
}
查询任务状态接口 (GET /images/tasks/:task_id)
接口说明: 根据任务 ID 查询图像生成状态和结果,建议定期轮询直到状态变为 succeed 或 failed。
Path 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| task_id | string | 是 | 图像生成任务 ID,创建任务时返回的 task_id 字段,例如:image-1762159125266058362-user123 |
Header 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| Authorization | string | 是 | API Key,格式:Bearer YOUR_API_KEY |
响应体说明
根据任务状态不同,返回的字段也有所不同。任务完成后会包含 data 字段,其中包含生成的图像下载链接。
| 字段名 | 类型 | 说明 |
|---|---|---|
| task_id | string | 图像生成任务的唯一标识符 |
| created | integer | 任务创建时间(Unix 时间戳,秒) |
| status | string | 任务的当前状态,见下方状态说明 |
| status_message | string | 描述当前状态的消息 |
| data | array | 包含生成图像信息的数组,仅在已完成时返回 |
| data[].index | integer | 图像在生成序列中的索引,从 0 开始 |
| data[].url | string | 访问生成图像文件的可直接访问 URL(注意:生成的图像会在 7 天后过期,请及时转存) |
| quantity | integer | 此任务中生成的图像数量,同时该数量会用于计费 |
任务状态说明
| 状态值 | 说明 |
|---|---|
| submitted | 任务已接收,等待处理 |
| processing | 任务正在处理中 |
| succeed | 任务成功完成,图像已生成并可访问 |
| failed | 任务在处理过程中失败 |
响应示例
处理中状态
{
"task_id": "chatimage-1762159125266058362-user123",
"created": 1761793032,
"status": "processing",
"status_message": "处理中"
}
成功完成状态
{
"task_id": "chatimage-1762159125266058362-user123",
"created": 1761793032,
"status": "succeed",
"status_message": "成功",
"data": [
{
"index": 0,
"url": "https://aitoken-image.qnaigc.com/user123/image-1761793032508597404-user123/0.png?e=1763089082&token=IDB69r4gicDbMfrecarthgw1btTTWEFNg9i5_yasXqhp:JapC2EihLvSADMficht3pZVn5Xc="
}
],
"quantity": 1
}
失败状态
{
"task_id": "chatimage-1762159125266058362-user123",
"created": 1761793032,
"status": "failed",
"status_message": "失败"
}
HTTP 调用示例
基础文生图
使用 Kling 模型生成图像:
# 调用 Kling 文生图 API
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "kling-v2",
"prompt": "一只可爱的橘猫坐在窗台上看着夕阳,照片风格,高清画质",
"aspect_ratio": "16:9"
}'
响应:
{
"task_id": "chatimage-1762159125266058362-user123"
}
使用负向提示词
使用负向提示词指定不希望出现的内容:
# 使用负向提示词
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "kling-v2",
"prompt": "一个美丽的花园",
"negative_prompt": "模糊,低质量,变形",
"aspect_ratio": "1:1"
}'
使用参考图片(kling-v1-5)
使用 kling-v1-5 模型的角色特征参考功能:
# 使用角色特征参考
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "kling-v1-5",
"prompt": "一个穿着西装的商务人士",
"image": "https://aitoken-public.qnaigc.com/example/generate-image/smile-woman.png",
"image_reference": "subject",
"image_fidelity": 0.7,
"human_fidelity": 0.6
}'
单图生图示例
使用单张参考图片进行图生图:
# 使用单张参考图片(单图生图)
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/generations" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "kling-v1",
"image": "https://aitoken-public.qnaigc.com/example/generate-video/running-man.jpg",
"prompt": "将这张图片转换为水彩画风格",
"aspect_ratio": "16:9"
}'
多图生图示例
使用多张参考图片(2-4张)进行图生图:
# 使用多张参考图片(多图生图)
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "kling-v2",
"image": "",
"prompt": "综合两个图像画一个漫画图",
"subject_image_list": [
{
"subject_image": "https://aitoken-public.qnaigc.com/example/generate-image/smile-woman.png"
},
{
"subject_image": "https://aitoken-public.qnaigc.com/example/generate-image/image-to-image-with-mask-1.jpg"
}
],
"aspect_ratio": "16:9"
}'
使用场景和风格参考
使用场景参考图和风格参考图进行图生图:
# 使用场景和风格参考
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
curl "$OPENAI_BASE_URL/images/edits" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "kling-v2",
"prompt": "一个梦幻般的森林场景",
"subject_image_list": [
{
"subject_image": "https://aitoken-public.qnaigc.com/example/generate-image/smile-woman.png"
},
{
"subject_image": "https://aitoken-public.qnaigc.com/example/generate-image/image-to-image-with-mask-1.jpg"
}
],
"scene_image": "https://aitoken-public.qnaigc.com/example/generate-image/image-to-image-with-mask-1.jpg",
"style_image": "https://aitoken-public.qnaigc.com/example/generate-image/smile-woman.png",
"aspect_ratio": "9:16"
}'
查询任务状态
查询图像生成任务的状态:
# 查询任务状态
export OPENAI_BASE_URL="https://api.qnaigc.com/v1"
export OPENAI_API_KEY="<七牛云 AI API KEY>"
export TASK_ID="chatimage-1762159125266058362-user123"
curl "$OPENAI_BASE_URL/images/tasks/$TASK_ID" \
-H "Authorization: Bearer $OPENAI_API_KEY"
响应示例(已提交):
{
"task_id": "chatimage-1766654340713562325-user123",
"created": 1766654340,
"status": "submitted",
"status_message": "已提交"
}
响应示例(处理中):
{
"task_id": "chatimage-1762159125266058362-user123",
"created": 1761793032,
"status": "processing",
"status_message": "处理中"
}
响应示例(已完成):
{
"task_id": "chatimage-1762159125266058362-user123",
"created": 1761793032,
"status": "succeed",
"status_message": "成功",
"data": [
{
"index": 0,
"url": "https://aitoken-image.qnaigc.com/user123/image-1761793032508597404-user123/0.png?e=1763089082&token=IDB69r4gicDbMfrecarthgw1btTTWEFNg9i5_yasXqhp:JapC2EihLvSADMficht3pZVn5Xc="
}
],
"quantity": 1
}
常见问题
Q: Kling 模型的文生图、单图生图和多图生图有什么区别?
A:
- 文生图 (
/images/generations,不传image参数):纯粹根据文本描述生成全新的图像 - 单图生图 (
/images/generations,传入单张image参数):基于单张参考图片进行编辑和改造 - 多图生图 (
/images/edits,传入 2-4 张subject_image_list):基于多张参考图片进行综合生成,可以保留多个图片的特征并结合
Q: 为什么 Kling 模型使用异步接口?
A: Kling 模型的图像生成过程需要较长时间,采用异步方式可以避免长时间等待导致的超时问题。您只需提交任务获得 task_id,然后定期轮询查询任务状态即可。
Q: 图像生成需要多长时间?
A: 图像生成时间取决于模型版本、图像复杂度和当前队列情况。通常情况下:
- 单张图像:1-3 分钟
- 多张图像:2-5 分钟
建议使用轮询方式查询任务状态,轮询间隔建议为 5-10 秒。
Q: 生成的图像会保存多久?
A: 生成的图像会在 7 天后过期,建议在图像生成后及时下载或转存到您自己的存储空间。
Q: 如何将生成的图像保存到七牛云对象存储?
A: 生成的图像已经自动保存在七牛云对象存储 (Kodo) 中,返回的 URL 即为 Kodo 存储地址,但有效期仅有 7 天。如需转存到您自己的存储空间,推荐使用七牛对象存储的【SDK 中心】进行操作。更多对象存储信息欢迎参考对象存储的【产品使用文档】。
Q: 如何提高图像生成质量?
A:
- 详细的提示词:描述越详细,生成效果越好
- 使用负向提示词:明确指定不希望出现的内容(如"模糊"、"低质量"等)
- 合理设置参考强度:调整
image_fidelity和human_fidelity参数 - 包含关键要素:风格、光线、构图、色彩等
Q: kling-v1-5 的 image_reference 参数有什么用?
A: image_reference 参数用于指定参考图片的使用方式:
- subject(角色特征参考):保留参考图中角色的整体特征(服装、姿态等),但可以调整面部相似度
- face(人物长相参考):重点保留参考图中人物的面部特征,要求参考图中只能有 1 张人脸
配合 image_fidelity 和 human_fidelity 参数可以精确控制参考程度。
Q: 多图生图支持哪些参考图片类型?
A: Kling 模型的多图生图功能 (/images/edits) 支持以下参考图片类型:
- subject_image_list:主体参考图片列表(最少 2 张,最多 4 张)
- scene_image:场景参考图
- style_image:风格参考图
可以单独使用或组合使用这些参考图片。
Q: 负向提示词在什么情况下不能使用?
A: 在图生图场景下(即 image 字段不为空时)不支持负向提示词。这是因为图生图已经有了明确的参考,负向提示词可能会产生冲突。
Q: 任务失败的常见原因?
A:
- 内容审核未通过:提示词或参考图片包含违规内容
- 参考图片无法访问:提供的图片 URL 无法访问或已过期
- 图片格式不符合要求:图片尺寸、大小或格式不满足要求
- 参数配置错误:必填参数缺失或参数值超出范围
Q: 如何优化轮询查询?
A:
- 轮询间隔:建议 5-10 秒查询一次,避免过于频繁
- 超时处理:建议设置超时时间(如 5 分钟),超时后停止轮询
- 状态判断:只需关注
succeed和failed两种终态,其他状态继续轮询