wwforonce commited on
Commit
da7af2a
·
1 Parent(s): 4e39dee

add gemini-balance

Browse files
Files changed (3) hide show
  1. Caddyfile +3 -1
  2. Dockerfile +1 -1
  3. run.sh +107 -0
Caddyfile CHANGED
@@ -2,7 +2,9 @@
2
  handle_path /8085/* {
3
  reverse_proxy localhost:8085
4
  }
5
- # Serve your API, stripping the /api prefix
 
 
6
  reverse_proxy localhost:3000
7
 
8
  }
 
2
  handle_path /8085/* {
3
  reverse_proxy localhost:8085
4
  }
5
+ handle_path /gemini-api/* {
6
+ reverse_proxy localhost:8000
7
+ }
8
  reverse_proxy localhost:3000
9
 
10
  }
Dockerfile CHANGED
@@ -1,7 +1,7 @@
1
  FROM node:22
2
 
3
  # Install packages
4
- RUN apt-get update && apt-get install -y git curl wget jq
5
 
6
 
7
  COPY ./run.sh /run.sh
 
1
  FROM node:22
2
 
3
  # Install packages
4
+ RUN apt-get update && apt-get install -y git curl wget jq python3
5
 
6
 
7
  COPY ./run.sh /run.sh
run.sh CHANGED
@@ -8,6 +8,15 @@ tar -xzf /tmp/caddy.tar.gz -C /tmp/caddy
8
 
9
  # Start the Node.js application
10
  git clone https://github.com/waxz/Gemini-CLI-2-API.git /tmp/Gemini-CLI-2-API
 
 
 
 
 
 
 
 
 
11
  cat << EOF | tee /tmp/Gemini-CLI-2-API/config.json
12
  {
13
  "REQUIRED_API_KEY": "${REQUIRED_API_KEY:-}",
@@ -32,7 +41,105 @@ cat << EOF | tee /tmp/gemini_oauth_creds.json
32
  "expiry_date": 1753880406425
33
  }
34
  EOF
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  cd /tmp/Gemini-CLI-2-API && npm install && node src/api-server.js &
 
 
36
  /tmp/caddy/caddy run --config /Caddyfile &
37
  MAIN_PID=$!
38
 
 
8
 
9
  # Start the Node.js application
10
  git clone https://github.com/waxz/Gemini-CLI-2-API.git /tmp/Gemini-CLI-2-API
11
+
12
+ git clone https://github.com/snailyp/gemini-balance.git /tmp/gemini-balance
13
+
14
+ curl -LsSf https://astral.sh/uv/install.sh | sh
15
+ uv venv /tmp/.venv
16
+ source /tmp/.venv/bin/activate
17
+ uv pip install -r /tmp/gemini-balance/requirements.txt
18
+
19
+
20
  cat << EOF | tee /tmp/Gemini-CLI-2-API/config.json
21
  {
22
  "REQUIRED_API_KEY": "${REQUIRED_API_KEY:-}",
 
41
  "expiry_date": 1753880406425
42
  }
43
  EOF
44
+ cat << EOF | tee /tmp/gemini-balance/.env
45
+ # 数据库配置
46
+ DATABASE_TYPE=mysql
47
+ #SQLITE_DATABASE=default_db
48
+ MYSQL_HOST=${MYSQL_HOST}
49
+ #MYSQL_SOCKET=/run/mysqld/mysqld.sock
50
+ MYSQL_PORT=${MYSQL_PORT}
51
+ MYSQL_USER=${MYSQL_USER}
52
+ MYSQL_PASSWORD=${MYSQL_PASSWORD}
53
+ MYSQL_DATABASE=${MYSQL_DATABASE}
54
+ API_KEYS=["${GEMINI_API_KEYS}"]
55
+ ALLOWED_TOKENS=["${AUTH_TOKEN}"]
56
+ AUTH_TOKEN=${AUTH_TOKEN}
57
+ # For Vertex AI Platform API Keys
58
+ VERTEX_API_KEYS=["AQ.Abxxxxxxxxxxxxxxxxxxx"]
59
+ # For Vertex AI Platform Express API Base URL
60
+ VERTEX_EXPRESS_BASE_URL=https://aiplatform.googleapis.com/v1beta1/publishers/google
61
+ TEST_MODEL=gemini-1.5-flash
62
+ THINKING_MODELS=["gemini-2.5-flash-preview-04-17"]
63
+ THINKING_BUDGET_MAP={"gemini-2.5-flash-preview-04-17": 4000}
64
+ IMAGE_MODELS=["gemini-2.0-flash-exp"]
65
+ SEARCH_MODELS=["gemini-2.0-flash-exp","gemini-2.0-pro-exp"]
66
+ FILTERED_MODELS=["gemini-1.0-pro-vision-latest", "gemini-pro-vision", "chat-bison-001", "text-bison-001", "embedding-gecko-001"]
67
+ # 是否启用网址上下文,默认启用
68
+ URL_CONTEXT_ENABLED=false
69
+ URL_CONTEXT_MODELS=["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash","gemini-2.0-flash-live-001"]
70
+ TOOLS_CODE_EXECUTION_ENABLED=false
71
+ SHOW_SEARCH_LINK=true
72
+ SHOW_THINKING_PROCESS=true
73
+ BASE_URL=https://generativelanguage.googleapis.com/v1beta
74
+ MAX_FAILURES=10
75
+ MAX_RETRIES=3
76
+ CHECK_INTERVAL_HOURS=1
77
+ TIMEZONE=Asia/Shanghai
78
+ # 请求超时时间(秒)
79
+ TIME_OUT=300
80
+ # 代理服务器配置 (支持 http 和 socks5)
81
+ # 示例: PROXIES=["http://user:pass@host:port", "socks5://host:port"]
82
+ PROXIES=[]
83
+ # 对同一个API_KEY使用代理列表中固定的IP策略
84
+ PROXIES_USE_CONSISTENCY_HASH_BY_API_KEY=true
85
+ #########################image_generate 相关配置###########################
86
+ PAID_KEY=AIzaSyxxxxxxxxxxxxxxxxxxx
87
+ CREATE_IMAGE_MODEL=imagen-3.0-generate-002
88
+ UPLOAD_PROVIDER=smms
89
+ SMMS_SECRET_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
90
+ PICGO_API_KEY=xxxx
91
+ CLOUDFLARE_IMGBED_URL=https://xxxxxxx.pages.dev/upload
92
+ CLOUDFLARE_IMGBED_AUTH_CODE=xxxxxxxxx
93
+ CLOUDFLARE_IMGBED_UPLOAD_FOLDER=
94
+ ##########################################################################
95
+ #########################stream_optimizer 相关配置########################
96
+ STREAM_OPTIMIZER_ENABLED=false
97
+ STREAM_MIN_DELAY=0.016
98
+ STREAM_MAX_DELAY=0.024
99
+ STREAM_SHORT_TEXT_THRESHOLD=10
100
+ STREAM_LONG_TEXT_THRESHOLD=50
101
+ STREAM_CHUNK_SIZE=5
102
+ ##########################################################################
103
+ ######################### 日志配置 #######################################
104
+ # 日志级别 (debug, info, warning, error, critical),默认为 info
105
+ LOG_LEVEL=info
106
+ # 是否开启自动删除错误日志
107
+ AUTO_DELETE_ERROR_LOGS_ENABLED=true
108
+ # 自动删除多少天前的错误日志 (1, 7, 30)
109
+ AUTO_DELETE_ERROR_LOGS_DAYS=7
110
+ # 是否开启自动删除请求日志
111
+ AUTO_DELETE_REQUEST_LOGS_ENABLED=false
112
+ # 自动删除多少天前的请求日志 (1, 7, 30)
113
+ AUTO_DELETE_REQUEST_LOGS_DAYS=30
114
+ ##########################################################################
115
+
116
+ # 假流式配置 (Fake Streaming Configuration)
117
+ # 是否启用假流式输出
118
+ FAKE_STREAM_ENABLED=True
119
+ # 假流式发送空数据的间隔时间(秒)
120
+ FAKE_STREAM_EMPTY_DATA_INTERVAL_SECONDS=5
121
+
122
+ # 安全设置 (JSON 字符串格式)
123
+ # 注意:这里的示例值可能需要根据实际模型支持情况调整
124
+ SAFETY_SETTINGS=[{"category": "HARM_CATEGORY_HARASSMENT", "threshold": "OFF"}, {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "OFF"}, {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "OFF"}, {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "OFF"}, {"category": "HARM_CATEGORY_CIVIC_INTEGRITY", "threshold": "BLOCK_NONE"}]
125
+ URL_NORMALIZATION_ENABLED=false
126
+ # tts配置
127
+ TTS_MODEL=gemini-2.5-flash-preview-tts
128
+ TTS_VOICE_NAME=Zephyr
129
+ TTS_SPEED=normal
130
+ #########################Files API 相关配置########################
131
+ # 是否启用文件过期自动清理
132
+ FILES_CLEANUP_ENABLED=true
133
+ # 文件过期清理间隔(小时)
134
+ FILES_CLEANUP_INTERVAL_HOURS=1
135
+ # 是否启用用户文件隔离(每个用户只能看到自己上传的文件)
136
+ FILES_USER_ISOLATION_ENABLED=true
137
+ ##########################################################################
138
+ EOF
139
+
140
  cd /tmp/Gemini-CLI-2-API && npm install && node src/api-server.js &
141
+ cd /tmp/gemini-balance && uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload &
142
+
143
  /tmp/caddy/caddy run --config /Caddyfile &
144
  MAIN_PID=$!
145