| --- |
| title: gcli2api |
| colorFrom: blue |
| colorTo: green |
| sdk: docker |
| app_port: 7861 |
| pinned: false |
| --- |
| # GeminiCLI to API |
|
|
| **灏?GeminiCLI 鍜?Antigravity 杞崲涓?OpenAI 銆丟EMINI 鍜?Claude API 鍏煎鎺ュ彛** |
|
|
| [](https://www.python.org/downloads/) |
| [](LICENSE) |
| [](https://github.com/su-kaka/gcli2api/pkgs/container/gcli2api) |
|
|
| [English](docs/README_EN.md) | 涓枃 | [鏃ユ湰瑾瀅(docs/README_JA.md) |
| |
| ## 馃殌 蹇€熼儴缃? |
| |
| [](https://zeabur.com/templates/97VMEF?referralCode=sukaka) |
| [](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换銆? |
|
|