# OpenAI 生图调用文档（gpt-image-2）

众合 AI 支持通过 OpenAI 兼容接口调用 **gpt-image-2** 模型生成和编辑图片（基于 DALL·E 3）。

---

## 一、准备工作

### 1. 创建 API Key

1. 访问 [众合 AI 控制台](https://lenovo-ai.cn/dashboard/keys)
2. 点击「创建 Key」
3. **分组选择**：`gpt-image-2`（或包含 gpt-image-2 账号的分组）
4. 复制生成的 `sk-` 开头的 API Key

### 2. 支持的模型

- `gpt-image-2` — 基于 DALL·E 3 的高质量生图模型

---

## 二、生成图片（/v1/images/generations）

### 端点格式

```
POST https://lenovo-ai.cn/v1/images/generations
```

这是 **OpenAI 兼容格式**，可直接使用 OpenAI SDK。

---

## 三、curl 示例

### 基础调用

```bash
curl https://lenovo-ai.cn/v1/images/generations \
  -H "Authorization: Bearer sk-你的key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "一只在月球上看星空的猫",
    "size": "1024x1024",
    "n": 1
  }'
```

### 请求参数

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `model` | string | 是 | 固定为 `gpt-image-2` |
| `prompt` | string | 是 | 图片描述（支持中英文） |
| `size` | string | 否 | 图片尺寸，可选：`1024x1024`、`1024x1792`、`1792x1024`（默认 `1024x1024`） |
| `n` | integer | 否 | 生成图片数量（1-10，默认 1） |
| `response_format` | string | 否 | 返回格式：`url`（默认）或 `b64_json` |

### 响应格式

```json
{
  "created": 1719360000,
  "data": [
    {
      "url": "https://oaidalleapiprodscus.blob.core.windows.net/...",
      "revised_prompt": "An orange cat sitting on the moon..."
    }
  ]
}
```

如果 `response_format` 设为 `b64_json`，返回：

```json
{
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAAANSUhEUgAA...",
      "revised_prompt": "..."
    }
  ]
}
```

---

## 四、Python 示例

### 使用 OpenAI SDK（推荐）

```python
from openai import OpenAI

client = OpenAI(
    api_key="sk-你的key",
    base_url="https://lenovo-ai.cn/v1"
)

result = client.images.generate(
    model="gpt-image-2",
    prompt="一只在月球上看星空的猫",
    size="1024x1024",
    n=1
)

print(result.data[0].url)  # 图片 URL

# 或获取 base64
result_b64 = client.images.generate(
    model="gpt-image-2",
    prompt="一只在月球上看星空的猫",
    size="1024x1024",
    n=1,
    response_format="b64_json"
)
print(result_b64.data[0].b64_json)
```

### 使用 requests（纯 HTTP）

```python
import requests

url = "https://lenovo-ai.cn/v1/images/generations"
headers = {
    "Authorization": "Bearer sk-你的key",
    "Content-Type": "application/json"
}
body = {
    "model": "gpt-image-2",
    "prompt": "一只在月球上看星空的猫",
    "size": "1024x1024",
    "n": 1
}

response = requests.post(url, headers=headers, json=body)
response.raise_for_status()

data = response.json()
image_url = data["data"][0]["url"]
print(f"图片已生成: {image_url}")
```

---

## 五、Node.js 示例

### 使用 OpenAI SDK

```javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "sk-你的key",
  baseURL: "https://lenovo-ai.cn/v1"
});

const result = await client.images.generate({
  model: "gpt-image-2",
  prompt: "一只在月球上看星空的猫",
  size: "1024x1024",
  n: 1
});

console.log(result.data[0].url);
```

### 使用 fetch（纯 HTTP）

```javascript
const response = await fetch("https://lenovo-ai.cn/v1/images/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk-你的key",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "gpt-image-2",
    prompt: "一只在月球上看星空的猫",
    size: "1024x1024",
    n: 1
  })
});

const data = await response.json();
console.log(data.data[0].url);
```

---

## 六、编辑图片（/v1/images/edits）

### 端点格式

```
POST https://lenovo-ai.cn/v1/images/edits
```

支持上传原图和蒙版，对图片局部进行编辑。

### curl 示例

```bash
curl https://lenovo-ai.cn/v1/images/edits \
  -H "Authorization: Bearer sk-你的key" \
  -F image=@原图.png \
  -F mask=@蒙版.png \
  -F prompt="把猫换成狗" \
  -F model="gpt-image-2" \
  -F size="1024x1024"
```

### 请求参数

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `image` | file | 是 | 原始图片（PNG，透明区域会被编辑） |
| `mask` | file | 否 | 蒙版图片（PNG，白色区域会被编辑） |
| `prompt` | string | 是 | 编辑描述 |
| `model` | string | 是 | 固定为 `gpt-image-2` |
| `size` | string | 否 | 输出尺寸（同生成接口） |
| `n` | integer | 否 | 生成变体数量 |

### Python 示例

```python
from openai import OpenAI

client = OpenAI(
    api_key="sk-你的key",
    base_url="https://lenovo-ai.cn/v1"
)

with open("original.png", "rb") as image_file, open("mask.png", "rb") as mask_file:
    result = client.images.edit(
        model="gpt-image-2",
        image=image_file,
        mask=mask_file,
        prompt="把猫换成狗，保持背景不变",
        size="1024x1024",
        n=1
    )

print(result.data[0].url)
```

---

## 七、常见问题

### Q1: 支持哪些尺寸？

- `1024x1024` — 正方形（默认）
- `1024x1792` — 竖版（9:16）
- `1792x1024` — 横版（16:9）

### Q2: 一次可以生成多少张？

通过 `n` 参数控制，最多 10 张。

### Q3: 计费方式

按生成的图片数量计费，具体价格请查看 [控制台用量页面](https://lenovo-ai.cn/dashboard/usage)。

### Q4: 为什么我的 Key 调用失败？

确认 Key 已绑定到 `gpt-image-2` 分组。未绑定或绑定到其他分组会返回 403 错误。

### Q5: 图片编辑时蒙版怎么制作？

蒙版是一张 PNG 图片：
- **白色区域**：会被 AI 重新生成
- **透明/黑色区域**：保持不变

可用 Photoshop / Figma / GIMP 等工具制作。

---

## 八、与 Gemini 生图对比

| 项目 | OpenAI gpt-image-2 | Gemini gemini-3.1-flash-image |
|------|-------------------|-------------------------------|
| 端点格式 | `/v1/images/generations` | `/v1beta/models/{model}:generateContent` |
| SDK 兼容 | OpenAI SDK | Google Generative AI SDK |
| 响应格式 | `{ data: [{ url: "..." }] }` | `{ candidates: [{ content: { parts: [{ inlineData: {...} }] } }] }` |
| 返回方式 | URL 或 base64（可选） | 仅 base64 |
| 尺寸控制 | 支持（3 种） | 不支持（模型自动） |
| 图片编辑 | 支持（/images/edits） | 不支持 |
| API Key 分组 | `gpt-image-2` | `gemini` |

---

## 九、技术支持

- 文档问题：[GitHub Issues](https://github.com/your-repo/issues)
- 控制台：https://lenovo-ai.cn/dashboard
- API Key 管理：https://lenovo-ai.cn/dashboard/keys
