Skip to content

火山豆包 即梦3 & 即梦4 文生图API文档

简介

seedream 是一个专注于从文本描述生成高质量图像的高效模型。它以较低的成本和快速的生成速度为特点,特别适合需要批量生成各类创意图片的场景。

豆包官方文档

即梦4:https://www.volcengine.com/docs/82379/1541523

模型名称

doubao-seedream-4-0-250828
seedream-3.0
seededit-3.0
chat-seedream-3.0

POST请求说明

请求地址

POST https://www.dmxapi.cn/v1/images/generations

请求头

http
Authorization: Bearer sk-************************************
Content-Type: application/json

请求参数

参数名类型必填说明示例值
promptstring图像生成的文本描述"漫画风格的学习英文单词图:Hello"
modelstring使用的模型名称"doubao-seedream-4-0-250828"
sizestring图像尺寸,格式为"宽x高""1664x936"
ninteger生成图像数量(仅即梦4支持)1
seedinteger随机种子,-1表示随机-1
response_formatstring返回格式: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密钥请妥善保管,建议使用环境变量
- 网络连接异常时会自动重试
- 生成失败时会显示详细错误信息
- 文件名包含时间戳,避免重复覆盖
"""

概念说明

  1. Prompt工程:描述越详细,生成效果越好。建议包含:

    • 主体内容
    • 艺术风格
    • 色彩要求
    • 构图细节
  2. 随机种子(seed)

    • 固定seed可生成相同图片
    • -1表示每次随机生成
  3. 安全注意事项

    • API密钥需妥善保管
    • 建议设置调用频率限制
    • 生成内容需符合法律法规

错误处理

常见错误码:

  • 401 - 认证失败
  • 400 - 参数错误
  • 429 - 请求过于频繁
  • 500 - 服务器内部错误

一个 Key 用全球大模型