GPT 图片分析与图片生成接口传参说明
大约 4 分钟
GPT 图片分析与图片生成接口传参说明
本文档整理 OpenAI 兼容接口中图片分析和图片生成的常见传参方式,以及如何查看接口返回结果。
一、图片分析
图片分析通常使用 Chat Completions 接口,通过支持视觉能力的模型完成。
1. 接口地址
POST https://api.openai.com/v1/chat/completions2. 请求头
Authorization: Bearer ${OPENAI_API_KEY}
Content-Type: application/json3. 图片 URL 传参
messages[].content 需要使用数组格式,数组中同时包含文本和图片。
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请描述这张图片的内容"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/test.jpg"
}
}
]
}
]
}4. Base64 图片传参
本地图片可以转成 Base64 后,以 Data URL 的形式传入。
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请识别图片里的主要内容"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..."
}
}
]
}
]
}常见 MIME 类型:
data:image/jpeg;base64,{base64内容}
data:image/png;base64,{base64内容}
data:image/webp;base64,{base64内容}5. 多张图片传参
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请对比这两张图片的区别"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/a.jpg"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/b.jpg"
}
}
]
}
]
}6. curl 示例
curl https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请描述这张图片"
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/test.jpg"
}
}
]
}
]
}'7. 查看图片分析结果
Chat Completions 的分析结果通常在下面字段中:
choices[0].message.content示例返回:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "这张图片展示了一只橘猫坐在窗边,阳光从窗户照进来。"
}
}
]
}提取结果:
cat result.json | jq -r '.choices[0].message.content'二、图片生成
图片生成通常使用 Images Generations 接口。
1. 接口地址
POST https://api.openai.com/v1/images/generations2. 请求头
Authorization: Bearer ${OPENAI_API_KEY}
Content-Type: application/json3. 基础传参
{
"model": "gpt-image-1",
"prompt": "一只橘猫坐在窗边,阳光照在身上,写实摄影风格",
"size": "1024x1024",
"quality": "high",
"n": 1
}4. 常用参数说明
| 参数 | 说明 | 示例 |
|---|---|---|
model | 图片生成模型 | gpt-image-1 |
prompt | 图片生成提示词 | 一张电商商品主图,白色背景,高级摄影风格 |
size | 图片尺寸 | 1024x1024 |
quality | 图片质量 | high |
n | 生成图片数量 | 1 |
response_format | 返回格式,部分模型支持 | url / b64_json |
5. prompt 编写建议
建议按照下面结构编写:
主体 + 场景 + 风格 + 光线 + 构图 + 画质示例:
一张电商商品主图,白色背景,一瓶高端护肤精华液放在透明亚克力台面上,柔和棚拍布光,真实摄影风格,高细节,商业广告构图6. curl 示例
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-1",
"prompt": "一张电商商品主图,白色背景,一瓶高端护肤精华液,真实摄影风格,柔和布光",
"size": "1024x1024",
"quality": "high",
"n": 1
}'三、查看图片生成结果
图片生成接口常见返回有两种:URL 和 Base64。
1. 返回 URL
返回示例:
{
"created": 1710000000,
"data": [
{
"url": "https://example.com/generated-image.png"
}
]
}查看方式:
cat result.json | jq -r '.data[0].url'拿到 URL 后,可以直接在浏览器打开。
2. 返回 Base64
返回示例:
{
"created": 1710000000,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."
}
]
}其中:
data[0].b64_json就是生成图片的 Base64 内容。
3. macOS 保存 Base64 图片
如果接口返回已经保存到 result.json:
cat result.json | jq -r '.data[0].b64_json' | base64 -D > output.png打开图片:
open output.png4. Linux 保存 Base64 图片
cat result.json | jq -r '.data[0].b64_json' | base64 --decode > output.png5. Node.js 保存 Base64 图片
import fs from "fs";
const imageBase64 = result.data[0].b64_json;
fs.writeFileSync("output.png", Buffer.from(imageBase64, "base64"));6. Java 保存 Base64 图片
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Base64;
String b64Json = result.getJSONArray("data")
.getJSONObject(0)
.getString("b64_json");
byte[] imageBytes = Base64.getDecoder().decode(b64Json);
Files.write(Paths.get("output.png"), imageBytes);四、常见问题
1. 图片分析时把图片 URL 写在文本里可以吗?
不推荐。
不推荐写法:
{
"role": "user",
"content": "请分析图片:https://example.com/a.jpg"
}推荐使用:
{
"type": "image_url",
"image_url": {
"url": "https://example.com/a.jpg"
}
}2. 图片分析字段名可以写成 image 吗?
不可以,OpenAI 兼容格式通常使用:
{
"type": "image_url",
"image_url": {
"url": "https://example.com/a.jpg"
}
}3. 图片生成返回没有 url 怎么办?
如果返回的是 b64_json,说明接口返回的是 Base64 图片,需要解码保存成图片文件。
4. 返回 unsupported size 怎么办?
说明当前模型不支持该尺寸,建议先使用:
"size": "1024x1024"5. 返回 unknown parameter response_format 怎么办?
说明当前模型或第三方平台不支持 response_format 参数,去掉该参数即可。
6. 使用第三方 OpenAI 兼容接口要注意什么?
需要确认三点:
- 接口地址是否仍然兼容
/v1/chat/completions和/v1/images/generations。 - 模型名是否和 OpenAI 官方一致。
- 当前模型是否支持图片输入或图片生成。
五、推荐模板
1. 图片分析模板
{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请分析这张图片"
},
{
"type": "image_url",
"image_url": {
"url": "图片URL或Base64 Data URL"
}
}
]
}
]
}2. 图片生成模板
{
"model": "gpt-image-1",
"prompt": "你要生成的图片描述",
"size": "1024x1024",
"quality": "high",
"n": 1
}六、结果字段速查
| 场景 | 结果字段 | 查看方式 |
|---|---|---|
| 图片分析 | choices[0].message.content | 文本内容 |
| 图片生成 URL | data[0].url | 浏览器打开 |
| 图片生成 Base64 | data[0].b64_json | Base64 解码保存成图片 |
