Skip to content

yukkcat/chatgpt2api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

372 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatGPT2API logo

ChatGPT2API

ChatGPT 官网能力 → OpenAI 兼容 API 网关

当前稳定版本:v2.6.1 | 发布说明 | 全部版本


联系我们

点击链接加入群聊【gemini/gpt-2API 交流群】:


项目定位

本仓库基于原版 basketikun/chatgpt2api 整理维护,核心仍是把 ChatGPT 官网能力封装为 OpenAI 兼容 API。

本版本使用新的 Vue 控制台,主题和交互与原版前端不同;除前端实现差异外,接口、配置和部署口径会尽量保持与原版一致。

在原版基础上,本分支重点扩展了多出口代理组、备用出口、图片链路诊断、对话画图 WebUI、远程账号导入、注册邮箱链路、图片存储管理和搜索/推理强度等能力,目标是在保持 OpenAI 兼容入口的同时,提供更适合自托管、多账号和高并发图片场景的管理体验。

发布仓库只保留主服务、Vue 控制台和必要部署文件;旧版前端、测试文件、临时文档和运行产物不进入发布内容。


核心能力

  • OpenAI 兼容接口:覆盖图片生成、图片编辑、文本对话、Responses、Messages、网页搜索、PPT/PSD/可编辑文件任务等已实现链路,可接入常见 SDK、网关或客户端。
  • 对话画图工作台:把文本对话、搜索、文生图、图生图、多图参考、Markdown 渲染、官网式引用、推理强度和图片任务进度放在同一会话里。
  • 图片链路诊断:记录账号、出口、conversation id、上游原始错误、SSE/轮询/下载阶段耗时,支持实时监控和调用日志排查。
  • 多账号调度:支持账号导入、刷新、额度读取、分组、代理优先级、异常账号自动移除和批量管理。
  • 远程账号导入:支持本地 CPA JSON、远程 CPA、Sub2API、access token 导入;Sub2API / CPA 可按远程分组折叠选择、全组选中、去重和批量导入。
  • 注册账号链路:支持临时邮箱、GPTMail、Outlook Token 邮箱池和 Microsoft plus alias,提供验证码等待、注册进度、邮箱池状态和实时日志。
  • 代理与稳定出口:支持账号代理、账号组代理、多出口代理组、节点并发、备用出口、WARP / Privoxy / FlareSolverr 稳定代理运行时和 Cloudflare clearance 测试。
  • 管理控制台:包含概览中心、账号管理、日志管理、实时监控、图片管理/存储管理、代理管理、注册账号、对话画图、调试中心和系统设置。
  • 自托管部署:支持 Docker、一键脚本、JSON / SQLite / PostgreSQL / Git 账号存储后端、WebDAV 图片存储和 R2 备份。

功能架构

flowchart TB
  Admin["管理员"] --> Console["Vue 管理控制台"]
  User["普通用户 / 画图用户"] --> Studio["对话画图"]
  Client["OpenAI 兼容客户端"] --> Gateway["/v1 兼容 API"]

  subgraph ConsoleModules["控制台模块"]
    Dashboard["概览中心"]
    Accounts["账号管理 / 远程导入"]
    Logs["调用日志"]
    Monitor["实时监控"]
    Gallery["图片管理"]
    Proxy["代理 / 代理组"]
    Register["注册账号"]
    Debug["调试中心"]
    Settings["系统设置"]
  end

  Console --> ConsoleModules
  Studio --> Gateway
  Gateway --> Protocol["ChatGPT Web 协议层"]
  Protocol --> Upstream["ChatGPT 官网"]
  Protocol --> AccountsPool["账号池 / 代理出口"]
  Protocol --> LogsStore["调用日志 / 实时监控"]
  Protocol --> ImageStore["本地 / WebDAV 图片存储"]
  ConsoleModules --> AdminAPI["/api 管理接口"]
  AdminAPI --> DataStore["data 目录 / SQLite / PostgreSQL / Git"]
Loading

Warning

免责声明:

