Added llm providers entrypoint

This commit is contained in:
James Ketr 2025-06-17 17:22:27 -07:00
parent a2276c58ef
commit dbbfe852e2
2 changed files with 74 additions and 16 deletions

View File

@ -81,15 +81,16 @@ from utils.helpers import filter_and_paginate
# Import route modules
# =============================
from routes import (
admin,
auth,
candidates,
resumes,
jobs,
chat,
users,
employers,
admin,
system
jobs,
providers,
resumes,
system,
users,
)
# =============================
@ -238,22 +239,20 @@ api_router = APIRouter(prefix="/api/1.0")
# ============================
# Include all route modules
# ============================
api_router.include_router(admin.router)
api_router.include_router(auth.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(users.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(users.router)
# ============================
# Health Check and Info Endpoints
# ============================
async def get_redis() -> redis.Redis:
"""Dependency to get Redis client"""
return redis_manager.get_client()
@app.get("/health")
async def health_check(
@ -284,10 +283,6 @@ async def health_check(
"version": redis_info.get("redis_version", "unknown"),
"uptime": redis_info.get("uptime_in_seconds", 0),
"memory_used": redis_info.get("used_memory_human", "unknown")
},
"application": {
"active_requests": database._active_requests,
"shutting_down": database.is_shutting_down
}
}

View 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
}