feat: require explicit runtime configuration

This commit is contained in:
gqt
2026-07-13 14:49:35 +08:00
parent 2361d62867
commit 01b5a29b62
3 changed files with 88 additions and 30 deletions
+27 -25
View File
@@ -9,37 +9,39 @@ class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=".env",
env_prefix="KBQA_",
extra="ignore",
extra="forbid",
)
app_name: str = "KBQA"
debug: bool = False
app_name: str
debug: bool
dashscope_api_key: str = ""
dashscope_base_url: str = "https://dashscope.aliyuncs.com/compatible-mode/v1"
chat_model: str = "qwen3.5-flash"
embedding_model: str = "text-embedding-v4"
embedding_dim: int = 1024
dashscope_api_key: str
dashscope_base_url: str
chat_model: str
embedding_model: str
embedding_dim: int
database_url: str = "sqlite+aiosqlite:///./data/kbqa.sqlite3"
milvus_uri: str = "./data/milvus/kbqa.db"
raw_data_dir: Path = Path("./data/raw")
database_url: str
milvus_uri: str
raw_data_dir: Path
chunk_size: int = Field(default=500, ge=1)
chunk_overlap: int = Field(default=50, ge=0)
retrieval_top_k: int = Field(default=5, ge=1, le=100)
max_research_searches: int = Field(default=3, ge=1, le=10)
max_sources: int = Field(default=8, ge=1, le=50)
history_message_limit: int = Field(default=20, ge=1, le=200)
max_upload_mib: int = Field(default=20, ge=1, le=1024)
max_query_length: int = Field(default=10_000, ge=1, le=100_000)
cors_origins: list[str] = [
"http://localhost:5173",
"http://127.0.0.1:5173",
]
chunk_size: int = Field(ge=1)
chunk_overlap: int = Field(ge=0)
retrieval_top_k: int = Field(ge=1, le=100)
max_research_searches: int = Field(ge=1, le=10)
max_sources: int = Field(ge=1, le=50)
history_message_limit: int = Field(ge=1, le=200)
max_upload_mib: int = Field(ge=1, le=1024)
max_query_length: int = Field(ge=1, le=100_000)
cors_origins: list[str]
run_live_tests: bool = False
live_test_file: Path | None = None
run_live_tests: bool
live_test_file: Path
langsmith_tracing: bool = Field(validation_alias="LANGSMITH_TRACING")
langsmith_endpoint: str = Field(validation_alias="LANGSMITH_ENDPOINT")
langsmith_api_key: str = Field(validation_alias="LANGSMITH_API_KEY")
langsmith_project: str = Field(validation_alias="LANGSMITH_PROJECT")
@field_validator("chunk_overlap")
@classmethod