本项目涉及对 ChatGPT 官网文本生成、图片生成与图片编辑等相关接口的逆向研究,仅供个人学习、技术研究与非商业性技术交流使用。

  • 严禁将本项目用于任何商业用途、盈利性使用、批量操作、自动化滥用或规模化调用。
  • 严禁将本项目用于破坏市场秩序、恶意竞争、套利倒卖、二次售卖相关服务,以及任何违反 OpenAI 服务条款或当地法律法规的行为。
  • 严禁将本项目用于生成、传播或协助生成违法、暴力、色情、未成年人相关内容,或用于诈骗、欺诈、骚扰等非法或不当用途。
  • 使用者应自行承担全部风险,包括但不限于账号被限制、临时封禁或永久封禁以及因违规使用等所导致的法律责任。
  • 使用本项目即视为你已充分理解并同意本免责声明全部内容;如因滥用、违规或违法使用造成任何后果,均由使用者自行承担。
  • 本项目基于对 ChatGPT 官网相关能力的逆向研究实现,存在账号受限、临时封禁或永久封禁的风险。请勿使用你自己的重要账号、常用账号或高价值账号进行测试。

快速开始

一键安装

curl -fsSL https://raw.githubusercontent.com/yukkcat/chatgpt2api/main/deploy/install.sh | sudo bash

固定安装当前稳定版:

curl -fsSL https://raw.githubusercontent.com/yukkcat/chatgpt2api/v2.6.1/deploy/install.sh | sudo bash -s -- --branch v2.6.1

Docker 运行

git clone https://github.com/yukkcat/chatgpt2api.git
cd chatgpt2api
cp .env.example .env
printf '{ "auth-key": "your_secret_key_here" }\n' > config.json
docker compose up -d

启动前请先在 .env 中设置 CHATGPT2API_AUTH_KEY,也可以继续在 config.json 中填写 auth-key。 仓库只保留 config.example.yaml 作为配置示例,运行时真实配置文件仍是本地 config.json,不要把本地配置提交到仓库。

  • Web 面板:http://localhost:3000
  • API 地址:http://localhost:3000/v1
  • 数据目录:./data

WARP / FlareSolverr 稳定代理部署

如果注册或图片链路经常遇到 Cloudflare 拦截,可以启用附带的 WARP + Privoxy + FlareSolverr 方案:

cp .env.example .env
printf '{ "auth-key": "your_secret_key_here" }\n' > config.json
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。

本地开发

启动后端:

git clone https://github.com/yukkcat/chatgpt2api.git
cd chatgpt2api
uv sync
uv run main.py

启动前端:

cd chatgpt2api/web-vue
npm install
npm run dev

后续更新新版本:

git pull
docker compose up -d

账号存储后端配置

