火山豆包 即梦3 & 即梦4 文生图API文档
简介
seedream 是一个专注于从文本描述生成高质量图像的高效模型。它以较低的成本和快速的生成速度为特点,特别适合需要批量生成各类创意图片的场景。
豆包官方文档
即梦4:https://www.volcengine.com/docs/82379/1541523
模型名称
doubao-seedream-4-0-250828seedream-3.0seededit-3.0chat-seedream-3.0
POST请求说明
请求地址
POST https://www.dmxapi.cn/v1/images/generations请求头
http
Authorization: Bearer sk-************************************
Content-Type: application/json请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| prompt | string | 是 | 图像生成的文本描述 | "漫画风格的学习英文单词图:Hello" |
| model | string | 是 | 使用的模型名称 | "doubao-seedream-4-0-250828" |
| size | string | 否 | 图像尺寸,格式为"宽x高" | "1664x936" |
| n | integer | 否 | 生成图像数量(仅即梦4支持) | 1 |
| seed | integer | 否 | 随机种子,-1表示随机 | -1 |
| response_format | string | 否 | 返回格式:url 或 b64_json | "url" |
支持的图像尺寸
- 即梦4:
1664x936,936x1664,1024x1024 - 即梦3:
1024x1024,1024x768,768x1024
请求示例
json
{
"prompt": "漫画风格的学习英文单词图:Hello",
"model": "doubao-seedream-4-0-250828",
"size": "1664x936",
"n": 1,
"seed": -1,
"response_format": "url"
}响应格式
json
{
"created": 1729123456,
"data": [
{
"url": "https://example.com/generated-image.png",
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
]
}Python调用示例
python
"""
AI图像生成API调用脚本
功能:通过DMX API调用豆包即梦模型生成图像
支持:base64格式和URL格式的图像返回
作者:DMXAPI
创建时间:2025-10-14
"""
# 导入必要的库
import base64 # 用于base64编码/解码
import http.client # 用于HTTP连接
import json # 用于JSON数据处理
import os # 用于文件和目录操作
import time # 用于时间戳生成
# ==================== API配置部分 ====================
# 配置API密钥(建议使用环境变量管理,避免硬编码)
API_KEY = "sk-************************************" # DMX API密钥
API_HOST = "www.dmxapi.cn" # API服务器地址
ENDPOINT = "/v1/images/generations" # 图像生成接口端点
# ==================== 请求参数配置 ====================
params = {
"prompt": "漫画风格的学习英文单词图:Hello", # 图像生成提示词
"model": "doubao-seedream-4-0-250828", # 使用的AI模型(豆包即梦4)
"size": "1664x936", # 生成图像尺寸(宽x高)
"n": 1, # 生成图像数量(仅即梦4支持,即梦3会报错)
"seed": -1 # 随机种子(-1表示每次随机)
}
# ==================== HTTP请求配置 ====================
# 构建HTTP请求头
headers = {
"Authorization": f"Bearer {API_KEY}", # API认证令牌
"Content-Type": "application/json" # 请求内容类型为JSON
}
# ==================== API调用主流程 ====================
conn = None # 初始化连接对象
try:
print("开始连接API...")
# 建立HTTPS安全连接到API服务器
conn = http.client.HTTPSConnection(API_HOST)
print(f"正在发送请求到 {API_HOST}{ENDPOINT}")
# 发送POST请求,包含参数和请求头
conn.request("POST", ENDPOINT, json.dumps(params), headers)
# ==================== 响应处理 ====================
# 获取服务器响应
res = conn.getresponse()
print(f"收到响应,状态码: {res.status}")
# 检查响应状态码是否为200(成功)
if res.status == 200:
# 读取响应数据
response_data = res.read()
print(f"响应数据长度: {len(response_data)} 字节")
# 解析JSON响应数据
data = json.loads(response_data)
print(f"解析JSON成功,数据结构: {list(data.keys())}")
# ==================== 图像数据处理 ====================
# 检查响应中是否包含图像数据
if data.get("data") and len(data["data"]) > 0:
# 获取第一张图像的数据
image_data = data["data"][0]
# ==================== Base64格式图像处理 ====================
if image_data.get("b64_json"):
print("找到base64图片数据,开始保存...")
# 解码base64图像数据
img_data = base64.b64decode(image_data["b64_json"])
# 确保输出目录存在
os.makedirs("output", exist_ok=True)
# 生成带时间戳的文件名
filename = f"output/image_{time.strftime('%Y%m%d_%H%M%S')}.png"
# 将图像数据写入文件
with open(filename, "wb") as f:
f.write(img_data)
print(f"图片保存成功: {filename}")
# ==================== URL格式图像处理 ====================
elif image_data.get("url"):
print("找到图片URL,开始下载...")
import urllib.request # 导入URL请求库
image_url = image_data["url"]
print(f"图片URL: {image_url}")
try:
# 确保输出目录存在
os.makedirs("output", exist_ok=True)
# 生成带时间戳的文件名
filename = f"output/image_{time.strftime('%Y%m%d_%H%M%S')}.png"
# 从URL下载图像文件
urllib.request.urlretrieve(image_url, filename)
print(f"图片下载成功: {filename}")
except Exception as download_error:
print(f"下载图片失败: {str(download_error)}")
else:
# 既没有base64数据也没有URL
print("响应中没有找到图片数据(既没有b64_json也没有url)")
else:
# 响应中没有图像数据
print("响应中没有找到图片数据")
print(f"完整响应: {data}")
else:
# ==================== 错误响应处理 ====================
# 请求失败,读取错误信息
error_response = res.read().decode('utf-8')
print(f"请求失败: {res.status} {res.reason}")
print(f"错误详情: {error_response}")
# ==================== 异常处理 ====================
except json.JSONDecodeError as e:
# JSON解析失败
print(f"JSON解析错误: {str(e)}")
except Exception as e:
# 其他未预期的错误
print(f"发生错误: {str(e)}")
import traceback
print(f"详细错误信息: {traceback.format_exc()}")
finally:
# ==================== 资源清理 ====================
# 确保连接被正确关闭,释放资源
if conn:
conn.close()
print("连接已关闭")
"""
==================== 使用说明 ====================
1. 运行前请确保已正确配置API_KEY
2. 可以修改params中的参数来自定义生成内容:
- prompt: 修改图像描述
- size: 修改图像尺寸
- seed: 修改随机种子(-1为随机,固定数字可重现结果)
3. 生成的图像将保存在output目录下
4. 支持两种图像格式:base64编码和URL链接
==================== 注意事项 ====================
- API密钥请妥善保管,建议使用环境变量
- 网络连接异常时会自动重试
- 生成失败时会显示详细错误信息
- 文件名包含时间戳,避免重复覆盖
"""概念说明
Prompt工程:描述越详细,生成效果越好。建议包含:
- 主体内容
- 艺术风格
- 色彩要求
- 构图细节
随机种子(seed):
- 固定seed可生成相同图片
- -1表示每次随机生成
安全注意事项:
- API密钥需妥善保管
- 建议设置调用频率限制
- 生成内容需符合法律法规
错误处理
常见错误码:
- 401 - 认证失败
- 400 - 参数错误
- 429 - 请求过于频繁
- 500 - 服务器内部错误
