🎭 GPT-4o生图格式
📝 AI绘画模型简介
-
gpt-4o-image
gpt-4o-image-vip
这两个模型是ChatGPT新GPT-4o图像功能。OpenAI API模型gpt-image-1
提供多种强大的图像生成模型,可以根据自然语言描述创建、可以对话编辑和修改图像。 -
size: (可选) 图像尺寸。支持
"1024x1024"
(方形),"1536x1024"
(竖向),"1024x1536"
(横向)。另有 "auto" 选项(默认),模型会根据提示词自动选择最佳尺寸。
💡 Python请求示例
创建图片示例(一) ✅
- 图片生成自动保存目录文件
from openai import OpenAI
import openai # 导入 openai 以便捕获其特定异常
import base64
import datetime # <<--- ***确保这一行存在且未被注释***
# 请确保妥善保管您的 API 密钥,不要将其公开。
OPENAI_API_KEY = (
"sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 输入您在uiuiAPI提供的API密钥
)
# 例如: OPENAI_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
OPENAI_BASE_URL = "https://sg.uiuiapi.com/v1" # 输入uiuiAPI的Base URL
# 2. 初始化 OpenAI 客户端
# ==============================================
# 确保 API 密钥已设置(如果还是占位符)
if OPENAI_API_KEY == "sk-YOUR_API_KEY_HERE" or not OPENAI_API_KEY: # 检查是否还是模板值
print("错误:请在代码中正确设置您的 OPENAI_API_KEY。")
exit()
client_params = {"api_key": OPENAI_API_KEY}
# 正确处理 base_url 的设置
if OPENAI_BASE_URL:
client_params["base_url"] = OPENAI_BASE_URL
print(f"使用的 Base URL: {OPENAI_BASE_URL}")
else:
print("未使用自定义 Base URL,将使用 OpenAI 默认地址。")
try:
client = OpenAI(**client_params)
# client.models.list() # 可选: 测试API密钥和连接
print("OpenAI 客户端初始化成功。")
except openai.AuthenticationError as e:
error_msg = "OpenAI API 认证失败: "
if hasattr(e, 'message') and e.message:
error_msg += e.message
elif hasattr(e, 'body') and isinstance(e.body, dict) and e.body.get('message'):
error_msg += e.body.get('message')
else:
error_msg += "请检查您的 API 密钥。"
print(error_msg)
print("请确保您的 OPENAI_API_KEY 是正确的、有效的,并且您的账户有足够余额/权限。")
exit()
except Exception as e:
print(f"初始化 OpenAI 客户端时发生意外错误: {e}")
exit()
# ==============================================
# 3. 定义 Prompt 和模型
# ==============================================
prompt = """椰树牌椰汁风格广告海报显眼漂亮性感的美女,主题是GPT最新AI绘画服务的广告促销, 强调‘惊爆价9.9/张’、‘适用各种场景、图像融合、局部重绘’、‘每张提交3次修改'、'AI直出效果,无需修改',底部醒目标注‘有意向点右 下“我想要”,右下角绘制一个手指点击按钮动作,左下角展示OpenAl标志"""
MODEL_TO_USE = "gpt-image-1" # 您希望使用的模型
# MODEL_TO_USE = "dall-e-3"
# ==============================================
# 4. 生成和保存图片
# ==============================================
try:
print(f"正在使用模型 '{MODEL_TO_USE}' 和提示生成图片...")
result = client.images.generate(
model=MODEL_TO_USE,
prompt=prompt,
n=1,
size="1024x1024",
response_format="b64_json",
)
if not result.data or not result.data[0].b64_json:
print("错误:API 未返回 base64 编码的图像数据。")
if result.data and result.data[0].revised_prompt:
print(f"修订后的提示 (Revised Prompt): {result.data[0].revised_prompt}")
exit()
image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)
# --- 自动命名文件名 ---
now = datetime.datetime.now() # <<--- 这里会用到 datetime
timestamp_str = now.strftime("%Y%m%d_%H%M%S")
output_filename = f"image_{timestamp_str}.png"
# --- 文件名修改结束 ---
with open(output_filename, "wb") as f:
f.write(image_bytes)
print(f"图片已成功生成并保存为 {output_filename}")
if result.data[0].revised_prompt:
print(f"用于生成图片的实际提示 (Revised Prompt): {result.data[0].revised_prompt}")
except openai.APIError as e:
error_message = "API 未知错误"
status_code_info = f"(状态码: {e.status_code})" if hasattr(e, 'status_code') else ""
if hasattr(e, 'message') and e.message:
error_message = e.message
elif hasattr(e, 'body') and isinstance(e.body, dict) and e.body.get('message'):
error_message = e.body.get('message')
elif hasattr(e, 'body') and isinstance(e.body, str):
error_message = e.body
print(f"OpenAI API 返回错误 {status_code_info}: {error_message}")
if hasattr(e, 'body') and e.body:
print(f"错误详情: {e.body}")
if isinstance(e, openai.AuthenticationError):
print("这通常意味着 API 密钥不正确或账户问题。请再次检查。")
elif isinstance(e, openai.RateLimitError):
print("请求频率超限。请稍后再试。")
elif isinstance(e, openai.BadRequestError):
if hasattr(e, 'body') and isinstance(e.body, dict) and 'error' in e.body and isinstance(e.body['error'], dict):
error_details = e.body['error']
if error_details.get("code") == "content_policy_violation":
print(f"详细错误:内容策略违规。提示可能违反了 OpenAI 的使用政策。")
elif error_details.get("param"):
print(f"可能是参数 '{error_details.get('param')}' 有问题。")
else:
print("BadRequestError,但无法解析详细错误信息。")
except Exception as e: # 之前的 NameError 会在这里被捕获
print(f"处理图像生成或保存时发生了一个意料之外的错误: {e}")
finally:
print("脚本执行完毕。")
创建图片示例(二) ✅
- 图片生成链接报错需打开链接下载
import http.client
import json
API_HOST = "sg.uiuiapi.com"
API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 请替换为实际的API密钥
MODEL = "gpt-image-1" # 可换模型`gpt-4o-image` `gpt-4o-image-vip``gpt-image-1``dall-e-3`
# 定义图片生成的参数
PROMPT = "椰树牌椰汁风格广告海报显眼漂亮性感的美女,主题是GPT最新AI绘画服务的广告促销,强调‘惊爆价9.9/张’、‘适用各种场景、图像融合、局部重绘’、‘每张提交3次修改'、'AI直出效果,无需修改',底部醒目标注‘有意向点右下“我想要”,右下角绘制一个手指点击按钮动作,左下角展示OpenAI标志。"
N = 1 # 生成数量
SIZE = "1536x1024" # 图片大小
# 构建请求的payload
payload = json.dumps({
"stream": True,
"model": MODEL,
"messages": [
{
"content": PROMPT,
"role": "user"
}
],
"num_images": N, # 生成的图片数量
"size": SIZE # 图片的大小
})
# 设置请求头
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {API_KEY}' # 如果需要 API 密钥
}
# 发送HTTP请求
conn = http.client.HTTPSConnection(API_HOST)
conn.request("POST", "/v1/chat/completions", payload, headers)
# 获取并打印响应
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))