支持通过环境变量 STORAGE_BACKEND 切换账号池和管理 Key 的存储方式:

  • json - 本地 JSON 文件(默认)
  • sqlite - 本地 SQLite 数据库
  • postgres - 外部 PostgreSQL(需配置 DATABASE_URL
  • git - Git 私有仓库(需配置 GIT_REPO_URLGIT_TOKEN

说明:该配置只影响账号池和管理 Key。系统设置、调用日志、概览统计、图片索引、注册机配置仍按各自模块独立保存,其中概览统计默认写入 data/dashboard_metrics.json 并滚动保留最近 30 天。

示例:使用 PostgreSQL

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

功能详情

API 兼容能力

兼容的是本项目已实现的 ChatGPT Web 逆向场景,不等同于官方 OpenAI 全量 API 代理。

  • GET /v1/models:合并本地模型目录和上游实时模型,返回当前可暴露模型。
  • POST /v1/chat/completions:支持文本、搜索和图片场景,支持 streamtoolsweb_search_optionsreasoning_effort / thinking_effort
  • POST /v1/responses:支持文本、搜索和图片工具调用,支持 image_generationweb_search* 工具。
  • POST /v1/messages:Anthropic Messages 兼容入口,走同一账号池和调用日志。
  • POST /v1/search:ChatGPT 搜索兼容入口,返回文本、引用来源和搜索结果信息。
  • POST /v1/images/generations:图片生成,支持 n=1..4
  • POST /v1/images/edits:图片编辑,支持 multipart、远程 URL、base64、data URL 和多参考图。
  • POST /v1/editable-file-tasksGET /v1/editable-file-tasks:统一 PPT / PSD 可编辑文件任务。
  • POST /v1/ppt/generationsPOST /v1/psd/generations:PPT / PSD 生成快捷入口。
  • GET /files/{path}:下载 PPT / PSD / 可编辑文件任务产物。

对话画图工作台

  • 侧边栏会话 + 底部输入框布局,支持普通文本对话、搜索模式、文生图、图生图和多图参考。
  • 支持 gpt-image-2codex-gpt-image-2auto 以及模型目录返回的文本/搜索模型。
  • 支持推理强度:低 / 中 / 高 / 超高,透传为 reasoning_effort
  • 支持 Markdown 渲染、代码块、搜索引用来源、官网式 cite / image_group 占位解析和图片建议展示。
  • 图片任务内联展示生成中、成功和失败状态;切换会话后仍保留任务状态提示。
  • 支持全屏偏好持久化、历史删除、清空、滚动定位和大量消息下的渲染性能优化。
  • 可在系统设置中开启“图片成功后删除官网会话”,成功保存图片后尝试隐藏上游 ChatGPT conversation;默认关闭,便于保留恢复和排查现场。

图片链路和诊断

  • 图片请求会记录 call_id、账号邮箱、模型、endpoint、conversation id、代理来源、代理组/节点和关键阶段耗时。
  • 上游断流、SSE 超时、轮询超时、策略拒绝、文本回复但无图、图片解析/下载失败会尽量保留原始上游错误。
  • image_stream_timeout_secs 控制上游 SSE/HTTP 流硬截止;image_poll_timeout_secs 控制结果解析和轮询总等待。
  • 可通过实时监控查看活跃请求、入口排队、账号等待、出口等待、上游生成和慢请求分布。
  • 可通过调用日志查看请求详情、错误码、上游原始诊断、图片结果和账号信息。

账号、导入和注册

  • 账号管理支持搜索、筛选、批量刷新、导出、编辑、分组、代理设置和异常账号处理。
  • 异常账号不再走自动/手动重登;鉴权失效按“自动移除异常账号”开关决定删除或保留异常状态。
  • 支持本地 CPA JSON、远程 CPA、Sub2API、access token 导入。
  • 远程 CPA / Sub2API 连接可在设置页维护,也可在账号管理里打开统一导入弹窗。
  • Sub2API 导入支持读取远程分组,按分组折叠、全组选中、单账号选择、按组导入和去重保存。
  • 注册账号支持临时邮箱、GPTMail、Outlook Token 邮箱池、Microsoft passwordless 验证和 plus alias 分裂。

代理、存储和运维

  • 代理优先级:账号个人代理 > 账号组代理/代理组 > 显式任务代理 > 默认代理 > 稳定代理运行时 > 直连。
  • 代理组支持多出口节点、节点图片并发、轮换间隔、健康展示和测试。
  • 备用出口可用于图片早期 TLS / 连接超时失败后的重试,默认关闭。
  • 支持本地图片存储、WebDAV、双写、图片索引、标签、下载、压缩和清理。
  • R2 备份可覆盖配置、账号、日志、图片索引、概览统计等关键数据。
  • 概览中心的调用趋势、成功率和模型统计独立滚动保留最近 30 天。

关键配置项

配置项 默认值 说明
image_stream_timeout_secs 300 图片上游 SSE / HTTP 流最长等待时间。
image_poll_timeout_secs 300 图片结果解析和轮询最长等待时间。
image_parallel_generation true 多图请求是否并行生成。
image_account_concurrency 3 单账号图片并发上限。
image_remove_conversation_after_result false 图片成功保存后尝试隐藏上游 ChatGPT 官网会话。
image_error_friendly_enabled false 开启后对图片错误返回友好文案;关闭时尽量保留原始错误。
auto_remove_invalid_accounts true 鉴权失效账号是否自动移除。
auto_remove_rate_limited_accounts false 远程确认图片额度耗尽后是否自动移除账号。
log_retention_days 30 调用日志自动清理天数。
proxy_runtime 关闭 稳定代理运行时和 Cloudflare clearance 配置。

状态说明

  • 发布变更以 CHANGELOG.md 为准。
  • 仓库只保留发布必要文件;被忽略的本地文档、测试记录和运行产物不作为发布内容。

效果展示

screenshot 1 screenshot 2
screenshot 3 screenshot 4
screenshot 5 screenshot 6

API

所有 AI 接口都需要请求头:

Authorization: Bearer <auth-key>

管理接口需要管理员登录态或管理员 Key。普通用户 Key 默认只开放对话画图相关能力。

接口速览

接口 方法 说明
/v1/models GET 返回当前模型列表。
/v1/chat/completions POST Chat Completions 兼容入口,支持文本、搜索和图片场景。
/v1/responses POST Responses 兼容入口,支持文本、搜索和图片工具调用。
/v1/messages POST Messages 兼容入口。
/v1/search POST ChatGPT 搜索兼容入口。
/v1/images/generations POST OpenAI Images 文生图兼容入口。
/v1/images/edits POST OpenAI Images 图生图 / 编辑兼容入口。
/v1/editable-file-tasks GET/POST PPT / PSD / 可编辑文件任务创建与查询。
/v1/ppt/generations POST PPT 生成任务快捷入口。
/v1/psd/generations POST PSD 生成任务快捷入口。
/files/{file_path} GET/HEAD 文件任务产物下载。
GET /v1/models
curl http://localhost:8000/v1/models \
  -H "Authorization: Bearer <auth-key>"

返回本地模型目录与上游实时模型合并后的列表。实际可用模型以接口返回为准。

POST /v1/chat/completions

文本 / 搜索示例:

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-5",
    "messages": [
      {"role": "user", "content": "联网搜索并总结今天的 AI 新闻"}
    ],
    "tools": [{"type": "web_search_preview"}],
    "reasoning_effort": "medium"
  }'

聊天生图示例:

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
  }'

