kenken999 commited on
Commit
22165c2
1 Parent(s): 8bebd63
__pycache__/proxy_server.cpython-39.pyc CHANGED
Binary files a/__pycache__/proxy_server.cpython-39.pyc and b/__pycache__/proxy_server.cpython-39.pyc differ
 
__pycache__/utils.cpython-39.pyc ADDED
Binary file (623 Bytes). View file
 
proxy_server.py CHANGED
@@ -63,6 +63,9 @@ from litellm.caching import DualCache
63
  from litellm.proxy.health_check import perform_health_check
64
  from litellm._logging import verbose_router_logger, verbose_proxy_logger
65
 
 
 
 
66
  litellm.suppress_debug_info = True
67
  from fastapi import (
68
  FastAPI,
@@ -1414,11 +1417,68 @@ async def completion(
1414
  raise HTTPException(status_code=status, detail=error_msg)
1415
 
1416
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1417
  @routers.post(
1418
- "/v1/chat/completions",
1419
  dependencies=[Depends(user_api_key_auth)],
1420
  tags=["chat/completions"],
1421
  )
 
 
1422
 
1423
 
1424
  @router.post(
 
63
  from litellm.proxy.health_check import perform_health_check
64
  from litellm._logging import verbose_router_logger, verbose_proxy_logger
65
 
66
+ from utils import getenv, set_env_variables
67
+ import litellm as llm
68
+
69
  litellm.suppress_debug_info = True
70
  from fastapi import (
71
  FastAPI,
 
1417
  raise HTTPException(status_code=status, detail=error_msg)
1418
 
1419
 
1420
+ def completion_request(user_api_key):
1421
+ resp = requests.post(
1422
+ f"{FASTREPL_PROXY_URL_BASE}/chat/completions",
1423
+ headers={
1424
+ "Content-Type": "application/json",
1425
+ "Authorization": f"Bearer {user_api_key}",
1426
+ },
1427
+ json={
1428
+ "model": "gpt-3.5-turbo",
1429
+ "messages": [
1430
+ {
1431
+ "content": "what is YC?",
1432
+ "role": "user"
1433
+ }
1434
+ ]
1435
+
1436
+ }
1437
+ )
1438
+ return resp.json()
1439
+
1440
+
1441
+ if __name__ == "__main__":
1442
+ key = new_user(100)["api_key"]
1443
+ print("new key", key)
1444
+
1445
+ for _ in range(20):
1446
+ print(cost_current(key))
1447
+
1448
+ response = completion_request(key)
1449
+ print(response)
1450
+
1451
+
1452
+ # for completion
1453
+ @routers.post("/v1/chat/completions", dependencies=[Depends(user_api_key_auth)])
1454
+ async def completion(request: Request):
1455
+ key = request.headers.get("Authorization").replace("Bearer ", "") # type: ignore
1456
+ data = await request.json()
1457
+ print(f"received request data: {data}")
1458
+ data["user_key"] = key
1459
+ data["budget_manager"] = budget_manager
1460
+ data["master_key"] = master_key
1461
+ set_env_variables(data)
1462
+ # handle how users send streaming
1463
+ if 'stream' in data:
1464
+ if type(data['stream']) == str: # if users send stream as str convert to bool
1465
+ # convert to bool
1466
+ if data['stream'].lower() == "true":
1467
+ data['stream'] = True # convert to boolean
1468
+
1469
+ response = llm.completion(**data)
1470
+ if 'stream' in data and data['stream'] == True: # use generate_responses to stream responses
1471
+ return StreamingResponse(data_generator(response), media_type='text/event-stream')
1472
+ return response
1473
+
1474
+
1475
  @routers.post(
1476
+ "/v1/chat/completionsssssssssss",
1477
  dependencies=[Depends(user_api_key_auth)],
1478
  tags=["chat/completions"],
1479
  )
1480
+ def test(aaaa,bbbb):
1481
+ print(aaa)
1482
 
1483
 
1484
  @router.post(
utils.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import functools
3
+ from dotenv import load_dotenv
4
+
5
+ load_dotenv()
6
+
7
+
8
+ @functools.lru_cache(maxsize=None)
9
+ def getenv(key, default=0):
10
+ return type(default)(os.getenv(key, default))
11
+
12
+
13
+ def set_env_variables(data):
14
+ try:
15
+ if "env_variables" in data:
16
+ env_variables = data["env_variables"]
17
+ for key in env_variables:
18
+ os.environ[key] = env_variables[key]
19
+ data.pop("env_variables")
20
+ except:
21
+ pass