吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 874|回复: 9
上一主题 下一主题
收起左侧

[其他转载] 【Python】Custom Image API Skill,让Codex支持第三方GPT-IMAGE-2模型调用

  [复制链接]
跳转到指定楼层
楼主
Cristy 发表于 2026-8-15 15:19 回帖奖励
本帖最后由 Cristy 于 2026-8-15 15:21 编辑

Custom Image API Skill: CodeX调用skill ,让只有 Chat 接口的工具间接调用图片模型

该工具由AI生成,在CodeX做过测试完整可用。其他工具需要做一定的配置,根据相关工具的skill扩展来针对处理。

一、背景:Chat 接口和图片接口不在同一条调用链上

很多 AI 工具的模型调用链默认面向对话模型,通常只会调用兼容 OpenAI 风格的:

POST /chat/completions

例如:中转平台提供了当前顶流图片生成模型, gpt-image-2 模型。但CodeX等工具无法直接使用。因为gpt-image-2 往往提供的是另一组 OpenAI 兼容接口:

POST /images/generations
POST /images/edits

这就导致:即使底层 provider 支持图片模型,上层工具也可能没有原生的图片请求入口,不能直接把一次对话调用转换为图片生成调用,更不能稳定地处理图片 URL、Base64 或图片二进制响应。

custom-image-api 的核心作用,就是在这两套协议之间提供一个轻量的桥接层:

上层工具的自然语言请求
        -> 工具识别到图片生成指令
        -> Skill 或本地脚本
        -> OpenAI 兼容的 /images/generations 或 /images/edits
        -> 图片 URL/Base64/二进制响应
        -> 本地图片文件
        -> 返回给上层工具展示或继续处理

因此,它不是把图片模型“伪装成 Chat 模型”,而是让原本只有 Chat 调用能力的工具,通过 Skill/插件或本地脚本间接调用图片专用接口。

二、它解决了什么问题

图片接口接入时,除了请求路径不同,还存在一组重复工作:

  • 根据 Codex profile 找到模型和 provider;
  • 拼接 /images/generations/images/edits 接口地址;
  • 从环境变量或 Codex 的 auth.json 读取认证信息;
  • 生成请求使用 JSON,图片编辑请求使用 multipart/form-data
  • 兼容 URL、Base64、Data URI 和直接图片响应;
  • 把返回的图片下载、解码、识别格式并保存到本地;
  • 避免 API Key 出现在命令输出、错误信息和共享技能目录中。

custom-image-api 集中处理了这些协议细节。它是一套可被工具调用的适配 Skill。对于 Codex,它表现为 custom-image-api Skill;对于其他工具,也可以直接复用其中的 Python 脚本和配置约定。

从能力边界看,它把“上层只支持 Chat”与“底层支持图片接口”解耦了:

上层工具:负责理解用户意图、触发 Skill、展示结果
                         |
                         v
桥接层:负责配置、认证、请求编码、响应解析、文件保存
                         |
                         v
图片 provider:负责真正的 image2 或其他图片模型推理

这里的 image2 可以理解为图片模型的具体名称,例如某个 provider 上配置的 gpt-image-2;真正决定能否使用的,是 provider 是否暴露兼容的图片接口。

三、目录结构

custom-image-api/
├── SKILL.md                    # Skill 的行为说明和调用约定
├── agents/
│   └── openai.yaml             # 在 Codex 中显示的名称、描述和默认提示词
├── references/
│   └── setup.md                # 可移植安装和配置说明
└── scripts/
    ├── generate_image.py       # 实际执行生成、编辑、下载和保存
    └── self_test.py             # 不访问网络的协议和兼容性测试

其中最重要的是 generate_image.py。它使用 Python 标准库完成 HTTP 请求、TOML 配置读取、multipart 编码、Base64 解码和图片文件保存,因此没有额外的第三方 Python 依赖。

四、运行前提