常用字段:modelmessagesstreamtoolsweb_search_optionsreasoning_effortthinking_effortreasoning.effortn

POST /v1/responses
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"}],
    "reasoning_effort": "high"
  }'

支持 image_generationweb_searchweb_search_previewweb_search_preview_2025_03_11

POST /v1/search
curl http://localhost:8000/v1/search \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "prompt": "布偶猫性格特点是什么?"
  }'

返回搜索回答、引用来源和搜索结果结构;对话画图页会把官网式引用渲染为来源卡片。

POST /v1/images/generations

OpenAI 兼容图片生成接口,用于文生图。

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 图片模型,推荐 gpt-image-2 或按 /v1/models 返回值选择。
prompt 图片生成提示词。
n 生成数量,当前限制 1-4
size 可传官方尺寸字段,具体解析取决于上游能力。
response_format 默认兼容 b64_json,也会保存本地图片 URL 供日志和图库使用。
POST /v1/images/edits

OpenAI 兼容图片编辑接口,可上传图片文件,也可传图片链接 / base64 / data URL。

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"

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"}
    ],
    "n": 1
  }'

支持字段:modelpromptnimageimagesimage_urlmask

POST /v1/messages
curl http://localhost:8000/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "model": "gpt-5",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "写一段产品介绍"}
    ]
  }'
POST /v1/editable-file-tasks

统一创建 PPT / PSD 等可编辑文件任务:

curl http://localhost:8000/v1/editable-file-tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <auth-key>" \
  -d '{
    "kind": "ppt",
    "prompt": "做一份产品发布会 PPT"
  }'

查询任务:

curl "http://localhost:8000/v1/editable-file-tasks?task_id=<task_id>" \
  -H "Authorization: Bearer <auth-key>"

也可使用快捷入口:POST /v1/ppt/generationsPOST /v1/psd/generations

社区支持

学 AI , 上 L 站:LinuxDO

原版项目贡献者

Contributors

Star History

Star History Chart

About

ChatGPT官网接口纯协议的逆向实现,支持注册机维持号池额度,支持GPT-Image-2模型、文本模型,兼容OpenAI接口协议,在线批量生图/编辑图,号池管理,支持可编辑PPT/PSD文件逆向,支持导入CPA、sub2api号池 、支持接入Cherry Studio、New Api 等软件

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors