gpt-image-2生图技能:在 Agent 里自动发现网关并落盘出图

前言

在 Cursor、Claude Code 等环境里让 Agent 画图,常见做法是手写一段调用 OpenAI 兼容 /v1/images/generations 的脚本,或把 base URL、API Key 写死在对话里。网关若只暴露 /v1/models 而不支持标准生图路径,还容易把「能列出 gpt-image-2」误判成「一定能出图」。下面介绍 SkillHub 社区技能 @user_fdb96f95/gpt-image-2(gpt-image-2生图技能):按固定流程发现配置、校验模型、调用接口并把 b64_json 保存为本地文件。

这是什么

gpt-image-2生图技能 是面向任意 AI Agent 的通用生图模块,坐标 @user_fdb96f95/gpt-image-2,当前 SkillHub 版本 1.1.2,来源为 community,分类 design-media,发布者 user_fdb96f95。官方页面:SkillHub 技能页,资源地址 https://api.skillhub.cn/user_fdb96f95/gpt-image-2。

技能标签标明 requires_api_key=true:需要自备 OpenAI 兼容网关的 API Key,技能本身不在文档中保存真实密钥。

核心功能

依据技能包 SKILL.md,已核实能力包括:

  1. 自动发现 OpenAI 兼容 API:优先读环境变量 OPENAI_BASE_URL / OPENAI_API_KEY、CLAWTO_BASE_URL / CLAWTO_API_KEY;若无,再从宿主 config.yaml 映射 model.base_url、model.api_key、auxiliary.vision.base_url、auxiliary.vision.api_key 等字段。
  2. 验证 gpt-image-2 支持:对同一 base URL 与同一组凭证请求 /v1/models,确认列表中存在 gpt-image-2。
  3. 调用生图接口:向 {base_url}/images/generations 提交 JSON(model、prompt、size 等),超时建议 180 秒或更长。
  4. 保存本地文件:解析响应中的 data[0].b64_json,解码写入 PNG 等文件。
  5. 运维与安全约定:不跳过 SSL 校验;模型列表与生图请求必须使用同一网关;尺寸不支持时从 2048x1024 回退到 1024x1024;附带 references/clawto-api-notes.md 记录部分网关的非标准路径行为。

安装与启用

安装 SkillHub CLI

若尚未安装,可先检查版本:

command -v skillhub && skillhub --version

未安装时可执行(仅 CLI):

curl -fsSL https://skillhub-1388575217.cos.ap-guangzhou.myqcloud.com/install/install.sh | bash -s -- --cli-only

完整安装说明见 https://skillhub.cn/install/skillhub.md。

安装本技能

安装时必须用 --dir 指向当前 Agent 的 skills 目录,否则默认落在 ./skills/ 且可能不被识别。本技能在索引中的安装方式为:

skillhub install gpt-image-2 --namespace user_fdb96f95 --dir <你的 skills 目录>

常见路径示例(来自 SkillHub 安装文档):

  • Cursor:~/.cursor/skills/
  • Claude Code:~/.claude/skills/
  • Codex:~/.codex/skills/ 或项目下的 .agents/skills/

也可将下面提示交给 Agent,让其按官方安装文档拉取 @user_fdb96f95/gpt-image-2:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_fdb96f95/gpt-image-2。

安装后按所用客户端要求重启或刷新 Agent,使技能生效。

配置 API

在 shell 或宿主环境中注入(示例,请替换为真实值):

export OPENAI_BASE_URL="https://你的网关/v1"
export OPENAI_API_KEY="你的密钥"

技能同样支持 CLAWTO_BASE_URL / CLAWTO_API_KEY 命名;具体以 SKILL.md 中的发现顺序为准。

典型用法

下面步骤与技能文档一致,便于在终端或 Agent 会话中复现。

1、检查是否已配置环境变量

python3 - <<'PY'
import os
candidates = [
    ('OPENAI_BASE_URL', 'OPENAI_API_KEY'),
    ('CLAWTO_BASE_URL', 'CLAWTO_API_KEY'),
]
for base_var, key_var in candidates:
    base = os.getenv(base_var)
    key = os.getenv(key_var)
    if base and key:
        print(f'{base_var}={base}')
        print(f'{key_var}=SET')
        break
else:
    print('no_api_found')
PY

2、验证 /v1/models 是否包含 gpt-image-2

先将 API_BASE_URL、API_KEY 设为发现到的值,再执行:

python3 - <<'PY'
import os, json, urllib.request, ssl
base = os.environ['API_BASE_URL'].rstrip('/')
key = os.environ['API_KEY']
url = f'{base}/models'
req = urllib.request.Request(url, headers={'Authorization': f'Bearer {key}'})
ctx = ssl.create_default_context()
with urllib.request.urlopen(req, context=ctx, timeout=30) as r:
    data = json.loads(r.read().decode('utf-8', 'ignore'))
    models = [m.get('id') for m in data.get('data', [])]
    print('has_gpt_image_2=', 'gpt-image-2' in models)
    print(models)
PY

3、调用 gpt-image-2 生图

python3 - <<'PY'
import os, json, urllib.request, ssl
base = os.environ['API_BASE_URL'].rstrip('/')
key = os.environ['API_KEY']
api = f'{base}/images/generations'
payload = json.dumps({
    'model': 'gpt-image-2',
    'prompt': 'a stylish female livestream host in a professional streaming studio, smiling, modern lighting, realistic, safe and tasteful, no suggestive pose',
    'size': '1024x1024'
}).encode()
req = urllib.request.Request(api, data=payload, headers={
    'Authorization': f'Bearer {key}',
    'Content-Type': 'application/json'
})
ctx = ssl.create_default_context()
with urllib.request.urlopen(req, context=ctx, timeout=180) as r:
    print(r.status)
    print(r.read().decode('utf-8', 'ignore'))
PY

4、将响应 JSON 中的 b64_json 写入文件

先把上一步响应保存为 response.json,再解码:

python3 - <<'PY'
import json, base64, pathlib
body = json.loads(open('response.json').read())
out = pathlib.Path('gpt_image_2.png')
out.write_bytes(base64.b64decode(body['data'][0]['b64_json']))
print(out)
PY

在对话里使用时,可直接用自然语言描述画面(技能文档提供了英文示例 prompt,可按直播间、产品展示等场景替换)。若用户指定输出目录,技能要求 Agent 记住该路径并在后续默认写入。

适用场景与注意

适合谁

  • 已在使用 OpenAI 兼容网关、且网关模型列表含 gpt-image-2 的开发者。
  • 希望 Agent 按统一流程「发现配置 → 验模 → 生图 → 落盘」,而不是每次临时拼 curl 的团队。

限制与坑

  • 部分网关仅在 /v1/models 中展示 gpt-image-2,但标准 /v1/images/generations 仍返回 404 或需走其它路径;技能附带的网关笔记以 api.clawto.link 为例说明了这种情况,不能仅凭模型列表判断可生图。
  • 返回多为 b64_json 而非图片 URL;401、400、insufficient balance 需分别检查凭证、尺寸与账户额度。
  • SkillHub 页面统计(截至资料抓取):评分 100000,下载 10194,安装 2;实际可用性仍取决于你的网关与 Key。

结尾

gpt-image-2生图技能把「发现 OpenAI 兼容 API、验证 gpt-image-2、调用生图并保存文件」写成 Agent 可执行的固定步骤,适合作为通用生图模块挂在 Cursor、Claude Code、Codex 等环境。安装与详情见 https://www.skillhub.cn/skills/user_fdb96f95/gpt-image-2,资源入口 https://api.skillhub.cn/user_fdb96f95/gpt-image-2。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye