跳到主要内容
AI教程

ChatGPT2API 使用教程:搭建 OpenAI 兼容的图片生成与编辑 API

本文将介绍 ChatGPT2API 的核心能力、Docker 与本地开发部署方式,并通过 curl 示例演示图片生成、图片编辑、锚点评论和标注笔迹编辑,同时讲解存储后端、代理及账号池配置。

ChatGPT2API 使用教程:搭建 OpenAI 兼容的图片生成与编辑 API

项目简介与使用注意事项

ChatGPT2API 是一个围绕 ChatGPT 官网相关能力进行逆向整理与封装的项目,提供面向图片生成、图片编辑和多图组图编辑场景的 OpenAI 兼容 API 与代理。项目同时集成在线画图工作台、账号池管理、多种账号导入方式,以及 Docker 自托管部署能力。

重要提醒:该项目 README 明确声明,仅供个人学习、技术研究与非商业性技术交流使用。请勿用于商业用途、批量操作、自动化滥用、规模化调用,或任何违反 OpenAI 服务条款及当地法律法规的行为。测试时也不应使用重要账号、常用账号或高价值账号。

项目涉及对官网接口的逆向研究,使用过程中可能存在账号受限、临时封禁或永久封禁风险。使用前请确认自己理解并接受相关风险。

ChatGPT2API 图片工作台界面

主要功能

OpenAI 兼容接口

  • 兼容 POST /v1/images/generations 图片生成接口。
  • 兼容 POST /v1/images/edits 图片编辑接口。
  • 提供面向图片场景的 POST /v1/chat/completions 和 POST /v1/responses 兼容接口。
  • 通过 GET /v1/models 暴露图片与相关模型列表。
  • 支持使用 n 参数返回多张生成结果,当前后端限制为 1 至 4 张。
  • 支持生成可编辑 PPT 与 PSD 文件。

在线画图与编辑

内置工作台支持文生图、参考图编辑和多图组图编辑,可选择 gpt-image-2、codex-gpt-image-2、auto 以及 README 列出的 GPT 模型别名。前端还提供图片会话历史、本地保存、删除与清空、服务端图片 URL 缓存、生成进度追踪、懒加载和滚动位置记忆。

账号池管理

账号池可以异步刷新账号邮箱、类型、额度和恢复时间,并轮询可用账号执行图片生成与编辑。当遇到 Token 失效类错误时,系统可以自动剔除无效 Token;对于限流账号,也支持定时检查、密码重新登录和自动恢复。

项目支持 HTTP、HTTPS、SOCKS5、SOCKS5H 代理,以及 WARP、Privoxy 和 FlareSolverr 组成的稳定代理运行时。账号导入方式包括本地 CPA JSON、远程 CPA 服务器、sub2api 服务器和 access_token。

ChatGPT2API 账号池管理界面

使用 Docker 快速部署

1. 获取项目并启动服务

推荐先使用 Docker Compose 启动完整服务。执行以下命令克隆项目并在后台运行:

git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
docker compose pull
docker compose up -d

启动前需要在 config.json 中设置 auth-key。也可以在 docker-compose.yml 中使用环境变量 CHATGPT2API_AUTH_KEY 覆盖该配置。

默认情况下,Web 面板地址为 http://localhost:3000,API 基础地址为 http://localhost:3000/v1,数据会保存在项目目录下的 ./data。README 中的部分 curl 示例使用了 localhost:8000,实际调用时请按照你的 Compose 端口映射修改端口。

2. 访问 Web 面板

服务启动后,在浏览器打开 http://localhost:3000。首次使用时,应先完成授权密钥、账号及代理等必要配置,再通过工作台测试图片生成或编辑功能。

3. 更新服务

后续更新镜像时,可以执行:

docker compose pull
docker compose up -d

启用 WARP 与 FlareSolverr 稳定代理

如果图片请求经常受到 Cloudflare 拦截,可以使用项目附带的 WARP、Privoxy 与 FlareSolverr 部署方案:

cp .env.example .env
docker compose -f docker-compose.warp.yml pull
docker compose -f docker-compose.warp.yml up -d

该 Compose 配置会启动以下服务:

  • warp-proxy:提供 WARP SOCKS5 出口。
  • privoxy:将 WARP SOCKS5 转换为 HTTP 代理。
  • flaresolverr:刷新 Cloudflare clearance。
  • init-config:幂等写入 proxy_runtime 默认配置。
  • app:运行 ChatGPT2API 主服务。

默认情况下,只有上游 OpenAI 或 ChatGPT 请求会使用稳定代理,账号邮箱、CPA 等辅助链路不会被强制接管。代理优先级为:账号自身配置的代理、稳定代理运行时、显式代理、旧版全局代理。你可以在 .env 中调整端口和运行时参数,也可以在后台设置页测试代理与 clearance。

本地开发环境

启动后端

项目 README 使用 uv 管理 Python 依赖。执行以下命令启动后端:

git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
uv sync
uv run main.py

启动前端

进入 Web 目录后,使用 Bun 安装依赖并启动开发服务器:

cd chatgpt2api/web
bun install
bun run dev

配置存储后端

项目通过环境变量 STORAGE_BACKEND 选择存储方式:

  • json:本地 JSON 文件,默认方式。
  • sqlite:本地 SQLite 数据库。
  • postgres:外部 PostgreSQL,需要设置 DATABASE_URL。
  • git:Git 私有仓库,需要设置 GIT_REPO_URL 和 GIT_TOKEN。

