Added llm providers entrypoint
This commit is contained in:
parent
a2276c58ef
commit
dbbfe852e2
@ -81,15 +81,16 @@ from utils.helpers import filter_and_paginate
|
|||||||
# Import route modules
|
# Import route modules
|
||||||
# =============================
|
# =============================
|
||||||
from routes import (
|
from routes import (
|
||||||
|
admin,
|
||||||
auth,
|
auth,
|
||||||
candidates,
|
candidates,
|
||||||
resumes,
|
|
||||||
jobs,
|
|
||||||
chat,
|
chat,
|
||||||
users,
|
|
||||||
employers,
|
employers,
|
||||||
admin,
|
jobs,
|
||||||
system
|
providers,
|
||||||
|
resumes,
|
||||||
|
system,
|
||||||
|
users,
|
||||||
)
|
)
|
||||||
|
|
||||||
# =============================
|
# =============================
|
||||||
@ -238,22 +239,20 @@ api_router = APIRouter(prefix="/api/1.0")
|
|||||||
# ============================
|
# ============================
|
||||||
# Include all route modules
|
# Include all route modules
|
||||||
# ============================
|
# ============================
|
||||||
|
api_router.include_router(admin.router)
|
||||||
api_router.include_router(auth.router)
|
api_router.include_router(auth.router)
|
||||||
api_router.include_router(candidates.router)
|
api_router.include_router(candidates.router)
|
||||||
api_router.include_router(resumes.router)
|
|
||||||
api_router.include_router(jobs.router)
|
|
||||||
api_router.include_router(chat.router)
|
api_router.include_router(chat.router)
|
||||||
api_router.include_router(users.router)
|
|
||||||
api_router.include_router(employers.router)
|
api_router.include_router(employers.router)
|
||||||
api_router.include_router(admin.router)
|
api_router.include_router(jobs.router)
|
||||||
|
api_router.include_router(providers.router)
|
||||||
|
api_router.include_router(resumes.router)
|
||||||
api_router.include_router(system.router)
|
api_router.include_router(system.router)
|
||||||
|
api_router.include_router(users.router)
|
||||||
|
|
||||||
# ============================
|
# ============================
|
||||||
# Health Check and Info Endpoints
|
# Health Check and Info Endpoints
|
||||||
# ============================
|
# ============================
|
||||||
async def get_redis() -> redis.Redis:
|
|
||||||
"""Dependency to get Redis client"""
|
|
||||||
return redis_manager.get_client()
|
|
||||||
|
|
||||||
@app.get("/health")
|
@app.get("/health")
|
||||||
async def health_check(
|
async def health_check(
|
||||||
@ -284,10 +283,6 @@ async def health_check(
|
|||||||
"version": redis_info.get("redis_version", "unknown"),
|
"version": redis_info.get("redis_version", "unknown"),
|
||||||
"uptime": redis_info.get("uptime_in_seconds", 0),
|
"uptime": redis_info.get("uptime_in_seconds", 0),
|
||||||
"memory_used": redis_info.get("used_memory_human", "unknown")
|
"memory_used": redis_info.get("used_memory_human", "unknown")
|
||||||
},
|
|
||||||
"application": {
|
|
||||||
"active_requests": database._active_requests,
|
|
||||||
"shutting_down": database.is_shutting_down
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
63
src/backend/routes/providers.py
Normal file
63
src/backend/routes/providers.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
from typing import Optional
|
||||||
|
from fastapi import APIRouter, HTTPException
|
||||||
|
|
||||||
|
from utils.llm_proxy import LLMProvider, get_llm
|
||||||
|
|
||||||
|
|
||||||
|
router = APIRouter(prefix="/providers", tags=["providers"])
|
||||||
|
|
||||||
|
@router.get("/models")
|
||||||
|
async def list_models(provider: Optional[str] = None):
|
||||||
|
"""List available models for a provider"""
|
||||||
|
try:
|
||||||
|
llm = get_llm()
|
||||||
|
|
||||||
|
provider_enum = None
|
||||||
|
if provider:
|
||||||
|
try:
|
||||||
|
provider_enum = LLMProvider(provider.lower())
|
||||||
|
except ValueError:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=400,
|
||||||
|
detail=f"Unsupported provider: {provider}"
|
||||||
|
)
|
||||||
|
|
||||||
|
models = await llm.list_models(provider_enum)
|
||||||
|
return {
|
||||||
|
"provider": provider_enum.value if provider_enum else llm.default_provider.value,
|
||||||
|
"models": models
|
||||||
|
}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
@router.get("")
|
||||||
|
async def list_providers():
|
||||||
|
"""List all configured providers"""
|
||||||
|
llm = get_llm()
|
||||||
|
return {
|
||||||
|
"providers": [provider.value for provider in llm._initialized_providers],
|
||||||
|
"default": llm.default_provider.value
|
||||||
|
}
|
||||||
|
|
||||||
|
@router.post("/{provider}/set-default")
|
||||||
|
async def set_default_provider(provider: str):
|
||||||
|
"""Set the default provider"""
|
||||||
|
try:
|
||||||
|
llm = get_llm()
|
||||||
|
provider_enum = LLMProvider(provider.lower())
|
||||||
|
llm.set_default_provider(provider_enum)
|
||||||
|
return {"message": f"Default provider set to {provider}", "default": provider}
|
||||||
|
except ValueError as e:
|
||||||
|
raise HTTPException(status_code=400, detail=str(e))
|
||||||
|
|
||||||
|
# Health check endpoint
|
||||||
|
@router.get("/health")
|
||||||
|
async def health_check():
|
||||||
|
"""Health check endpoint"""
|
||||||
|
llm = get_llm()
|
||||||
|
return {
|
||||||
|
"status": "healthy",
|
||||||
|
"providers_configured": len(llm._initialized_providers),
|
||||||
|
"default_provider": llm.default_provider.value
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user