帮助中心 返回首页
概览
帮助中心
返回首页

图像生成与编辑 API

本文按集成顺序说明如何调用 NextAI Code 的图片生成和图片编辑能力。

1. 选择协议

如果不确定选哪种,使用 OpenAI Images 兼容协议。它适合大多数应用,也可以直接复用 OpenAI SDK。

三种协议的使用场景:

  • OpenAI Images 兼容协议:统一调用 OpenAI、Gemini/Nano Banana、Imagen 图片模型。
  • Gemini 官方协议:已有 Gemini generateContent 代码时使用。
  • Imagen 官方协议:已有 Imagen predict 代码时使用。

所有请求都使用同一个 API Key:

Authorization: Bearer YOUR_API_KEY

API Key 可在 令牌管理页面 创建。不要把真实 Key 写进前端代码、截图、日志或代码仓库。

2. 查询模型

模型会持续更新,请以模型列表接口返回为准。

curl "https://www.nextai-code.com/v1/models" \
  -H "Authorization: Bearer YOUR_API_KEY"

常见模型族:

  • OpenAI 图片模型:gpt-image-1gpt-image-2chatgpt-image-latestdall-e-3
  • Gemini / Nano Banana:gemini-2.5-flash-imagegemini-3.1-flash-imagegemini-3-pro-image-previewnano-banana-2nano-banana-pro
  • Imagen:imagen-4.0-generate-001imagen-4.0-ultra-generate-001imagen-4.0-fast-generate-001

3. OpenAI 兼容调用

文生图请求:

curl -X POST "https://www.nextai-code.com/v1/images/generations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "A premium product photo of a handmade bath gift basket, soft natural light, clean background",
    "size": "1024x1024",
    "n": 1,
    "response_format": "b64_json"
  }'

改图请求:

curl -X POST "https://www.nextai-code.com/v1/images/edits" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model=gpt-image-2" \
  -F "image[]=@body-lotion.png" \
  -F "image[]=@bath-bomb.png" \
  -F "image[]=@incense-kit.png" \
  -F "image[]=@soap.png" \
  -F "prompt=Create a new product photo of a lovely gift basket containing these four items. Do not return a copy of any reference image." \
  -F "size=1024x1024" \
  -F "n=1" \
  -F "response_format=b64_json"

使用 multipart 时不要手写 Content-Type boundary。用 curl -F、SDK 或标准 multipart 库生成请求体。

Python SDK 示例:

from openai import OpenAI
import base64
from pathlib import Path

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://www.nextai-code.com/v1",
)

result = client.images.generate(
    model="gpt-image-2",
    prompt="A premium product photo of a handmade bath gift basket",
    size="1024x1024",
    n=1,
    response_format="b64_json",
)

Path("image.png").write_bytes(base64.b64decode(result.data[0].b64_json))

OpenAI 兼容响应:

{
  "created": 1734567890,
  "data": [
    {
      "b64_json": "BASE64_IMAGE_DATA",
      "url": "",
      "revised_prompt": ""
    }
  ]
}

如果请求 n > 1,请遍历 data[] 保存所有返回图片,不要只读取 data[0]

jq -r '.data[].b64_json' response.json | nl -v 1 | while read -r i img; do
  printf "%s" "$img" | base64 --decode > "image-$i.png"
done

4. Gemini 官方调用

文生图请求:

curl -X POST "https://www.nextai-code.com/v1beta/models/gemini-3.1-flash-image:generateContent" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {"text": "Generate a premium product photo of a handmade bath gift basket"}
        ]
      }
    ],
    "generationConfig": {
      "responseModalities": ["TEXT", "IMAGE"],
      "candidateCount": 1,
      "imageConfig": {
        "aspectRatio": "1:1",
        "imageSize": "1K"
      }
    }
  }'

改图请求:

IMAGE_BASE64="$(base64 < reference.png | tr -d '\n')"