需要满足以下条件:

  1. 已安装并启用支持个人 Skill 的 Codex。
  2. Python 3.11 或更高版本。脚本使用标准库 tomllib 读取 config.toml
  3. 一个支持以下接口的 OpenAI 兼容图片服务:
    • POST /images/generations
    • POST /images/edits
  4. 图片服务返回 URL、Base64、Data URI,或直接返回 image/* 响应。

五、CodeX安装 Skill

将完整的 custom-image-api 目录复制到个人 Skill 目录:

Windows:

%USERPROFILE%\\.codex\\skills\\custom-image-api\\

macOS/Linux:

~/.codex/skills/custom-image-api/

复制完成后,重新启动一个 Codex task,使 Skill 元数据重新加载。不要把 API Key、auth.json、个人 config.toml、生成图片或机器相关的绝对路径复制到 Skill 目录中。

六、配置 Codex

在 Codex 的 config.toml 中配置一个图片 provider 和 custom-image profile。示例:

[model_providers.team-image]
name = "team-image"
base_url = "https://image-api.example.com/v1"
env_key = "TEAM_IMAGE_API_KEY"

[profiles.custom-image]
model_provider = "team-image"
model = "gpt-image-2"

然后在本机设置 TEAM_IMAGE_API_KEY 环境变量。密钥不应写入 Skill、提示词或团队共享配置。

如果 provider 使用 Codex 已有的 OpenAI 认证,也可以配置:

[model_providers.openai-image]
name = "openai-image"
base_url = "https://api.openai.com/v1"
requires_openai_auth = true

[profiles.custom-image]
model_provider = "openai-image"
model = "gpt-image-2"

此时脚本会从 Codex 的 auth.json 读取已经保存的 OPENAI_API_KEY。脚本还兼容 experimental_bearer_token,但不建议在共享模板中使用,因为它会把凭据直接放进 config.toml

Endpoint 地址如何解析

脚本会根据 base_url 自动得到最终接口:

base_url 生成接口 编辑接口
https://host https://host/v1/images/generations https://host/v1/images/edits
https://host/v1 https://host/v1/images/generations https://host/v1/images/edits
已包含 /images/generations/images/edits 按资源替换 按资源替换

因此 provider 的 URL 可以配置在 host 根路径,也可以配置在 /v1 路径。

七、安装验证

先运行离线自测:

python scripts\\self_test.py

预期输出包含:

{"ok": true}

再运行配置检查。这个命令不会请求图片,但会读取 profile、provider、模型、认证来源并计算两个 endpoint:

python scripts\\generate_image.py --check

示例输出结构如下,认证信息只显示来源,不显示密钥:

{
  "ok": true,
  "profile": "custom-image",
  "provider": "team-image",
  "model": "gpt-image-2",
  "auth_source": "environment:TEAM_IMAGE_API_KEY",
  "generation_endpoint": "https://image-api.example.com/v1/images/generations",
  "edit_endpoint": "https://image-api.example.com/v1/images/edits"
}

八、生成图片

没有输入图片时,脚本自动选择生成流程,向 /images/generations 发送 JSON:

python scripts\\generate_image.py `
  --prompt "a red circle on a clean white background" `
  --output-dir "C:\\Users\\me\\Pictures\\generated"

对应的请求主体大致是:

{
  "model": "gpt-image-2",
  "prompt": "a red circle on a clean white background",
  "n": 1,
  "size": "auto"
}

常用参数:

python scripts\\generate_image.py `
  --prompt "editorial product photo of a glass bottle" `
  --output-dir "C:\\Users\\me\\Pictures\\generated" `
  --size "1024x1024" `
  --count 2 `
  --quality high `
  --response-format b64_json `
  --filename-prefix bottle

支持的主要参数包括:

  • --size:图片尺寸,默认 auto
  • --count:数量,范围为 1 到 10;
  • --quality--style:按 provider 能力传递;
  • --response-formatautourlb64_json
  • --filename-prefix:输出文件名前缀。

九、编辑图片

传入 --image 后,脚本自动选择编辑流程,并使用 multipart/form-data 请求 /images/edits

python scripts\\generate_image.py `
  --prompt "replace only the background with a quiet beach at sunset; keep the product unchanged" `
  --image "C:\\Users\\me\\Pictures\\product.png" `
  --output-dir "C:\\Users\\me\\Pictures\\edited" `
  --input-fidelity high

编辑提示词最好明确写出不变量,例如“只修改背景,保留主体的形状、文字、颜色和细节”。这样可以降低模型误改主体的概率。--input-fidelity high 适合身份、产品细节或版式敏感的编辑,但是否真正生效取决于 provider。

多张输入图和 mask

可以重复使用 --image

python scripts\\generate_image.py `
  --prompt "combine the subject from the first image with the lighting reference from the second image" `
  --image "C:\\images\\subject.png" `
  --image "C:\\images\\lighting-reference.png" `
  --mask "C:\\images\\mask.png" `
  --output-dir "C:\\images\\output"

单张输入使用 multipart 字段 image;多张输入会重复使用 image[];mask 使用 mask 字段。mask 的黑白区域语义由具体图片服务定义,使用前应参考 provider 文档。

十、响应处理和文件保存

脚本会识别以下响应形式:

  • { "data": [...] }
  • { "images": [...] }
  • { "output": [...] }
  • 条目中的 urlb64_jsonbase64b64image_base64image 字段;
  • 直接返回的 image/pngimage/jpeg 等图片响应。

如果返回 URL,脚本会单独下载图片,且不会把 API Key 转发给图片 URL 所在的主机。如果返回 Base64,脚本会解码 Data URI 或普通 Base64 数据。

输出目录不存在时会自动创建。文件名默认类似:

generated-image-01.png

如果文件已存在,脚本会追加数字后缀,避免覆盖原文件。程序最后输出 JSON,例如:

{
  "operation": "generate",
  "files": ["C:\\images\\output\\generated-image-01.png"]
}

脚本还会根据图片文件签名识别 PNG、JPEG、GIF、BMP、TIFF、WebP 和 AVIF,无法判断格式时会报错,而不是写出一个扩展名错误的文件。单次 API 响应上限为 100 MB。

十一、在 Codex 中如何使用

安装和配置完成后,可以直接用自然语言提出图片任务,例如:

使用 custom-image-api 生成一张极简风格的产品海报,主色为黑白,输出到当前任务目录。

也可以显式指定 Skill:

$custom-image-api 将这张图片的背景替换成纯白,保持主体、文字和比例不变,并检查生成文件是否可以正常打开。

Skill 的默认行为包括:判断是生成还是编辑、组织完整提示词、调用脚本、验证输出文件,并在 Codex 对话中显示结果图片。

十二、其他工具理论上也能使用

这个方案的关键逻辑位于 scripts/generate_image.py,并不依赖 Codex 的 Chat 模型推理接口。脚本只需要以下输入:

  • 一个 prompt;
  • 一个符合约定的 Codex 配置或等价 provider 配置;
  • 可选的输入图片、mask 和图片参数;
  • 一个可写的输出目录。

它最终执行的是普通 HTTP 请求,并把图片保存为本地文件。因此,理论上 WorkBuddy、Qorder、其他 Agent 框架、IDE 插件或自动化任务系统,只要具备以下任一能力,就可以复用这个方案:

  1. 能加载类似 Skill 或插件;
  2. 能执行 Python 脚本;
  3. 能直接调用 OpenAI 兼容的 /images/generations/images/edits 接口。

不同工具只需要替换“如何触发”和“如何展示结果”这两部分,图片接口调用、认证、响应解析和文件落盘逻辑可以保持不变。这也是它比只在某个客户端内部增加图片按钮更容易迁移的原因。

需要注意的是,“理论上可复用”不代表所有工具可以直接复制目录即用。目标工具仍需要提供自己的 Skill/插件加载机制、配置位置、凭据管理方式以及本地文件展示能力。

十三、常见问题排查

1. 找不到 tomllib

说明 Python 版本低于 3.11。升级 Python,或在 Codex Desktop 中使用 load_workspace_dependencies 返回的 bundled Python 3.11+ 路径。

2. Codex configuration not found

检查 CODEX_HOME 是否指向正确的 Codex 配置目录,以及该目录下是否存在 config.toml。通常不需要设置 CODEX_HOME,脚本会使用默认的用户目录。

3. Missing Codex configuration value

检查 [profiles.custom-image] 是否存在 model_providermodel,并确认对应的 [model_providers.<provider>] 中有 base_url

4. 认证变量未设置

如果配置了 env_key = "TEAM_IMAGE_API_KEY",必须在当前进程环境中设置同名变量。不要把变量名误写成 API Key 本身。

5. HTTP 404 或接口路径错误

确认 provider 是否真的兼容 /images/generations/images/edits,并用 --check 查看脚本计算出的 endpoint。若服务商只实现了其中一个接口,另一种操作无法使用。

6. 返回结果无法解析

检查服务是否返回了支持的 JSON 字段或 image/* Content-Type。只有文本 URL、Base64 字段和直接图片响应会被识别;其他自定义响应格式需要修改 image_candidates 或在 provider 侧增加兼容层。

十四、安全和工程注意事项

  1. API Key 只放在环境变量或 Codex 的认证文件中,不放进提示词、Skill 文件和共享仓库。
  2. 脚本对 HTTP 错误输出做了密钥脱敏,但仍应避免把完整响应日志上传到公共渠道。
  3. 返回的远程图片会被下载,生产环境应限制 provider 返回的 URL 来源,并设置合理的网络超时。
  4. --filename-prefix 会过滤危险字符,输出文件采用独占创建,不会覆盖已有文件。
  5. 当前实现是命令行适配器,不包含任务队列、重试、并发控制、图片内容审核或持久化存储。这些能力应由上层系统补充。

十五、演示





skill 下载链接

下载:https://wwapk.lanzouq.com/ivYWS42inzeh 密码:d6dx

免费评分

参与人数 5吾爱币 +6 热心值 +5 收起 理由
helian147 + 1 + 1 谢谢@Thanks!
ibib0320 + 1 + 1 谢谢@Thanks!
libowuaipojie + 1 + 1 我很赞同!
PJlay + 1 + 1 正好需要,先收藏
许我浅笑而安 + 2 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
nhchy 发表于 2026-8-15 16:22
学习了,谢谢分享
3#
放羊的狼 发表于 2026-8-15 16:39
4#
cnljm 发表于 2026-8-15 17:21
5#
精妹 发表于 2026-8-15 18:36
学习。。。学习
6#
xiaofangya 发表于 2026-8-15 19:04
谢谢LZ,刚好最近有大批量生图的需求
7#
adhihiq12 发表于 2026-8-15 19:08
学习一下,之前都是叫他给我提示词去网页版生成。好麻烦,这个看起来很不错。
8#
ibib0320 发表于 2026-8-15 20:36
感谢分享,学习学习
9#
13319937326 发表于 2026-8-16 21:23
楼主可以提供一些做PPT或者会议等文案工作相关的skill技能不,git里的不太方便去访问,怕被审查
10#
extra 发表于 2026-8-17 08:30
把这段发给 AI
apikey: sk-xxxxxxxx
model: gpt-image-2
baseurl: https://xxxxxxxxxxxxxxx
根据我给你的信息,生成对应的生图 curl、skills,我以后生图的时候都会调用这个 skills,写完之后测试一下生成的图片。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-17 09:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表