javaeeduke commited on
Commit
c02b5c1
ยท
verified ยท
1 Parent(s): 493506d

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +17 -20
main.py CHANGED
@@ -21,7 +21,6 @@ app.add_middleware(
21
  # ่ฏปๅ–ๅŽŸ้กน็›ฎๅ›บๅฎšๅ‘ฝๅ็š„ Secrets
22
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
23
 
24
- # ๅŽŸ้กน็›ฎ็š„ Provider Key ๆ˜ ๅฐ„่กจ
25
  PROVIDER_MAP = {
26
  "GOOGLE_API_KEY": "google",
27
  "GROQ_API_KEY": "groq",
@@ -38,7 +37,6 @@ PROVIDER_MAP = {
38
  "ZHIPU_API_KEY": "zhipu",
39
  }
40
 
41
- # Provider ๅฏนๅบ”็š„ base_url ๅ’Œๆ”ฏๆŒ็š„ๆจกๅž‹
42
  PROVIDER_CONFIG = {
43
  "google": {
44
  "base_url": "https://generativelanguage.googleapis.com/v1beta/openai",
@@ -133,19 +131,14 @@ PROVIDER_CONFIG = {
133
 
134
 
135
  def load_config():
136
- """ไปŽ็Žฏๅขƒๅ˜้‡่ฏปๅ–ๆ‰€ๆœ‰้…็ฝฎ"""
137
-
138
- # โ”€โ”€ ่ฏปๅ–็”จๆˆท API Keys๏ผˆ็”จไบŽ้‰ดๆƒ๏ผ‰ โ”€โ”€
139
  raw_keys = os.getenv("API_KEYS", "")
140
  api_keys = set(k.strip() for k in raw_keys.split(",") if k.strip())
141
 
142
- # โ”€โ”€ ่ฏปๅ– Provider Keys โ”€โ”€
143
  providers = {}
144
  for env_name, provider_name in PROVIDER_MAP.items():
145
  key_value = os.getenv(env_name, "").strip()
146
  if not key_value:
147
- continue # ๆฒก้…็ฝฎ่ฏฅ Provider๏ผŒ่ทณ่ฟ‡
148
-
149
  cfg = PROVIDER_CONFIG.get(provider_name, {})
150
  providers[provider_name] = {
151
  "api_key": key_value,
@@ -156,7 +149,6 @@ def load_config():
156
 
157
  logger.info(f"โœ… ๅŠ ่ฝฝไบ† {len(api_keys)} ไธช API Key")
158
  logger.info(f"โœ… ๅŠ ่ฝฝไบ† {len(providers)} ไธช Provider: {list(providers.keys())}")
159
-
160
  return api_keys, providers
161
 
162
 
@@ -173,19 +165,15 @@ def verify_api_key(authorization: str = Header(...)):
173
  return token
174
 
175
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
176
- # ่ทฏ็”ฑ
177
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
178
 
179
- @app.get("/health")
180
- async def health():
181
- return {
182
- "status": "ok",
183
- "keys": len(API_KEYS),
184
- "providers": list(PROVIDERS.keys()),
185
- }
186
 
187
 
188
- @app.get("/v1/models")
189
  async def list_models(_: str = Depends(verify_api_key)):
190
  data = []
191
  for p_cfg in PROVIDERS.values():
@@ -194,7 +182,7 @@ async def list_models(_: str = Depends(verify_api_key)):
194
  return {"object": "list", "data": data}
195
 
196
 
197
- @app.post("/v1/chat/completions")
198
  async def chat_completions(
199
  body: dict,
200
  _: str = Depends(verify_api_key)
@@ -222,9 +210,18 @@ async def chat_completions(
222
  return resp.json()
223
 
224
 
 
 
 
 
 
225
  @app.get("/health")
226
  async def health():
227
- return {"status": "ok"}
 
 
 
 
228
 
229
 
230
  if __name__ == "__main__":
 
21
  # ่ฏปๅ–ๅŽŸ้กน็›ฎๅ›บๅฎšๅ‘ฝๅ็š„ Secrets
22
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
23
 
 
24
  PROVIDER_MAP = {
25
  "GOOGLE_API_KEY": "google",
26
  "GROQ_API_KEY": "groq",
 
37
  "ZHIPU_API_KEY": "zhipu",
38
  }
39
 
 
40
  PROVIDER_CONFIG = {
41
  "google": {
42
  "base_url": "https://generativelanguage.googleapis.com/v1beta/openai",
 
131
 
132
 
133
  def load_config():
 
 
 
134
  raw_keys = os.getenv("API_KEYS", "")
135
  api_keys = set(k.strip() for k in raw_keys.split(",") if k.strip())
136
 
 
137
  providers = {}
138
  for env_name, provider_name in PROVIDER_MAP.items():
139
  key_value = os.getenv(env_name, "").strip()
140
  if not key_value:
141
+ continue
 
142
  cfg = PROVIDER_CONFIG.get(provider_name, {})
143
  providers[provider_name] = {
144
  "api_key": key_value,
 
149
 
150
  logger.info(f"โœ… ๅŠ ่ฝฝไบ† {len(api_keys)} ไธช API Key")
151
  logger.info(f"โœ… ๅŠ ่ฝฝไบ† {len(providers)} ไธช Provider: {list(providers.keys())}")
 
152
  return api_keys, providers
153
 
154
 
 
165
  return token
166
 
167
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
168
+ # โ˜… ็”จ APIRouter ็ปŸไธ€ๅŠ  /v1 ๅ‰็ผ€
169
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
170
 
171
+ from fastapi import APIRouter
172
+
173
+ router = APIRouter(prefix="/v1") # โ† ๅ…ณ้”ฎ๏ผๆ‰€ๆœ‰่ทฏ็”ฑ่‡ชๅŠจๅธฆ /v1
 
 
 
 
174
 
175
 
176
+ @router.get("/models")
177
  async def list_models(_: str = Depends(verify_api_key)):
178
  data = []
179
  for p_cfg in PROVIDERS.values():
 
182
  return {"object": "list", "data": data}
183
 
184
 
185
+ @router.post("/chat/completions")
186
  async def chat_completions(
187
  body: dict,
188
  _: str = Depends(verify_api_key)
 
210
  return resp.json()
211
 
212
 
213
+ # โ˜… ๆŠŠ router ๆณจๅ†Œๅˆฐ app
214
+ app.include_router(router)
215
+
216
+
217
+ # ๅฅๅบทๆฃ€ๆŸฅไธ้œ€่ฆ /v1 ๅ‰็ผ€๏ผŒไฟๆŒๆ น่ทฏๅพ„
218
  @app.get("/health")
219
  async def health():
220
+ return {
221
+ "status": "ok",
222
+ "keys": len(API_KEYS),
223
+ "providers": list(PROVIDERS.keys()),
224
+ }
225
 
226
 
227
  if __name__ == "__main__":