34 lines
909 B
Python
34 lines
909 B
Python
"""Runtime settings API for LLM provider and API keys."""
|
|
|
|
from pydantic import BaseModel
|
|
from fastapi import APIRouter
|
|
|
|
from app.config import public_settings, update_runtime_settings
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
class SettingsUpdate(BaseModel):
|
|
ocr_provider: str | None = None
|
|
ocr_model: str | None = None
|
|
inference_provider: str | None = None
|
|
inference_model: str | None = None
|
|
openai_api_key: str | None = None
|
|
anthropic_api_key: str | None = None
|
|
deepseek_api_key: str | None = None
|
|
custom_openai_api_key: str | None = None
|
|
custom_openai_base_url: str | None = None
|
|
custom_openai_model: str | None = None
|
|
|
|
|
|
@router.get("")
|
|
async def get_runtime_settings():
|
|
return public_settings()
|
|
|
|
|
|
@router.put("")
|
|
async def update_settings(body: SettingsUpdate):
|
|
payload = body.model_dump(exclude_unset=True)
|
|
update_runtime_settings(payload)
|
|
return public_settings()
|