Niansuh commited on
Commit
5901dea
·
verified ·
1 Parent(s): 1eae6af

Update api/routes.py

Browse files
Files changed (1) hide show
  1. api/routes.py +22 -25
api/routes.py CHANGED
@@ -1,9 +1,12 @@
 
 
1
  import json
2
  from fastapi import APIRouter, Depends, HTTPException, Request, Response
3
- from fastapi.responses import StreamingResponse, JSONResponse
4
  from api.auth import verify_app_secret
5
- from api.config import ALLOWED_MODELS
6
  from api.utils import process_non_streaming_response, process_streaming_response
 
7
  from api.logger import setup_logger
8
 
9
  logger = setup_logger(__name__)
@@ -25,42 +28,36 @@ async def chat_completions_options():
25
  @router.get("/v1/models")
26
  @router.get("/api/v1/models")
27
  async def list_models():
28
- return {"object": "list", "data": ALLOWED_MODELS}
 
29
 
30
  @router.post("/v1/chat/completions")
31
  @router.post("/api/v1/chat/completions")
32
  async def chat_completions(
33
- request: Request, app_secret: str = Depends(verify_app_secret)
34
  ):
35
  logger.info("Entering chat_completions route")
36
- request_data = await request.json()
37
- model = request_data.get('model')
38
- if not model:
39
- raise HTTPException(status_code=400, detail="Model is required")
40
- logger.info(f"Processing chat completion request for model: {model}")
41
 
42
- if model not in [model_dict["id"] for model_dict in ALLOWED_MODELS]:
43
  raise HTTPException(
44
  status_code=400,
45
- detail=f"Model {model} is not allowed. Allowed models are: {', '.join(model['id'] for model in ALLOWED_MODELS)}",
46
  )
47
 
48
- stream = request_data.get('stream', False)
49
-
50
- if stream:
51
  logger.info("Streaming response")
52
- response = await process_streaming_response(request_data)
53
- return StreamingResponse(response, media_type="text/event-stream")
54
  else:
55
  logger.info("Non-streaming response")
56
- response = await process_non_streaming_response(request_data)
57
- return JSONResponse(content=response)
58
-
59
- @router.get('/')
60
- @router.get('/healthz')
61
- @router.get('/ready')
62
- @router.get('/alive')
63
- @router.get('/status')
64
  @router.get("/health")
65
  def health_check(request: Request):
66
- return JSONResponse(content={"status": "ok"})
 
1
+ # api/routes.py
2
+
3
  import json
4
  from fastapi import APIRouter, Depends, HTTPException, Request, Response
5
+ from fastapi.responses import StreamingResponse
6
  from api.auth import verify_app_secret
7
+ from api.models import ChatRequest
8
  from api.utils import process_non_streaming_response, process_streaming_response
9
+ from api.providers import AmigoChat
10
  from api.logger import setup_logger
11
 
12
  logger = setup_logger(__name__)
 
28
  @router.get("/v1/models")
29
  @router.get("/api/v1/models")
30
  async def list_models():
31
+ allowed_models = [{"id": model, "name": model} for model in AmigoChat.models]
32
+ return {"object": "list", "data": allowed_models}
33
 
34
  @router.post("/v1/chat/completions")
35
  @router.post("/api/v1/chat/completions")
36
  async def chat_completions(
37
+ request: ChatRequest, app_secret: str = Depends(verify_app_secret)
38
  ):
39
  logger.info("Entering chat_completions route")
40
+ logger.info(f"Processing chat completion request for model: {request.model}")
 
 
 
 
41
 
42
+ if request.model not in AmigoChat.models and request.model not in AmigoChat.model_aliases:
43
  raise HTTPException(
44
  status_code=400,
45
+ detail=f"Model {request.model} is not allowed. Allowed models are: {', '.join(AmigoChat.models)}",
46
  )
47
 
48
+ if request.stream:
 
 
49
  logger.info("Streaming response")
50
+ return StreamingResponse(process_streaming_response(request), media_type="text/event-stream")
 
51
  else:
52
  logger.info("Non-streaming response")
53
+ response = await process_non_streaming_response(request)
54
+ return Response(content=json.dumps(response), media_type="application/json")
55
+
56
+ @router.route('/')
57
+ @router.route('/healthz')
58
+ @router.route('/ready')
59
+ @router.route('/alive')
60
+ @router.route('/status')
61
  @router.get("/health")
62
  def health_check(request: Request):
63
+ return Response(content=json.dumps({"status": "ok"}), media_type="application/json")