OpenAI API 图像生成与视觉分析技术
一、概述
随着大模型技术的不断发展,当前主流的语言模型已具备图像输入处理与分析能力,即视觉(Vision)能力。通过如 gpt-image-1
等模型,开发者可以同时实现对图片的理解、分析及生成任务,极大拓展了多模态应用的开发场景。
OpenAI API 提供了多个端点,支持图像输入、图像输出及多模态文本-图像交互。本文将详细介绍相关技术实现原理、关键参数配置及典型代码实践,帮助开发者高效构建图像相关应用。
二、主要 API 及支持的用例
API | 功能 |
---|---|
Responses API | 图像分析(输入)/生成(输出) |
Images API | 图像生成(输出),可选输入图片 |
Chat Completions | 图像输入生成文本或音频 |
三、图像生成与编辑
3.1 基本原理
gpt-image-1
为原生多模态大语言模型,具备同时理解文本与图像的能力。- DALL·E 2/3 为专用图像生成模型,侧重于生成但缺乏世界知识。
- 原生多模态模型能够结合对现实世界的理解,生成具备真实细节的图像。
3.2 代码实例:使用 Responses API 生成图像
from openai import OpenAI
import base64
# 初始化 OpenAI 客户端
client = OpenAI()
# 发起图像生成请求
response = client.responses.create(
model="gpt-4.1-mini",
input="Generate an image of gray tabby cat hugging an otter with an orange scarf",
tools=[{"type": "image_generation"}],
)
# 提取并保存生成的图像数据
image_data = [output.result for output in response.output if output.type == "image_generation_call"]
if image_data:
image_base64 = image_data[0]
with open("cat_and_otter.png", "wb") as f:
f.write(base64.b64decode(image_base64))
关键参数说明
model
: 指定用于生成的模型(如gpt-4.1-mini
)。input
: 图像生成文本提示(prompt)。tools
: 工具类型,image_generation
代表图像生成。
四、图像分析与输入方式
4.1 输入方式说明
- URL:提供完整图片链接(如
https://zzzzapi.com/image.png
)。 - Base64:以 Base64 编码字符串方式传递图片。
- File ID:通过 Files API 上传后引用文件 ID。
可在单次请求中通过 content
数组输入多张图片,但图片会消耗 token,需根据需求合理规划。
4.2 图像分析代码实践
from openai import OpenAI
# 初始化客户端
client = OpenAI()
# 构造图像分析请求
response = client.responses.create(
model="gpt-4.1-mini",
input=[
{"role": "user", "content": [
{"type": "input_text", "text": "what's in this image?"},
{"type": "input_image", "image_url": "https://zzzzapi.com/example.jpg"}
]}
]
)
# 输出分析结果
print(response.output_text)
输入图片要求
- 支持格式:PNG、JPEG、WEBP、非动图 GIF
- 单次请求最大 50MB,最多 500 张图片
- 图片需清晰、无水印、无遮盖敏感内容
4.3 控制分析细节:detail
参数
可通过 detail
参数设定分析精度:
- low
:低细节,快速分析(消耗较少 token,默认缩放为 512x512)。
- high
:高细节,适合复杂场景。
- auto
:自动判定。
示例:
{"type": "input_image", "image_url": "https://zzzzapi.com/example.jpg", "detail": "high"}
五、模型局限性与注意事项
- 医学图像:不适用于医学诊断或专业医疗场景。
- 非拉丁文字:处理如日文、韩文等文字图片时准确性降低。
- 小体积文字:建议放大,避免裁剪重要内容。
- 旋转与扭曲:对旋转、倒置图像理解有限。
- 图表/空间推理:处理复杂图表、空间定位任务准确性有限。
- 计数与描述:物体计数可能为近似值,描述有误差。
- 特殊图像:不支持全景、鱼眼等特殊形变图片。
- 元数据/文件名:不读取原始文件名或元数据,分析前会自动缩放。
- 验证码:不支持或不处理验证码图片。
六、图像输入 Token 计费原理
图像输入会被转化为 token 计费,底层按图片尺寸和细节等级计算,具体方法因模型而异。
6.1 gpt-4.1-mini、gpt-4.1-nano、o4-mini
计算步骤:
- 计算覆盖图片所需的 32px x 32px patch 数量。
- 若 patch 总数超 1536,则缩放图片使 patch ≤ 1536。
- patch 总数即为图片 token(封顶 1536)。
- 按模型乘以系数(如
gpt-4.1-mini
乘 1.62)。
计算举例:
- 1024x1024 图片:1024 token(未超 cap)
- 1800x2400 图片:缩放后 1452 token(cap 内)
6.2 GPT-4o、GPT-4.1、CUA及o系列
detail: low
:固定 token 数,模型不同取值不同。detail: high
:- 先缩放使最长边 ≤ 2048px,最短边 = 768px
- 按 512px tile 数计 token
- base token + tile token
官方参数表
模型 | base token | tile token |
---|---|---|
4o,4.1,4.5 | 85 | 170 |
4o-mini | 2833 | 5667 |
o1,o1-pro | 75 | 150 |
o3 | 75 | 150 |
computer-use-preview | 65 | 129 |
示例:
- 1024x1024,
high
:4 tile,170x4+85=765 token - 2048x4096,
high
:6 tile,170x6+85=1105 token - 任意尺寸,
low
:固定 85 token
6.3 GPT Image 1 计费
- 最短边缩放至 512px
low
:base 65 token,tile 129 tokenhigh
:额外按图片形状加 token(正方形+4096,长方形+6144)
七、总结
通过 OpenAI API,开发者能够高效实现图像生成、分析及多模态交互。实践中需合理配置模型参数、细节等级与输入格式,并注意模型能力边界与计费机制,实现面向实际业务的技术应用。