File size: 7,898 Bytes
e519351 6bc074c e519351 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | ---
title: aurora
emoji: 🚀
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false
---
# 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 通过 `<tool_call>` 文本协议模拟该能力,支持 `tools`/`tool_choice` 字段,自动注入 system prompt 并解析模型输出中的 `<tool_call>` 块为标准 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) |