File size: 1,646 Bytes
a5784e9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
from fastapi import Depends, Request
from fastapi.responses import JSONResponse

from config import MODEL_NAME, get_environment_variable

from ..dependencies import get_current_ai_studio_model_id


async def get_api_info(
    request: Request,
    current_ai_studio_model_id: str = Depends(get_current_ai_studio_model_id),
) -> JSONResponse:
    from .. import auth_utils

    server_port = request.url.port or get_environment_variable(
        "SERVER_PORT_INFO", "8000"
    )
    host = request.headers.get("host") or f"127.0.0.1:{server_port}"
    scheme = request.headers.get("x-forwarded-proto") or request.url.scheme or "http"
    base_url = f"{scheme}://{host}"
    api_base = f"{base_url}/v1"
    effective_model_name = current_ai_studio_model_id or MODEL_NAME

    api_key_required = bool(auth_utils.API_KEYS)
    api_key_count = len(auth_utils.API_KEYS)

    message = (
        f"API Key is required. {api_key_count} valid key(s) configured."
        if api_key_required
        else "API Key is not required."
    )

    return JSONResponse(
        content={
            "model_name": effective_model_name,
            "api_base_url": api_base,
            "server_base_url": base_url,
            "api_key_required": api_key_required,
            "api_key_count": api_key_count,
            "auth_header": "Authorization: Bearer <token> or X-API-Key: <token>"
            if api_key_required
            else None,
            "openai_compatible": True,
            "supported_auth_methods": ["Authorization: Bearer", "X-API-Key"]
            if api_key_required
            else [],
            "message": message,
        }
    )