vgecbot / app /api /schemas /settings.py
harsh-dev's picture
docker deployment
4225666
from pydantic import BaseModel, Field
from typing import List, Optional, Literal
from app.core.config import settings
class SettingsUpdate(BaseModel):
"""Schema for updating application settings."""
# RAG Settings
chunk_size: Optional[int] = Field(default=settings.chunk_size, ge=100, le=5000, description="Text chunk size")
chunk_overlap: Optional[int] = Field(default=settings.chunk_overlap, ge=0, le=1000, description="Chunk overlap size")
similarity_top_k: Optional[int] = Field(default=settings.similarity_top_k, ge=1, le=20, description="Number of similar docs to retrieve")
similarity_threshold: Optional[float] = Field(default=settings.similarity_threshold, ge=0, le=1, description="Similarity threshold")
# Model Settings
llm_provider: Optional[Literal["gemini", "local"]] = Field(default=settings.llm_provider, description="LLM provider to use")
enable_fallback: Optional[bool] = Field(default=settings.enable_fallback, description="Enable fallback to alternate model")
gemini_model_name: Optional[str] = Field(default=settings.gemini_model_name, description="Gemini model name")
local_model_name: Optional[str] = Field(default=settings.local_model_name, description="Local model filename")
# API Settings
cors_origins: Optional[List[str]] = Field(default=settings.cors_origins, description="Allowed CORS origins")
class SettingsResponse(BaseModel):
"""Schema for settings response."""
# Paths (read-only)
root_path: str
model_path: str
data_path: str
# API Settings
api_title: str
api_version: str
cors_origins: List[str]
# RAG Settings
chunk_size: int
chunk_overlap: int
similarity_top_k: int
similarity_threshold: float
collection_name: str
persist_directory: str
# Model Settings
llm_provider: str
enable_fallback: bool
embedding_model_name: str
gemini_model_name: str
local_model_name: str
class Config:
from_attributes = True