from fastapi import FastAPI, Depends, HTTPException, Request, Response from fastapi.responses import JSONResponse, StreamingResponse from api.auth import verify_app_secret from api.config import ALLOWED_MODELS from api.models import ChatRequest from api.utils import process_response from api.logger import setup_logger logger = setup_logger(__name__) app = FastAPI( title="Your API", docs_url=None, # Disable Swagger UI redoc_url=None, # Disable ReDoc openapi_url=None, # Disable OpenAPI schema ) # Include your authentication if needed # from api.auth import verify_app_secret @app.post("/v1/chat/completions") async def chat_completions( request: ChatRequest, app_secret: str = Depends(verify_app_secret) ): logger.info("Processing chat completion request") if request.model not in [model["id"] for model in ALLOWED_MODELS]: raise HTTPException( status_code=400, detail=f"Model {request.model} is not allowed." ) # Process the response using Editee API if request.stream: # If streaming is required generator = process_response(request, stream=True) return StreamingResponse(generator, media_type="text/event-stream") else: # Non-streaming response response_data = await process_response(request) return JSONResponse(content=response_data) # Health check endpoints @app.get("/") @app.get("/healthz") @app.get("/ready") @app.get("/alive") @app.get("/status") @app.get("/health") def health_check(request: Request): return Response(content='{"status": "ok"}', media_type="application/json")