86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
"""
|
|
Public API v1 Settings endpoint.
|
|
|
|
Provides access to configuration settings.
|
|
Uses API key authentication.
|
|
"""
|
|
from starlette.requests import Request
|
|
from starlette.responses import JSONResponse
|
|
from utils.logging_config import get_logger
|
|
from config.settings import get_openrag_config
|
|
|
|
logger = get_logger(__name__)
|
|
|
|
|
|
async def get_settings_endpoint(request: Request):
|
|
"""
|
|
Get current OpenRAG configuration (read-only).
|
|
|
|
GET /v1/settings
|
|
|
|
Response:
|
|
{
|
|
"agent": {
|
|
"llm_provider": "openai",
|
|
"llm_model": "gpt-4"
|
|
},
|
|
"knowledge": {
|
|
"embedding_provider": "openai",
|
|
"embedding_model": "text-embedding-3-small"
|
|
}
|
|
}
|
|
|
|
Note: This endpoint returns a limited subset of settings.
|
|
Sensitive information (API keys, credentials) is never exposed.
|
|
"""
|
|
try:
|
|
from config.settings import get_openrag_config
|
|
|
|
config = get_openrag_config()
|
|
|
|
# Return only safe, non-sensitive settings
|
|
settings = {
|
|
"agent": {
|
|
"llm_provider": config.agent.llm_provider,
|
|
"llm_model": config.agent.llm_model,
|
|
},
|
|
"knowledge": {
|
|
"embedding_provider": config.knowledge.embedding_provider,
|
|
"embedding_model": config.knowledge.embedding_model,
|
|
"chunk_size": config.knowledge.chunk_size,
|
|
"chunk_overlap": config.knowledge.chunk_overlap,
|
|
},
|
|
}
|
|
|
|
return JSONResponse(settings)
|
|
|
|
except Exception as e:
|
|
logger.error("Failed to get settings", error=str(e))
|
|
return JSONResponse(
|
|
{"error": "Failed to get settings"},
|
|
status_code=500,
|
|
)
|
|
|
|
|
|
async def update_settings_endpoint(request: Request, session_manager):
|
|
"""
|
|
Update OpenRAG configuration settings.
|
|
|
|
POST /v1/settings
|
|
|
|
Request body (all fields optional):
|
|
{
|
|
"chunk_size": 1000,
|
|
"chunk_overlap": 200
|
|
}
|
|
|
|
Response:
|
|
{
|
|
"message": "Configuration updated successfully"
|
|
}
|
|
|
|
Note: This endpoint only allows updating a limited subset of settings.
|
|
Provider API keys and credentials cannot be updated via this endpoint.
|
|
"""
|
|
from api.settings import update_settings
|
|
return await update_settings(request, session_manager)
|