例如使用 PostgreSQL 时,可以在 Compose 环境变量中加入:

environment:
  - STORAGE_BACKEND=postgres
  - DATABASE_URL=postgresql://user:password@host:5432/dbname

调用图片生成 API

所有 AI 接口都需要携带以下授权请求头:

Authorization: Bearer <auth-key>

先调用模型列表接口,可以查看当前暴露的模型:

curl http://localhost:8000/v1/models \
  -H "Authorization: Bearer <auth-key>"

文生图使用 POST /v1/images/generations。下面的示例会生成一张漂浮在太空里的猫:

curl http://localhost:8000/v1/images/generations \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "一只漂浮在太空里的猫",
    "n": 1,
    "response_format": "b64_json"
  }'

model 应使用 /v1/models 返回的可用值,README 推荐图片生成使用 gpt-image-2。n 可设置生成数量,但当前后端限制为 1 至 4;response_format 示例使用 b64_json。

调用图片编辑 API

通过 multipart 上传本地图片

图片编辑接口支持上传本地文件,并用提示词描述修改内容:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -F "model=gpt-image-2" \
  -F "prompt=把这张图改成赛博朋克夜景风格" \
  -F "n=1" \
  -F "image=@./input.png"

通过图片 URL 编辑

也可以按照 JSON 格式传入图片 URL:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "把这张图改成赛博朋克夜景风格",
    "images": [
      {"image_url": "https://example.com/input.png"}
    ]
  }'

使用评论锚点编辑指定区域

通过 comments 数组可以模拟网页版的图片评论式编辑。x 与 y 支持 0 到 1 的归一化数值、百分比字符串或 0 到 100 的数值:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "保持其余部分不变",
    "images": [
      {"image_url": "https://example.com/input.png"}
    ],
    "comments": [
      {"x": "27.5%", "y": "70%", "text": "把青瓷茶壶换成金边白瓷茶壶"},
      {"x": 0.36, "y": 0.315, "text": "发髻上再插一支金色步摇"}
    ]
  }'

当请求包含 comments 时,prompt 可以省略。每条评论还可以使用 image_index 指定对应的输入图片,默认值为 0。

使用标注笔迹编辑

项目还支持网页版标注画笔。使用 markup_strokes 时,points 是归一化坐标折线,color 默认是 #FF3B30,width 是相对于图片短边的线宽比例:

curl http://localhost:8000/v1/images/edits \
  -H "Authorization: Bearer <auth-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "把圆圈内的霓虹招牌换成绿色",
    "images": [
      {"image_url": "https://example.com/input.png"}
    ],
    "markup_strokes": [
      {
        "points": [[0.62, 0.18], [0.78, 0.22], [0.75, 0.42], [0.6, 0.38], [0.62, 0.18]],
        "color": "#FF3B30",
        "width": 0.01
      }
    ]
  }'

如果已经有与原图同比例的透明笔迹 PNG,也可以用 multipart 方式上传 markup 文件。项目会将笔迹与输入图片对齐并合成后再执行编辑。

使用 Chat Completions 与 Responses 兼容接口

Chat Completions

POST /v1/chat/completions 面向文本、网页搜索和图片场景提供兼容能力,但 README 特别说明它不是完整的通用聊天代理。图片生成示例:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-image-2",
    "messages": [
      {
        "role": "user",
        "content": "生成一张雨夜东京街头的赛博朋克猫"
      }
    ],
    "n": 1
  }'

该接口的 messages 可承载文本、搜索和图片请求内容;tools 支持 README 列出的网页搜索工具,stream 在文本、搜索和图片场景中仍处于测试状态。

Responses API

POST /v1/responses 支持图片生成工具调用和网页搜索兼容逻辑,同样不是完整的通用 Responses API 代理:

curl http://localhost:8000/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-5",
    "input": "生成一张未来感城市天际线图片",
    "tools": [
      {
        "type": "image_generation"
      }
    ]
  }'

其中 tools 支持 image_generation、web_search、web_search_preview 和 web_search_preview_2025_03_11。流式响应已实现,但仍在测试中。

进阶使用建议

  1. 先验证授权和模型列表:部署后先调用 /v1/models,确认 auth-key 和端口配置正确,再进行图片请求。
  2. 合理选择存储后端:个人测试可使用默认 JSON 或 SQLite;需要外部数据库时再配置 PostgreSQL,并妥善保护连接字符串。
  3. 处理 Cloudflare 拦截:当上游请求稳定性较差时,优先按照项目提供的 WARP Compose 方案配置稳定代理,并在后台测试代理与 clearance。
  4. 控制账号池风险:定期清理失效 Token,使用搜索、筛选和批量刷新功能维护账号状态,避免对账号执行 README 禁止的批量或滥用操作。
  5. 区分模型别名:codex-gpt-image-2 用于 Codex 画图场景,仅 Plus、Team、Pro 订阅可用;具体可用模型应以 /v1/models 返回结果为准。
  6. 注意接口边界:Chat Completions 与 Responses 主要面向 README 所述的文本、搜索和图片场景,不应将其当作完整通用代理使用。

总结

ChatGPT2API 将 ChatGPT 网页端相关图片能力封装为 OpenAI 风格接口,并提供在线工作台、图片编辑增强、账号池、代理运行时和多种部署方式。你可以先用 Docker 完成基础部署,再根据需求配置存储后端、稳定代理和账号导入,最后通过 /v1/images/generations 与 /v1/images/edits 接入图片生成和编辑流程。使用时务必遵守项目免责声明、上游服务条款及当地法律法规。