base_url、把 令牌 作为 api_key,你现有的 OpenAI SDK 代码不用改结构就能直接跑。
准备工作
1
准备令牌
访问 globalai.vip/keys,复制一个以
sk- 开头的令牌。没有就点「创建API密钥」新建一个,详见 令牌管理。令牌分 gpt-image-2k 与 gpt-image-4k 两个分组,能出的尺寸不一样,按你要的最大尺寸来选:一句话:不出 4K,用
gpt-image-2k 就够;要出 4K 必须用 gpt-image-4k,代价是单价更贵。两个分组具体能用哪些模型、各自什么价,见模型广场。2
确认接口地址
生成端点
POST /v1/images/generations,编辑端点 POST /v1/images/edits。Base URL 都是 https://globalai.vip/v1。3
装好 SDK
用
pip install openai 安装官方 SDK,然后按下面的示例把 base_url 指向 Global AI。(用技能方式可跳过此步。)4
选好模型与尺寸
追求速度用
gpt-image-2.5-flare(默认),追求质量与文字准确用 gpt-image-2.5-sunburst。尺寸按需要的比例与分辨率选择,见下一节。用 Agent 技能调用(推荐)
装一次技能,之后让 AI 直接帮你生图,不用写请求代码。
用 OpenAI SDK 调用
用官方 SDK 或 curl 直接调接口,方便集成进你自己的代码。
模型与尺寸
尺寸按像素数分三组:
「其他合法尺寸」需要同时满足这几条,超出范围会直接报错:
- 宽和高都是 16 的倍数
- 最长边不超过 3840
- 长短边比不超过 3:1
- 总像素数在 655,360 ~ 8,294,400 之间
默认回退:
size 为空、auto 或格式非法时,按 2K 处理。分组决定计费与路由,实际输出尺寸由模型决定;响应里的 size 字段只是回显你请求的值,要拿真实尺寸请读 width / height 或直接看图片文件本身。尺寸与质量每升一档,耗时和配额消耗都会明显上升。建议先用
1024x1024 + low 把流程跑通,再切到目标尺寸。用 Agent 技能调用
技能是一份SKILL.md 加一个脚本。装一次之后,直接对 AI 说「用 globalai 生成一张 2K 竖版插画」就能生图,不用自己写请求代码。Codex、Claude Code、Hermes 都能用。
下载
https://static.globalai.vip/skill/globalai-image-gen-skill.zip放到哪个文件夹
把解压得到的globalai-image-gen/ 整个目录放进对应位置:
放好后重启一次客户端,技能才会被加载。
配置密钥
技能只需要一个密钥GLOBALAI_API_KEY,按你的平台设置环境变量即可:
不想动环境变量,也可以把密钥存进技能自己的私有配置:
保存密钥到技能私有配置
--api-key 参数 > 环境变量(GLOBALAI_API_KEY、GLOBALAI_IMAGE_API_KEY)> 技能私有配置文件。私有配置只属于这个技能,不会读写 OPENAI_API_KEY。想知道密钥存在哪、或想删掉它:
查看与清除配置
使用
对 Agent 直接下指令:对 Agent 说
生成图片
编辑图片
快捷操作
--save-api-key / --show-config-path / --clear-api-key 用于管理密钥;--api-key 与 --base-url 可以临时覆盖默认值。脚本只依赖 Python 标准库,不装 openai 包也能跑。
上面脚本路径以 Codex 为例;用其他工具时,把~/.codex/skills/换成上表里对应工具的实际位置即可。Windows 上把python3换成python,路径换成%USERPROFILE%\.codex\skills\这类形式。
技能脚本取图只走
b64_json:拿到 base64 就落盘,发现响应里只有 url 时直接报错停下,不会去依赖一个会过期的临时链接。如果你的尺寸与模型组合偏偏只回 url,改用下面的 SDK 或 curl 方式,并按「响应格式」一节把图片下载下来再交付。用 OpenAI SDK 调用
安装 SDK
生成图片
image_gen.py
url(item.b64_json 为空),图片同样拿得到,只是必须先下载、不能存链接:
兼容两种响应
编辑图片
编辑接口POST /v1/images/edits 接收一张原图,按提示词修改。传 mask 可以指定只改哪一块:mask 图里透明的区域会被重绘,不透明的区域保持不动。原图与 mask 都支持 PNG、JPEG、WebP。
image_edit.py
请求参数
生成接口:
编辑接口:
响应格式
图片可能以两种形式回到你手里,取决于这次请求走了哪条上游渠道。先看b64_json,没有再看 url。
情况一:返回 b64_json(推荐)
请求里带上response_format: "b64_json",响应就直接返回 base64 编码的 PNG,解出来写文件即可:
响应(b64_json)
revised_prompt 是模型实际使用的提示词,效果和预期不一致时可以对比它排查是不是提示词被改写了。usage 里主要是 output_tokens(图像 token)在消耗配额,需要逐笔对账可以看 使用记录。
4K 单张的 base64 比原图再大约三分之一,解析后不要直接打印到终端,先落盘再处理。
情况二:返回 url
同一个模型、同一个密钥,响应里放图片的位置也可能是url 而不是 b64_json——这由该尺寸与模型走的上游渠道决定,不代表你的请求写错了:
响应(url)
url 是预签名链接:带着临时凭证、会过期,过期后无法再取图。所以:
- 拿到之后立刻下载并落盘,不要把链接存进数据库,也不要把它当结果交给最终用户。
- 不要在流程里”先输出链接、稍后再下载”——中间只要过了有效期,图片就取不回来了。
- 一个响应里不会同时出现两者,判断
b64_json是否存在即可分流。
并发与重试
- 可重试:
429、500、502、503、504。 - 不要重试:
400、401、403、余额不足——这些重试只会白等。 - 推荐退避:第一次失败等 2 秒,第二次失败等 4 秒,最多尝试 3 次。
- 客户端超时给足:4K 单张要 60-110 秒,HTTP 超时建议设到 300 秒以上,否则会把正常任务掐断。
- 并发建议:4K 同时发起 1-2 张比较稳;批量出图时一批跑完再起下一批,比一次性打满成功率更高。
- OpenAI SDK 默认自带重试(
max_retries=2),只覆盖 5xx;429与连接错误建议自己再兜一层。
不装 SDK 时用 curl
生成图片
解出 PNG(b64_json 与 url 都能处理)
编辑图片
编辑接口是
multipart/form-data,curl 用 -F 传文件;生成接口是 JSON,用 -d。响应里的 b64_json 是 base64 文本,解出来才是 PNG。常见错误
401 invalid api key / 余额不足
401 invalid api key / 余额不足
400:模型、尺寸或参数有问题
400:模型、尺寸或参数有问题
模型 ID 拼写错误,或当前令牌不允许该模型,用
GET https://globalai.vip/v1/models 核对。尺寸要满足「模型与尺寸」里的合法范围:宽高都是 16 的倍数、最长边 ≤ 3840、长短边比 ≤ 3:1、总像素数在 655,360 ~ 8,294,400 之间,也别把 1K、2K、4K 直接当尺寸值传。quality 用了当前模型不支持的档位,xhigh 与 max 只有 2.5 系列支持。编辑接口则要确认 image 是 PNG、JPEG 或 WebP,且传 mask 时与原图尺寸一致。请求本身有问题,重试不会成功。429 / 502 / 503:限流与上游抖动
429 / 502 / 503:限流与上游抖动
429 是短时间内请求过多或并发过高,按 2 秒、4 秒退避重试并降低并发。502 是上游服务抖动,原样重试一次通常即可成功。503(model_not_found)是当前尺寸对应的模型分组没有可用渠道,换一个尺寸重试或联系客服补充渠道。连接超时同理,重试前先把客户端超时设到 300 秒以上;超时后重试是安全的,但可能产生两次计费。响应里是 url 而不是 b64_json
响应里是 url 而不是 b64_json
这不算错误:说明这条渠道把图片放进了预签名的
url,b64_json 与 url 不会同时出现,判断 b64_json 是否存在即可。url 会过期,拿到就立刻下载落盘,不要存链接。技能脚本遇到这种情况会直接报错停下,改用 SDK 或 curl 方式,并按「响应格式」一节处理。保存的图片打不开
保存的图片打不开
b64_json 是 base64 编码的 PNG,要先 base64.b64decode 再写入文件;直接当文本写会得到损坏文件。用 curl 时先把响应存成 resp.json 再解码,别把响应直接重定向成 .png。