# AURORA [English README](https://github.com/aurora-develop/aurora/blob/main/README_EN.md) Aurora 将 ChatGPT Web 后端能力转换为类 OpenAI API,支持聊天、Responses、文件问答、图片生成、图片变体、语音转文字、文字转语音、模型列表,以及通过 `refresh_token` / `session_token` 获取可用的 ChatGPT `access_token`。 ## 接口文档 完整接口、鉴权、token 换取和 curl 示例请查看:[API.md](API.md) ## 功能 - OpenAI 风格的 `/v1/chat/completions`,支持流式和非流式返回,支持 `temperature`/`top_p`/`max_tokens`/`stop`/`reasoning_effort`/`response_format`/`stream_options.include_usage` 等参数。 - 工具调用 (Tool Calling) 模拟 — ChatGPT Web 不原生支持 function calling,Aurora 通过 `` 文本协议模拟该能力,支持 `tools`/`tool_choice` 字段,自动注入 system prompt 并解析模型输出中的 `` 块为标准 OpenAI 格式的 `tool_calls`。 - OpenAI 风格的 `/v1/responses`,支持字符串输入、消息数组、`instructions`、流式事件,以及 `reasoning.effort`/`text.query.format`/`temperature` 等参数。 - `/v1/files` 文件上传,上传后可在聊天或 Responses 请求中携带 `file_id` 做文件问答。 - `/v1/images/generations` 图片生成,模型列表包含 `gpt-image-2`,支持 SSE 流式返回,支持 URL 或 `b64_json`。 - `/v1/images/edits` 改图 + `/v1/images/variations` 图生图(变体)。 - `/v1/audio/speech` 语音合成(TTS),兼容常见 OpenAI voice 和输出格式。 - `/v1/audio/transcriptions` 语音转文字,支持 mp3/wav/m4a/ogg/flac/webm 格式。 - `/v1/audio/translations` 音频翻译为英文。 - `/v1/models` 模型列表接口。 - `/auth/refresh`:传入 OpenAI `refresh_token` 获取 `access_token`。 - `/auth/session`:传入 ChatGPT `session_token` 获取新的 `session_token` 和 `access_token`。 - `/backend-api/conversation` 原始 ChatGPT conversation 请求透传。 - 支持 `access_tokens.txt` 账号池、`free_tokens.txt` 免费 UUID 池、`refresh_tokens.txt` OAuth 刷新令牌池、`session_tokens.txt` 会话令牌池、自动生成免费账号、代理池、TLS。 - **完整账号管理体系**:每个账号拥有独立的 TLS Client、代理 IP、浏览器指纹和 WSS 连接,支持三类型账号(TypeNoAuth / TypeFree / TypePUID),六种生命周期状态。 - **Token 去重**:通过解析 JWT payload 中的 `chatgpt_account_id` 去重,同一 ChatGPT 账号多次出现不会重复占用池位置。 - **Capability 能力控制**:10 种按账号类型控制的能力(Chat / Responses / ToolCalling / ImageGenerate / ImageEdit / ImageVariation / TTS / Transcribe / FileUpload / WebSocket),noauth 仅可访问 chat/responses,其余需登录。 - **后台健康检查**:每 10 分钟自动续期已过期的 `session_token` / `refresh_token` 账号。 - **外部 access_token 支持**:`ENABLE_EXTERNAL_TOKEN=true` 时接受外部传入的 ChatGPT access_token,自动创建隔离的临时账号(含独立 TLS Client + UA + 代理 + 浏览器指纹),10 分钟无请求自动释放。 ## 部署 ### 编译部署 ```bash git clone https://github.com/aurora-develop/aurora cd aurora go build -o aurora chmod +x ./aurora ./aurora ``` ### Docker 部署 ```bash docker run -d \ --name aurora \ -p 8080:8080 \ -v $(pwd)/access_tokens.txt:/access_tokens.txt:ro \ ghcr.io/aurora-develop/aurora:latest ``` > 准备 `access_tokens.txt` 到当前目录(一行一个 access_token),通过 `-v` 挂载进容器。其他文件同理:`-v $(pwd)/free_tokens.txt:/free_tokens.txt:ro`、`-v $(pwd)/proxies.txt:/proxies.txt:ro`。 ### Docker Compose 部署 ```bash mkdir aurora cd aurora # 1. 准备好 access_tokens.txt(每行一个 token) # 2. 将仓库中的 docker-compose.yml 放到当前目录 # 3. docker-compose.yml 已包含 ./access_tokens.txt 的挂载,按需取消注释 free_tokens.txt 或 proxies.txt docker-compose up -d ``` ## 配置 默认情况无需额外配置。可以通过 `.env`、系统环境变量或同名部署平台环境变量配置: ```env # 服务监听 SERVER_HOST=0.0.0.0 SERVER_PORT=8080 PORT=8080 # 鉴权 Authorization=your_authorization # 免费账号 FREE_ACCOUNTS=true FREE_ACCOUNTS_NUM=1024 # HTTPS TLS_CERT=path_to_your_tls_cert TLS_KEY=path_to_your_tls_key # 代理 PROXY_URL=your_proxy_url http_proxy= # 转发代理(可选,给 backend-api / files 端点单独配置) API_REVERSE_PROXY= FILES_REVERSE_PROXY= # 自定义 BASE_URL(默认 https://chatgpt.com/backend-api) BASE_URL= # 流式响应开关(设为 false 时 Chat Completions 强制返回完整响应) STREAM_MODE=true # 是否在请求中保留历史上下文(设为 true 启用) ENABLE_HISTORY=false # 工具调用模拟 TOOL_CALLING_ENABLED=true REFUSAL_RETRIES=3 # DEBUG_TOOL_LOG=tool_debug.log # 外部 access_token(接受外部传入的 ChatGPT access_token) ENABLE_EXTERNAL_TOKEN=true ``` 说明: - `SERVER_HOST` / `SERVER_PORT`:服务监听地址和端口。`PORT` 为 `SERVER_PORT` 的 fallback。 - `Authorization`:服务访问 key。配置后,请求头需携带 `Authorization: Bearer your_authorization`。 - `FREE_ACCOUNTS`:是否自动生成免费 UUID 账号,默认关闭。 - `FREE_ACCOUNTS_NUM`:自动生成免费 UUID 账号数量,默认 1024。 - `TLS_CERT` / `TLS_KEY`:同时配置时启用 HTTPS。 - `PROXY_URL`:代理池地址。`http_proxy` 为备用代理地址。 - `API_REVERSE_PROXY` / `FILES_REVERSE_PROXY`:分别给 `/backend-api/*` 和 `/files` 端点单独配置转发代理,不配置时走默认代理。 - `BASE_URL`:自定义上游 ChatGPT API 地址,默认 `https://chatgpt.com/backend-api`。 - `STREAM_MODE`:设为 `false` 时强制关闭 Chat Completions 流式返回,默认 `true`。 - `ENABLE_HISTORY`:设为 `true` 时在请求中保留对话历史上下文。 - `TOOL_CALLING_ENABLED`:设为 `false` 时忽略请求中的 `tools` 字段,关闭工具调用模拟。 - `REFUSAL_RETRIES`:模型陷入 "sandbox 拒绝" 循环时的最大重试次数,默认 `3`。 - `ENABLE_EXTERNAL_TOKEN`:设为 `true` 时接受外部传入的 ChatGPT access_token,自动创建隔离的临时账号(含独立 TLS Client、UA、代理、指纹),10 分钟无请求自动释放。默认 `true`。 - `DEBUG_TOOL_LOG`:设为文件路径时,将每次工具解析的详细 trace 写入该文件(调试用)。 本地账号文件: - `access_tokens.txt`:每行一个 ChatGPT `access_token`,用于需要登录账号的能力。 - `free_tokens.txt`:每行一个 UUID device id,作为免费账号池。 - `refresh_tokens.txt`:每行一个 OpenAI `refresh_token`(支持 `token:team_id` 格式),启动时自动交换为 `access_token`,过期后自动续期。 - `session_tokens.txt`:每行一个 ChatGPT `session_token`(支持 `token:team_id` 格式),启动时自动交换为 `access_token`,过期后自动续期。 - `proxies.txt`:每行一个代理 URL(需要包含端口),与 `PROXY_URL` 一起组成代理池。 ## 注意事项 - 图片、TTS、文件能力依赖登录态 access token,免费 UUID 账号不可用。 - `STREAM_MODE=false` 时会强制关闭 Chat Completions 流式返回。 - 本项目是 ChatGPT Web 能力转换服务,接口形状尽量兼容 OpenAI API,但并非 OpenAI 官方服务。 ## 鸣谢 感谢各位大佬的 PR 支持。 ## 参考项目 - [ChatGPT-to-API](https://github.com/xqdoo00o/ChatGPT-to-API) - [chat2api](https://github.com/aurorax-neo/chat2api) ## License MIT License ## 友链 - [linux.do](https://linux.do/) - [xiaozhou26](https://github.com/xiaozhou26) - [aurorax-neo](https://github.com/aurorax-neo)