File size: 6,199 Bytes
10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 2e9246b 10feaec 2e9246b 10feaec 2e9246b 10feaec 3e88acd 10feaec 4965144 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 10feaec 4965144 10feaec 3e88acd 10feaec 3e88acd 10feaec 3e88acd 2e9246b 3e88acd 2e9246b 3e88acd 2e9246b 3e88acd 10feaec 4965144 2e9246b 4965144 2e9246b 4965144 2e9246b 4965144 10feaec 3e88acd 10feaec 2e9246b 3e88acd 10feaec 3e88acd 10feaec | 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 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 | # Antigravity to OpenAI API 代理服务
将 Google Antigravity API 转换为 OpenAI 兼容格式的代理服务,支持流式响应、工具调用和多账号管理。
## 功能特性
- ✅ OpenAI API 兼容格式
- ✅ 流式和非流式响应
- ✅ 工具调用(Function Calling)支持
- ✅ 多账号自动轮换
- ✅ Token 自动刷新
- ✅ API Key 认证
- ✅ 思维链(Thinking)输出
- ✅ 图片输入支持(Base64 编码)
## 环境要求
- Node.js >= 18.0.0
## 快速开始
### 1. 安装依赖
```bash
npm install
```
### 2. 配置环境变量
复制 `.env.example` 为 `.env` 并编辑配置:
```bash
cp .env.example .env
```
编辑 `.env` 文件配置服务器和 API 参数:
```env
PORT=8045
HOST=0.0.0.0
API_KEY=sk-text
```
### 3. 登录获取 Token
```bash
npm run login
```
浏览器会自动打开 Google 授权页面,授权后 Token 会保存到 `data/accounts.json`。
### 4. 启动服务
```bash
npm start
```
服务将在 `http://localhost:8045` 启动。
## API 使用
### 获取模型列表
```bash
curl http://localhost:8045/v1/models \
-H "Authorization: Bearer sk-text"
```
### 聊天补全(流式)
```bash
curl http://localhost:8045/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-text" \
-d '{
"model": "gemini-2.0-flash-exp",
"messages": [{"role": "user", "content": "你好"}],
"stream": true
}'
```
### 聊天补全(非流式)
```bash
curl http://localhost:8045/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-text" \
-d '{
"model": "gemini-2.0-flash-exp",
"messages": [{"role": "user", "content": "你好"}],
"stream": false
}'
```
### 工具调用示例
```bash
curl http://localhost:8045/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-text" \
-d '{
"model": "gemini-2.0-flash-exp",
"messages": [{"role": "user", "content": "北京天气怎么样"}],
"tools": [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取天气信息",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "城市名称"}
}
}
}
}]
}'
```
### 图片输入示例
支持 Base64 编码的图片输入,兼容 OpenAI 的多模态格式:
```bash
curl http://localhost:8045/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-text" \
-d '{
"model": "gemini-2.0-flash-exp",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "这张图片里有什么?"},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
}
}
]
}],
"stream": true
}'
```
支持的图片格式:
- JPEG/JPG (`data:image/jpeg;base64,...`)
- PNG (`data:image/png;base64,...`)
- GIF (`data:image/gif;base64,...`)
- WebP (`data:image/webp;base64,...`)
## 多账号管理
`data/accounts.json` 支持多个账号,服务会自动轮换使用:
```json
[
{
"access_token": "ya29.xxx",
"refresh_token": "1//xxx",
"expires_in": 3599,
"timestamp": 1234567890000,
"enable": true
},
{
"access_token": "ya29.yyy",
"refresh_token": "1//yyy",
"expires_in": 3599,
"timestamp": 1234567890000,
"enable": true
}
]
```
- `enable: false` 可禁用某个账号
- Token 过期会自动刷新
- 刷新失败(403)会自动禁用并切换下一个账号
## 配置说明
### 环境变量 (.env)
| 环境变量 | 说明 | 默认值 |
|--------|------|--------|
| `PORT` | 服务端口 | 8045 |
| `HOST` | 监听地址 | 127.0.0.1 |
| `API_KEY` | API 认证密钥 | - |
| `MAX_REQUEST_SIZE` | 最大请求体大小 | 50mb |
| `DEFAULT_TEMPERATURE` | 默认温度参数 | 1 |
| `DEFAULT_TOP_P` | 默认 top_p | 0.85 |
| `DEFAULT_TOP_K` | 默认 top_k | 50 |
| `DEFAULT_MAX_TOKENS` | 默认最大 token 数 | 8096 |
| `USE_NATIVE_FETCH` | 使用原生 axios | false |
| `TIMEOUT` | 请求超时时间(毫秒) | 30000 |
| `PROXY` | 代理地址 | - |
| `SYSTEM_INSTRUCTION` | 系统提示词 | - |
完整配置示例请参考 `.env.example` 文件。
## 开发命令
```bash
# 启动服务
npm start
# 开发模式(自动重启)
npm run dev
# 登录获取 Token
npm run login
```
## 项目结构
```
.
├── data/
│ └── accounts.json # Token 存储(自动生成)
├── scripts/
│ ├── oauth-server.js # OAuth 登录服务
│ └── refresh-tokens.js # Token 刷新脚本
├── src/
│ ├── api/
│ │ └── client.js # API 调用逻辑
│ ├── auth/
│ │ └── token_manager.js # Token 管理
│ ├── bin/
│ │ ├── antigravity_requester_android_arm64 # Android ARM64 TLS 请求器
│ │ ├── antigravity_requester_linux_amd64 # Linux AMD64 TLS 请求器
│ │ └── antigravity_requester_windows_amd64.exe # Windows AMD64 TLS 请求器
│ ├── config/
│ │ └── config.js # 配置加载
│ ├── server/
│ │ └── index.js # 主服务器
│ ├── utils/
│ │ ├── idGenerator.js # ID 生成器
│ │ ├── logger.js # 日志模块
│ │ └── utils.js # 工具函数
│ └── AntigravityRequester.js # TLS 指纹请求器封装
├── test/
│ ├── test-request.js # 请求测试
│ └── test-transform.js # 转换测试
├── .env # 环境变量配置
├── .env.example # 环境变量配置示例
└── package.json # 项目配置
```
## 注意事项
1. 首次使用需要复制 `.env.example` 为 `.env` 并配置
2. 运行 `npm run login` 获取 Token
3. `.env` 和 `data/accounts.json` 包含敏感信息,请勿泄露
4. 支持多账号轮换,提高可用性
5. Token 会自动刷新,无需手动维护
## License
MIT
|