前言¶
在 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,已核实能力包括:
- 自动发现 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等字段。 - 验证 gpt-image-2 支持:对同一 base URL 与同一组凭证请求
/v1/models,确认列表中存在gpt-image-2。 - 调用生图接口:向
{base_url}/images/generations提交 JSON(model、prompt、size等),超时建议 180 秒或更长。 - 保存本地文件:解析响应中的
data[0].b64_json,解码写入 PNG 等文件。 - 运维与安全约定:不跳过 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。