gcli2api / README.md
a3216's picture
sync: github -> hf space
c50496f
---
title: gcli2api
colorFrom: blue
colorTo: green
sdk: docker
app_port: 7861
pinned: false
---
# GeminiCLI to API
**灏?GeminiCLI 鍜?Antigravity 杞崲涓?OpenAI 銆丟EMINI 鍜?Claude API 鍏煎鎺ュ彛**
[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/)
[![License: CNC-1.0](https://img.shields.io/badge/License-CNC--1.0-red.svg)](LICENSE)
[![Docker](https://img.shields.io/badge/docker-available-blue.svg)](https://github.com/su-kaka/gcli2api/pkgs/container/gcli2api)
[English](docs/README_EN.md) | 涓枃 | [鏃ユ湰瑾瀅(docs/README_JA.md)
## 馃殌 蹇€熼儴缃?
[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/97VMEF?referralCode=sukaka)
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/su-kaka/gcli2api)
---
## 鈿狅笍 璁稿彲璇佸0鏄?
**鏈」鐩噰鐢?Cooperative Non-Commercial License (CNC-1.0)**
杩欐槸涓€涓弽鍟嗕笟鍖栫殑涓ユ牸寮€婧愬崗璁紝璇︽儏璇锋煡鐪?[LICENSE](LICENSE) 鏂囦欢銆?
### 鉁?鍏佽鐨勭敤閫旓細
- 涓汉瀛︿範銆佺爺绌躲€佹暀鑲茬敤閫?
- 闈炶惀鍒╃粍缁囦娇鐢?
- 寮€婧愰」鐩泦鎴愶紙闇€閬靛惊鐩稿悓鍗忚锛?
- 瀛︽湳鐮旂┒鍜岃鏂囧彂琛?
### 鉂?绂佹鐨勭敤閫旓細
- 浠讳綍褰㈠紡鐨勫晢涓氫娇鐢?
- 骞存敹鍏ヨ秴杩?00涓囩編鍏冪殑浼佷笟浣跨敤
- 椋庢姇鏀寔鎴栧叕寮€浜ゆ槗鐨勫叕鍙镐娇鐢?
- 鎻愪緵浠樿垂鏈嶅姟鎴栦骇鍝?
- 鍟嗕笟绔炰簤鐢ㄩ€?
## 鏍稿績鍔熻兘
### 馃攧 API 绔偣鍜屾牸寮忔敮鎸?
**澶氱鐐瑰鏍煎紡鏀寔**
- **OpenAI 鍏煎绔偣**锛歚/v1/chat/completions` 鍜?`/v1/models`
- 鏀寔鏍囧噯 OpenAI 鏍煎紡锛坢essages 缁撴瀯锛?
- 鏀寔 Gemini 鍘熺敓鏍煎紡锛坈ontents 缁撴瀯锛?
- 鑷姩鏍煎紡妫€娴嬪拰杞崲锛屾棤闇€鎵嬪姩鍒囨崲
- 鏀寔澶氭ā鎬佽緭鍏ワ紙鏂囨湰 + 鍥惧儚锛?
- **Gemini 鍘熺敓绔偣**锛歚/v1/models/{model}:generateContent` 鍜?`streamGenerateContent`
- 鏀寔瀹屾暣鐨?Gemini 鍘熺敓 API 瑙勮寖
- 澶氱璁よ瘉鏂瑰紡锛欱earer Token銆亁-goog-api-key 澶撮儴銆乁RL 鍙傛暟 key
- **Claude 鏍煎紡鍏煎**锛氬畬鏁存敮鎸?Claude API 鏍煎紡
- 绔偣锛歚/v1/messages`锛堥伒寰?Claude API 瑙勮寖锛?
- 鏀寔 Claude 鏍囧噯鐨?messages 鏍煎紡
- 鏀寔 system 鍙傛暟鍜?Claude 鐗规湁鍔熻兘
- 鑷姩杞崲涓哄悗绔敮鎸佺殑鏍煎紡
- **Antigravity API 鏀寔**锛氬悓鏃舵敮鎸?OpenAI銆丟emini 鍜?Claude 鏍煎紡
- OpenAI 鏍煎紡绔偣锛歚/antigravity/v1/chat/completions`
- Gemini 鏍煎紡绔偣锛歚/antigravity/v1/models/{model}:generateContent` 鍜?`streamGenerateContent`
- Claude 鏍煎紡绔偣锛歚/antigravity/v1/messages`
- 鏀寔鎵€鏈?Antigravity 妯″瀷锛圕laude銆丟emini 绛夛級
- 鑷姩妯″瀷鍚嶇О鏄犲皠鍜屾€濈淮妯″紡妫€娴?
### 馃攼 璁よ瘉鍜屽畨鍏ㄧ鐞?
**鐏垫椿鐨勫瘑鐮佺鐞?*
- **鍒嗙瀵嗙爜鏀寔**锛欰PI 瀵嗙爜锛堣亰澶╃鐐癸級鍜屾帶鍒堕潰鏉垮瘑鐮佸彲鐙珛璁剧疆
- **澶氱璁よ瘉鏂瑰紡**锛氭敮鎸?Authorization Bearer銆亁-goog-api-key 澶撮儴銆乁RL 鍙傛暟绛?
- **JWT Token 璁よ瘉**锛氭帶鍒堕潰鏉挎敮鎸?JWT 浠ょ墝璁よ瘉
- **鐢ㄦ埛閭鑾峰彇**锛氳嚜鍔ㄨ幏鍙栧拰鏄剧ず Google 璐︽埛閭鍦板潃
### 馃搳 鏅鸿兘鍑瘉绠$悊绯荤粺
**楂樼骇鍑瘉绠$悊**
- 澶氫釜 Google OAuth 鍑瘉鑷姩杞崲
- 閫氳繃鍐椾綑璁よ瘉澧炲己绋冲畾鎬?
- 璐熻浇鍧囪 涓庡苟鍙戣姹傛敮鎸?
- 鑷姩鏁呴殰妫€娴嬪拰鍑瘉绂佺敤
- 鍑瘉浣跨敤缁熻鍜岄厤棰濈鐞?
- 鏀寔鎵嬪姩鍚敤/绂佺敤鍑瘉鏂囦欢
- 鎵归噺鍑瘉鏂囦欢鎿嶄綔锛堝惎鐢ㄣ€佺鐢ㄣ€佸垹闄わ級
**鍑瘉鐘舵€佺洃鎺?*
- 瀹炴椂鍑瘉鍋ュ悍妫€鏌?
- 閿欒鐮佽拷韪紙429銆?03銆?00 绛夛級
- 鑷姩灏佺鏈哄埗锛堝彲閰嶇疆锛?
### 馃寠 娴佸紡浼犺緭鍜屽搷搴斿鐞?
**澶氱娴佸紡鏀寔**
- 鐪熸鐨勫疄鏃舵祦寮忓搷搴?
- 鍋囨祦寮忔ā寮忥紙鐢ㄤ簬鍏煎鎬э級
- 娴佸紡鎶楁埅鏂姛鑳斤紙闃叉鍥炵瓟琚埅鏂級
- 寮傛浠诲姟绠$悊鍜岃秴鏃跺鐞?
**鍝嶅簲浼樺寲**
- 鎬濈淮閾撅紙Thinking锛夊唴瀹瑰垎绂?
- 鎺ㄧ悊杩囩▼锛坮easoning_content锛夊鐞?
- 澶氳疆瀵硅瘽涓婁笅鏂囩鐞?
- 鍏煎鎬фā寮忥紙灏?system 娑堟伅杞崲涓?user 娑堟伅锛?
### 馃帥锔?Web 绠$悊鎺у埗鍙?
**鍏ㄥ姛鑳?Web 鐣岄潰**
- OAuth 璁よ瘉娴佺▼绠$悊锛堟敮鎸?GCLI 鍜?Antigravity 鍙屾ā寮忥級
- 鍑瘉鏂囦欢涓婁紶銆佷笅杞姐€佺鐞?
- 瀹炴椂鏃ュ織鏌ョ湅锛圵ebSocket锛?
- 绯荤粺閰嶇疆绠$悊
- 浣跨敤缁熻鍜岀洃鎺ч潰鏉?
- 绉诲姩绔€傞厤鐣岄潰
**鎵归噺鎿嶄綔鏀寔**
- ZIP 鏂囦欢鎵归噺涓婁紶鍑瘉锛圙CLI 鍜?Antigravity锛?
- 鎵归噺鍚敤/绂佺敤/鍒犻櫎鍑瘉
- 鎵归噺鑾峰彇鐢ㄦ埛閭
- 鎵归噺閰嶇疆绠$悊
- 缁熶竴鎵归噺涓婁紶鐣岄潰绠$悊鎵€鏈夊嚟璇佺被鍨?
### 馃搱 浣跨敤鐩戞帶
**瀹炴椂鐩戞帶**
- WebSocket 瀹炴椂鏃ュ織娴?
- 绯荤粺鐘舵€佺洃鎺?
- 鍑瘉鍋ュ悍鐘舵€?
### 馃敡 楂樼骇閰嶇疆鍜岃嚜瀹氫箟
**缃戠粶鍜屼唬鐞嗛厤缃?*
- HTTP/HTTPS 浠g悊鏀寔
- 浠g悊绔偣閰嶇疆锛圤Auth銆丟oogle APIs銆佸厓鏁版嵁鏈嶅姟锛?
- 瓒呮椂鍜岄噸璇曢厤缃?
- 缃戠粶閿欒澶勭悊鍜屾仮澶?
**鎬ц兘鍜岀ǔ瀹氭€ч厤缃?*
- 429 閿欒鑷姩閲嶈瘯锛堝彲閰嶇疆闂撮殧鍜屾鏁帮級
- 鎶楁埅鏂渶澶ч噸璇曟鏁?
**鏃ュ織鍜岃皟璇?*
- 澶氱骇鏃ュ織绯荤粺锛圖EBUG銆両NFO銆乄ARNING銆丒RROR锛?
- 鏃ュ織鏂囦欢绠$悊
- 瀹炴椂鏃ュ織娴?
- 鏃ュ織涓嬭浇鍜屾竻绌?
### 馃攧 鐜鍙橀噺鍜岄厤缃鐞?
**鐏垫椿鐨勯厤缃柟寮?*
- 鐜鍙橀噺閰嶇疆
- 鐑厤缃洿鏂帮紙閮ㄥ垎閰嶇疆椤癸級
- 閰嶇疆閿佸畾锛堢幆澧冨彉閲忎紭鍏堢骇锛?
## 鏀寔鐨勬ā鍨?
鎵€鏈夋ā鍨嬪潎鍏峰 1M 涓婁笅鏂囩獥鍙e閲忋€傛瘡涓嚟璇佹枃浠舵彁渚?1000 娆¤姹傞搴︺€?
### 馃 鍩虹妯″瀷
- `gemini-2.5-pro`
- `gemini-3-pro-preview`
- `gemini-3.1-pro-preview`
### 馃 鎬濈淮妯″瀷锛圱hinking Models锛?
- `gemini-2.5-pro-high`锛氭€濊€冩ā寮?
- `gemini-2.5-pro-low`锛氫綆鎬濊€冩ā寮?
- 鏀寔鑷畾涔夋€濊€冮绠楅厤缃?
- 鑷姩鍒嗙鎬濈淮鍐呭鍜屾渶缁堝洖绛?
### 馃攳 鎼滅储澧炲己妯″瀷
- `gemini-2.5-pro-search`锛氶泦鎴愭悳绱㈠姛鑳界殑妯″瀷
### 馃柤锔?鍥惧儚鐢熸垚妯″瀷锛圓ntigravity锛?
- `gemini-3.1-flash-image`锛氬熀纭€鍥惧儚鐢熸垚妯″瀷
- **鍒嗚鲸鐜囧悗缂€**锛?
- `-2k`锛?K 鍒嗚鲸鐜?
- `-4k`锛?K 楂樻竻鍒嗚鲸鐜?
- **姣斾緥鍚庣紑**锛?
- `-1x1`锛氭鏂瑰舰锛堝ご鍍忥級
- `-16x9`锛氭í灞忥紙鐢佃剳澹佺焊锛?
- `-9x16`锛氱珫灞忥紙鎵嬫満澹佺焊锛?
- `-21x9`锛氳秴瀹藉睆锛堝甫楸煎睆锛?
- `-4x3`锛氫紶缁熸樉绀哄櫒
- `-3x4`锛氱珫鐗堟捣鎶?
- **缁勫悎浣跨敤绀轰緥**锛?
- `gemini-3.1-flash-image-4k-16x9`锛?K 妯睆
- `gemini-3.1-flash-image-2k-9x16`锛?K 绔栧睆
- 涓嶆寚瀹氭瘮渚嬫椂锛孉PI 鑷姩鍐冲畾妯珫姣斾緥
### 馃寠 鐗规畩鍔熻兘鍙樹綋
- **鍋囨祦寮忔ā寮?*锛氬湪浠讳綍妯″瀷鍚嶇О鍚庢坊鍔?`-鍋囨祦寮廯 鍚庣紑
- 渚嬶細`gemini-2.5-pro-鍋囨祦寮廯
- 鐢ㄤ簬闇€瑕佹祦寮忓搷搴斾絾鏈嶅姟绔笉鏀寔鐪熸祦寮忕殑鍦烘櫙
- **娴佸紡鎶楁埅鏂ā寮?*锛氬湪妯″瀷鍚嶇О鍓嶆坊鍔?`娴佸紡鎶楁埅鏂?` 鍓嶇紑
- 渚嬶細`娴佸紡鎶楁埅鏂?gemini-2.5-pro`
- 鑷姩妫€娴嬪搷搴旀埅鏂苟閲嶈瘯锛岀‘淇濆畬鏁村洖绛?
### 馃敡 妯″瀷鍔熻兘鑷姩妫€娴?
- 绯荤粺鑷姩璇嗗埆妯″瀷鍚嶇О涓殑鍔熻兘鏍囪瘑
- 閫忔槑鍦板鐞嗗姛鑳芥ā寮忚浆鎹?
- 鏀寔鍔熻兘缁勫悎浣跨敤
---
## 瀹夎鎸囧崡
### Termux 鐜
**鍒濆瀹夎**
```bash
curl -o termux-install.sh "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/termux-install.sh" && chmod +x termux-install.sh && ./termux-install.sh
```
**閲嶅惎鏈嶅姟**
```bash
cd gcli2api
bash termux-start.sh
```
### Windows 鐜
**鍒濆瀹夎**
```powershell
iex (iwr "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/install.ps1" -UseBasicParsing).Content
```
**閲嶅惎鏈嶅姟**
鍙屽嚮鎵ц `start.bat`
### Linux 鐜
**鍒濆瀹夎**
```bash
curl -o install.sh "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/install.sh" && chmod +x install.sh && ./install.sh
```
**閲嶅惎鏈嶅姟**
```bash
cd gcli2api
bash start.sh
```
### macOS 鐜
**鍒濆瀹夎**
```bash
curl -o darwin-install.sh "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/darwin-install.sh" && chmod +x darwin-install.sh && ./darwin-install.sh
```
**閲嶅惎鏈嶅姟**
```bash
cd gcli2api
bash start.sh
```
### Docker 鐜
**Docker 杩愯鍛戒护**
```bash
# 浣跨敤閫氱敤瀵嗙爜
docker run -d --name gcli2api --network host -e PASSWORD=pwd -e PORT=7861 -v $(pwd)/data/creds:/app/creds ghcr.io/su-kaka/gcli2api:latest
# 浣跨敤鍒嗙瀵嗙爜
docker run -d --name gcli2api --network host -e API_PASSWORD=api_pwd -e PANEL_PASSWORD=panel_pwd -e PORT=7861 -v $(pwd)/data/creds:/app/creds ghcr.io/su-kaka/gcli2api:latest
```
**Docker Mac**
```bash
# 浣跨敤閫氱敤瀵嗙爜
docker run -d \
--name gcli2api \
-p 7861:7861 \
-p 8080:8080 \
-e PASSWORD=pwd \
-e PORT=7861 \
-v "$(pwd)/data/creds":/app/creds \
ghcr.io/su-kaka/gcli2api:latest
```
```bash
# 浣跨敤鍒嗙瀵嗙爜
docker run -d \
--name gcli2api \
-p 7861:7861 \
-p 8080:8080 \
-e API_PASSWORD=api_pwd \
-e PANEL_PASSWORD=panel_pwd \
-e PORT=7861 \
-v $(pwd)/data/creds:/app/creds \
ghcr.io/su-kaka/gcli2api:latest
```
**Docker Compose 杩愯鍛戒护**
1. 灏嗕互涓嬪唴瀹逛繚瀛樹负 `docker-compose.yml` 鏂囦欢锛?
```yaml
version: '3.8'
services:
gcli2api:
image: ghcr.io/su-kaka/gcli2api:latest
container_name: gcli2api
restart: unless-stopped
network_mode: host
environment:
# 浣跨敤閫氱敤瀵嗙爜锛堟帹鑽愮敤浜庣畝鍗曢儴缃诧級
- PASSWORD=pwd
- PORT=7861
# 鎴栦娇鐢ㄥ垎绂诲瘑鐮侊紙鎺ㄨ崘鐢ㄤ簬鐢熶骇鐜锛?
# - API_PASSWORD=your_api_password
# - PANEL_PASSWORD=your_panel_password
volumes:
- ./data/creds:/app/creds
healthcheck:
test: ["CMD-SHELL", "python -c \"import sys, urllib.request, os; port = os.environ.get('PORT', '7861'); req = urllib.request.Request(f'http://localhost:{port}/v1/models', headers={'Authorization': 'Bearer ' + os.environ.get('PASSWORD', 'pwd')}); sys.exit(0 if urllib.request.urlopen(req, timeout=5).getcode() == 200 else 1)\""]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
```
2. 鍚姩鏈嶅姟锛?
```bash
docker-compose up -d
```
---
## 閰嶇疆璇存槑
1. 璁块棶 `http://127.0.0.1:7861` 锛堥粯璁ょ鍙o紝鍙€氳繃 PORT 鐜鍙橀噺淇敼锛?
2. 瀹屾垚 OAuth 璁よ瘉娴佺▼锛堥粯璁ゅ瘑鐮侊細`pwd`锛屽彲閫氳繃鐜鍙橀噺淇敼锛?
- **GCLI 妯″紡**锛氱敤浜庤幏鍙?Google Cloud Gemini API 鍑瘉
- **Antigravity 妯″紡**锛氱敤浜庤幏鍙?Google Antigravity API 鍑瘉
3. 閰嶇疆瀹㈡埛绔細
**OpenAI 鍏煎瀹㈡埛绔細**
- **绔偣鍦板潃**锛歚http://127.0.0.1:7861/v1`
- **API 瀵嗛挜**锛歚pwd`锛堥粯璁ゅ€硷紝鍙€氳繃 API_PASSWORD 鎴?PASSWORD 鐜鍙橀噺淇敼锛?
**Gemini 鍘熺敓瀹㈡埛绔細**
- **绔偣鍦板潃**锛歚http://127.0.0.1:7861`
- **璁よ瘉鏂瑰紡**锛?
- `Authorization: Bearer your_api_password`
- `x-goog-api-key: your_api_password`
- URL 鍙傛暟锛歚?key=your_api_password`
### 馃専 鍙岃璇佹ā寮忔敮鎸?
**GCLI 璁よ瘉妯″紡**
- 鏍囧噯鐨?Google Cloud Gemini API 璁よ瘉
- 鏀寔 OAuth2.0 璁よ瘉娴佺▼
- 鑷姩鍚敤蹇呴渶鐨?Google Cloud API
**Antigravity 璁よ瘉妯″紡**
- Google Antigravity API 涓撶敤璁よ瘉
- 鐙珛鐨勫嚟璇佺鐞嗙郴缁?
- 鏀寔鎵归噺涓婁紶鍜岀鐞?
- 涓?GCLI 鍑瘉瀹屽叏闅旂
**缁熶竴绠$悊鐣岄潰**
- 鍦?鎵归噺涓婁紶"鏍囩椤典腑鍙竴娆℃€х鐞嗕袱绉嶅嚟璇?
- 涓婂崐閮ㄥ垎锛欸CLI 鍑瘉鎵归噺涓婁紶锛堣摑鑹蹭富棰橈級
- 涓嬪崐閮ㄥ垎锛欰ntigravity 鍑瘉鎵归噺涓婁紶锛堢豢鑹蹭富棰橈級
- 鍚勮嚜鐙珛鐨勫嚟璇佺鐞嗘爣绛鹃〉
## 馃捑 鏁版嵁瀛樺偍妯″紡
### 馃専 瀛樺偍鍚庣鏀寔
gcli2api 鏀寔涓ょ瀛樺偍鍚庣锛?*鏈湴 SQLite锛堥粯璁わ級** 鍜?**MongoDB锛堜簯绔垎甯冨紡瀛樺偍锛?*
### 馃搧 鏈湴 SQLite 瀛樺偍锛堥粯璁わ級
**榛樿瀛樺偍鏂瑰紡**
- 鏃犻渶閰嶇疆锛屽紑绠卞嵆鐢?
- 鏁版嵁瀛樺偍鍦ㄦ湰鍦?SQLite 鏁版嵁搴撲腑
- 閫傚悎鍗曟満閮ㄧ讲鍜屼釜浜轰娇鐢?
- 鑷姩鍒涘缓鍜岀鐞嗘暟鎹簱鏂囦欢
### 馃崈 MongoDB 浜戠瀛樺偍妯″紡
**浜戠鍒嗗竷寮忓瓨鍌ㄦ柟妗?*
褰撻渶瑕佸瀹炰緥閮ㄧ讲鎴栦簯绔瓨鍌ㄦ椂锛屽彲浠ュ惎鐢?MongoDB 瀛樺偍妯″紡銆?
### 鈿欙笍 鍚敤 MongoDB 妯″紡
**姝ラ 1: 閰嶇疆 MongoDB 杩炴帴**
```bash
# 鏈湴 MongoDB
export MONGODB_URI="mongodb://localhost:27017"
# MongoDB Atlas 浜戞湇鍔?
export MONGODB_URI="mongodb+srv://username:password@cluster.mongodb.net"
# 甯﹁璇佺殑 MongoDB
export MONGODB_URI="mongodb://admin:password@localhost:27017/admin"
# 鍙€夛細鑷畾涔夋暟鎹簱鍚嶇О锛堥粯璁? gcli2api锛?
export MONGODB_DATABASE="my_gcli_db"
```
**姝ラ 2: 鍚姩搴旂敤**
```bash
# 搴旂敤浼氳嚜鍔ㄦ娴?MongoDB 閰嶇疆骞朵娇鐢?MongoDB 瀛樺偍
python web.py
```
**Docker 鐜浣跨敤 MongoDB**
```bash
# 鍗曟満 MongoDB 閮ㄧ讲
docker run -d --name gcli2api \
-e MONGODB_URI="mongodb://mongodb:27017" \
-e API_PASSWORD=your_password \
--network your_network \
ghcr.io/su-kaka/gcli2api:latest
# 浣跨敤 MongoDB Atlas
docker run -d --name gcli2api \
-e MONGODB_URI="mongodb+srv://user:pass@cluster.mongodb.net/gcli2api" \
-e API_PASSWORD=your_password \
-p 7861:7861 \
ghcr.io/su-kaka/gcli2api:latest
```
**Docker Compose 绀轰緥**
```yaml
version: '3.8'
services:
mongodb:
image: mongo:7
container_name: gcli2api-mongodb
restart: unless-stopped
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: password123
volumes:
- mongodb_data:/data/db
ports:
- "27017:27017"
gcli2api:
image: ghcr.io/su-kaka/gcli2api:latest
container_name: gcli2api
restart: unless-stopped
depends_on:
- mongodb
environment:
- MONGODB_URI=mongodb://admin:password123@mongodb:27017/admin
- MONGODB_DATABASE=gcli2api
- API_PASSWORD=your_api_password
- PORT=7861
ports:
- "7861:7861"
volumes:
mongodb_data:
```
### 馃敡 楂樼骇閰嶇疆
**MongoDB 杩炴帴浼樺寲**
```bash
# 杩炴帴姹犲拰瓒呮椂閰嶇疆
export MONGODB_URI="mongodb://localhost:27017?maxPoolSize=10&serverSelectionTimeoutMS=5000"
# 鍓湰闆嗛厤缃?
export MONGODB_URI="mongodb://host1:27017,host2:27017,host3:27017/gcli2api?replicaSet=myReplicaSet"
# 璇诲啓鍒嗙閰嶇疆
export MONGODB_URI="mongodb://localhost:27017/gcli2api?readPreference=secondaryPreferred"
```
### 鐜鍙橀噺閰嶇疆
**鍩虹閰嶇疆**
- `PORT`: 鏈嶅姟绔彛锛堥粯璁わ細7861锛?
- `HOST`: 鏈嶅姟鍣ㄧ洃鍚湴鍧€锛堥粯璁わ細0.0.0.0锛?
**瀵嗙爜閰嶇疆**
- `API_PASSWORD`: 鑱婂ぉ API 璁块棶瀵嗙爜锛堥粯璁わ細缁ф壙 PASSWORD 鎴?pwd锛?
- `PANEL_PASSWORD`: 鎺у埗闈㈡澘璁块棶瀵嗙爜锛堥粯璁わ細缁ф壙 PASSWORD 鎴?pwd锛?
- `PASSWORD`: 閫氱敤瀵嗙爜锛岃缃悗瑕嗙洊涓婅堪涓や釜锛堥粯璁わ細pwd锛?
**鎬ц兘鍜岀ǔ瀹氭€ч厤缃?*
- `RETRY_429_ENABLED`: 鍚敤 429 閿欒鑷姩閲嶈瘯锛堥粯璁わ細true锛?
- `RETRY_429_MAX_RETRIES`: 429 閿欒鏈€澶ч噸璇曟鏁帮紙榛樿锛?锛?
- `RETRY_429_INTERVAL`: 429 閿欒閲嶈瘯闂撮殧锛岀锛堥粯璁わ細1.0锛?
- `ANTI_TRUNCATION_MAX_ATTEMPTS`: 鎶楁埅鏂渶澶ч噸璇曟鏁帮紙榛樿锛?锛?
**缃戠粶鍜屼唬鐞嗛厤缃?*
- `PROXY`: HTTP/HTTPS 浠g悊鍦板潃锛堟牸寮忥細`http://host:port`锛?
- `OAUTH_PROXY_URL`: OAuth 璁よ瘉浠g悊绔偣
- `GOOGLEAPIS_PROXY_URL`: Google APIs 浠g悊绔偣
- `METADATA_SERVICE_URL`: 鍏冩暟鎹湇鍔′唬鐞嗙鐐?
**鑷姩鍖栭厤缃?*
- `AUTO_BAN`: 鍚敤鍑瘉鑷姩灏佺锛堥粯璁わ細true锛?
- `AUTO_LOAD_ENV_CREDS`: 鍚姩鏃惰嚜鍔ㄥ姞杞界幆澧冨彉閲忓嚟璇侊紙榛樿锛歠alse锛?
**鍏煎鎬ч厤缃?*
- `COMPATIBILITY_MODE`: 鍚敤鍏煎鎬фā寮忥紝灏?system 娑堟伅杞负 user 娑堟伅锛堥粯璁わ細false锛?
**鏃ュ織閰嶇疆**
- `LOG_LEVEL`: 鏃ュ織绾у埆锛圖EBUG/INFO/WARNING/ERROR锛岄粯璁わ細INFO锛?
- `LOG_FILE`: 鏃ュ織鏂囦欢璺緞锛堥粯璁わ細log.txt锛?
**瀛樺偍閰嶇疆**
**SQLite 閰嶇疆锛堥粯璁わ級**
- 鏃犻渶閰嶇疆锛岃嚜鍔ㄤ娇鐢ㄦ湰鍦?SQLite 鏁版嵁搴?
- 鏁版嵁搴撴枃浠惰嚜鍔ㄥ垱寤哄湪椤圭洰鐩綍
**MongoDB 閰嶇疆锛堝彲閫変簯绔瓨鍌級**
- `MONGODB_URI`: MongoDB 杩炴帴瀛楃涓诧紙璁剧疆鍚庡惎鐢?MongoDB 妯″紡锛?
- `MONGODB_DATABASE`: MongoDB 鏁版嵁搴撳悕绉帮紙榛樿锛歡cli2api锛?
**Docker 浣跨敤绀轰緥**
```bash
# 浣跨敤閫氱敤瀵嗙爜
docker run -d --name gcli2api \
-e PASSWORD=mypassword \
-e PORT=7861 \
ghcr.io/su-kaka/gcli2api:latest
# 浣跨敤鍒嗙瀵嗙爜
docker run -d --name gcli2api \
-e API_PASSWORD=my_api_password \
-e PANEL_PASSWORD=my_panel_password \
-e PORT=7861 \
ghcr.io/su-kaka/gcli2api:latest
```
娉ㄦ剰锛氬綋璁剧疆浜嗗嚟璇佺幆澧冨彉閲忔椂锛岀郴缁熷皢浼樺厛浣跨敤鐜鍙橀噺涓殑鍑瘉锛屽拷鐣?`creds` 鐩綍涓殑鏂囦欢銆?
### API 浣跨敤鏂瑰紡
鏈湇鍔℃敮鎸佷笁濂楀畬鏁寸殑 API 绔偣锛?
#### 1. OpenAI 鍏煎绔偣锛圙CLI锛?
**绔偣锛?* `/v1/chat/completions`
**璁よ瘉锛?* `Authorization: Bearer your_api_password`
鏀寔涓ょ璇锋眰鏍煎紡锛屼細鑷姩妫€娴嬪苟澶勭悊锛?
**OpenAI 鏍煎紡锛?*
```json
{
"model": "gemini-2.5-pro",
"messages": [
{"role": "system", "content": "You are a helpful assistant"},
{"role": "user", "content": "Hello"}
],
"temperature": 0.7,
"stream": true
}
```
**Gemini 鍘熺敓鏍煎紡锛?*
```json
{
"model": "gemini-2.5-pro",
"contents": [
{"role": "user", "parts": [{"text": "Hello"}]}
],
"systemInstruction": {"parts": [{"text": "You are a helpful assistant"}]},
"generationConfig": {
"temperature": 0.7
}
}
```
#### 2. Gemini 鍘熺敓绔偣锛圙CLI锛?
**闈炴祦寮忕鐐癸細** `/v1/models/{model}:generateContent`
**娴佸紡绔偣锛?* `/v1/models/{model}:streamGenerateContent`
**妯″瀷鍒楄〃锛?* `/v1/models`
**璁よ瘉鏂瑰紡锛堜换閫変竴绉嶏級锛?*
- `Authorization: Bearer your_api_password`
- `x-goog-api-key: your_api_password`
- URL 鍙傛暟锛歚?key=your_api_password`
**璇锋眰绀轰緥锛?*
```bash
# 浣跨敤 x-goog-api-key 澶撮儴
curl -X POST "http://127.0.0.1:7861/v1/models/gemini-2.5-pro:generateContent" \
-H "x-goog-api-key: your_api_password" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"role": "user", "parts": [{"text": "Hello"}]}
]
}'
# 浣跨敤 URL 鍙傛暟
curl -X POST "http://127.0.0.1:7861/v1/models/gemini-2.5-pro:streamGenerateContent?key=your_api_password" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{"role": "user", "parts": [{"text": "Hello"}]}
]
}'
```
#### 3. Claude API 鏍煎紡绔偣
**绔偣锛?* `/v1/messages`
**璁よ瘉锛?* `x-api-key: your_api_password` 鎴?`Authorization: Bearer your_api_password`
**璇锋眰绀轰緥锛?*
```bash
curl -X POST "http://127.0.0.1:7861/v1/messages" \
-H "x-api-key: your_api_password" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-pro",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'
```
**鏀寔 system 鍙傛暟锛?*
```json
{
"model": "gemini-2.5-pro",
"max_tokens": 1024,
"system": "You are a helpful assistant",
"messages": [
{"role": "user", "content": "Hello"}
]
}
```
**璇存槑锛?*
- 瀹屽叏鍏煎 Claude API 鏍煎紡瑙勮寖
- 鑷姩杞崲涓?Gemini 鏍煎紡璋冪敤鍚庣
- 鏀寔 Claude 鐨勬墍鏈夋爣鍑嗗弬鏁?
- 鍝嶅簲鏍煎紡绗﹀悎 Claude API 瑙勮寖
## 馃搵 瀹屾暣 API 鍙傝€?
### Web 鎺у埗鍙?API
**璁よ瘉绔偣**
- `POST /auth/login` - 鐢ㄦ埛鐧诲綍
- `POST /auth/start` - 寮€濮?OAuth 璁よ瘉锛堟敮鎸?GCLI 鍜?Antigravity 妯″紡锛?
- `POST /auth/callback` - 澶勭悊 OAuth 鍥炶皟
- `POST /auth/callback-url` - 浠庡洖璋?URL 鐩存帴瀹屾垚璁よ瘉
- `GET /auth/status/{project_id}` - 妫€鏌ヨ璇佺姸鎬?
**鍑瘉绠$悊绔偣**锛堟敮鎸?`mode=geminicli` 鎴?`mode=antigravity` 鍙傛暟锛?
- `POST /creds/upload` - 鎵归噺涓婁紶鍑瘉鏂囦欢锛堟敮鎸?JSON 鍜?ZIP锛?
- `GET /creds/status` - 鑾峰彇鍑瘉鐘舵€佸垪琛紙鏀寔鍒嗛〉鍜岀瓫閫夛級
- `GET /creds/detail/{filename}` - 鑾峰彇鍗曚釜鍑瘉璇︽儏
- `POST /creds/action` - 鍗曚釜鍑瘉鎿嶄綔锛堝惎鐢?绂佺敤/鍒犻櫎锛?
- `POST /creds/batch-action` - 鎵归噺鍑瘉鎿嶄綔
- `GET /creds/download/{filename}` - 涓嬭浇鍗曚釜鍑瘉鏂囦欢
- `GET /creds/download-all` - 鎵撳寘涓嬭浇鎵€鏈夊嚟璇?
- `POST /creds/fetch-email/{filename}` - 鑾峰彇鐢ㄦ埛閭
- `POST /creds/refresh-all-emails` - 鎵归噺鍒锋柊鐢ㄦ埛閭
- `POST /creds/deduplicate-by-email` - 鎸夐偖绠卞幓閲嶅嚟璇?
- `POST /creds/verify-project/{filename}` - 妫€楠屽嚟璇?Project ID
- `GET /creds/quota/{filename}` - 鑾峰彇鍑瘉棰濆害淇℃伅锛堜粎 Antigravity锛?
**閰嶇疆绠$悊绔偣**
- `GET /config/get` - 鑾峰彇褰撳墠閰嶇疆
- `POST /config/save` - 淇濆瓨閰嶇疆
**鏃ュ織绠$悊绔偣**
- `POST /logs/clear` - 娓呯┖鏃ュ織
- `GET /logs/download` - 涓嬭浇鏃ュ織鏂囦欢
- `WebSocket /logs/stream` - 瀹炴椂鏃ュ織娴?
**鐗堟湰淇℃伅绔偣**
- `GET /version/info` - 鑾峰彇鐗堟湰淇℃伅锛堝彲閫?`check_update=true` 鍙傛暟妫€鏌ユ洿鏂帮級
### 鑱婂ぉ API 鍔熻兘鐗规€?
**澶氭ā鎬佹敮鎸?*
```json
{
"model": "gemini-2.5-pro",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "鎻忚堪杩欏紶鍥剧墖"},
{
"type": "image_url",
"image_url": {
"url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABA..."
}
}
]
}
]
}
```
**鎬濈淮妯″紡鏀寔**
```json
{
"model": "gemini-2.5-pro-maxthinking",
"messages": [
{"role": "user", "content": "澶嶆潅鏁板闂"}
]
}
```
鍝嶅簲灏嗗寘鍚垎绂荤殑鎬濈淮鍐呭锛?
```json
{
"choices": [{
"message": {
"role": "assistant",
"content": "鏈€缁堢瓟妗?,
"reasoning_content": "璇︾粏鐨勬€濊€冭繃绋?.."
}
}]
}
```
**娴佸紡鎶楁埅鏂娇鐢?*
```json
{
"model": "娴佸紡鎶楁埅鏂?gemini-2.5-pro",
"messages": [
{"role": "user", "content": "鍐欎竴绡囬暱鏂囩珷"}
],
"stream": true
}
```
**鍏煎鎬фā寮?*
```bash
# 鍚敤鍏煎鎬фā寮?
export COMPATIBILITY_MODE=true
```
姝ゆā寮忎笅锛屾墍鏈?`system` 娑堟伅浼氳浆鎹负 `user` 娑堟伅锛屾彁楂樹笌鏌愪簺瀹㈡埛绔殑鍏煎鎬с€?
---
## 馃挰 浜ゆ祦缇?
娆㈣繋鍔犲叆 QQ 缇や氦娴佽璁猴紒
**QQ 缇ゅ彿锛?083250744**
<img src="docs/qq缇?jpg" width="200" alt="QQ缇や簩缁寸爜">
---
## 璁稿彲璇佷笌鍏嶈矗澹版槑
鏈」鐩粎渚涘涔犲拰鐮旂┒鐢ㄩ€斻€備娇鐢ㄦ湰椤圭洰琛ㄧず鎮ㄥ悓鎰忥細
- 涓嶅皢鏈」鐩敤浜庝换浣曞晢涓氱敤閫?
- 鎵挎媴浣跨敤鏈」鐩殑鎵€鏈夐闄╁拰璐d换
- 閬靛畧鐩稿叧鐨勬湇鍔℃潯娆惧拰娉曞緥娉曡
椤圭洰浣滆€呭鍥犱娇鐢ㄦ湰椤圭洰鑰屼骇鐢熺殑浠讳綍鐩存帴鎴栭棿鎺ユ崯澶变笉鎵挎媴璐d换銆?