curl -X POST "https://www.nextai-code.com/v1beta/models/gemini-3.1-flash-image:generateContent" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"contents\": [
      {
        \"role\": \"user\",
        \"parts\": [
          {
            \"inlineData\": {
              \"mimeType\": \"image/png\",
              \"data\": \"$IMAGE_BASE64\"
            }
          },
          {
            \"text\": \"Use this reference and create a new gift basket product photo\"
          }
        ]
      }
    ],
    \"generationConfig\": {
      \"responseModalities\": [\"TEXT\", \"IMAGE\"],
      \"candidateCount\": 1,
      \"imageConfig\": {
        \"aspectRatio\": \"1:1\",
        \"imageSize\": \"1K\"
      }
    }
  }"

返回图片在 candidates[].content.parts[] 中。找到包含 inlineData.data 的 part 后,将 base64 解码保存。

5. Imagen 官方调用

curl -X POST "https://www.nextai-code.com/v1beta/models/imagen-4.0-generate-001:predict" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instances": [
      {
        "prompt": "A premium product photo of a handmade bath gift basket"
      }
    ],
    "parameters": {
      "sampleCount": 1,
      "aspectRatio": "1:1",
      "personGeneration": "allow_adult"
    }
  }'

常用字段:

  • instances[].prompt:提示词。
  • parameters.sampleCount:输出图片数量,Google 官方常见范围为 1 到 4。
  • parameters.aspectRatio:宽高比,例如 1:13:44:39:1616:9
  • parameters.imageSize:图片尺寸语义,按具体模型支持情况使用。
  • parameters.personGeneration:人物生成策略,例如 allow_adult

6. 参数规则

image[]n 不一样。

  • image[] 是输入图数量,常用于上传多张参考图。
  • n 是输出图数量,控制返回的 data[] 数量。

例如上传 4 张商品图并传 n=2,含义是“用这 4 张图作为参考,输出 2 张结果图”。

size 按模型族理解。

  • OpenAI 图片模型建议使用 1024x10241536x10241024x1536
  • Gemini / Imagen 更偏向 1:116:99:163:22:34:33:4
  • Gemini / Imagen 可以接收常见像素格式,并转换为对应宽高比。

Gemini 走 OpenAI 兼容协议时,不要传这些 OpenAI 专属参数。

  • response_format=url
  • stream=true
  • partial_images
  • style
  • input_fidelity
  • mask
  • background=transparent
  • moderationauto
  • output_format=jpegoutput_format=webp
  • output_compression
  • watermark=false

把风格、背景、编辑要求写进 prompt,不要依赖 Gemini 不支持的 OpenAI 专属字段。

7. 常见问题

为什么返回 400:请求体格式错误,请检查 multipart/form-data?

这是请求体解析错误,通常还没有调用上游模型。请确认文件路径存在,多图字段使用 image[],并使用 curl -F 或标准 multipart 库生成请求体。不要手写 boundary,也不要在代理或中间件里读取 multipart body 后不复原。

为什么出现 multipart: NextPart: EOF?

通常是 multipart 请求体不完整,或请求体被重复读取。请检查客户端、代理、中间件是否提前消费了请求体。

为什么改图结果像参考图,没有重新生成?

image[] 只表示参考输入,不会自动保证重组生成。请在 prompt 中明确写出要生成一张新图,例如:Create a new product photo using these reference items. Do not return a copy of any reference image.

Gemini 返回没有图片怎么办?

检查 candidates[].content.parts[] 是否包含 inlineData。如果没有,可能是模型只返回文本,或被安全策略过滤。请降低敏感、版权、人物限制相关描述。

一次请求可以生成多张图片吗?

可以。OpenAI 兼容协议使用 n,Gemini 官方协议使用 generationConfig.candidateCount,Imagen 官方协议使用 parameters.sampleCount。最终数量以上游实际返回为准,客户端必须遍历返回数组。

官方参考