27 lines
933 B
Python
27 lines
933 B
Python
"""NL2SQL 进程内运行时配置。"""
|
|||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from pydantic import BaseModel, ConfigDict, Field
|
||
|
|
|
||
|
|
|
||
|
|
class Nl2SqlRuntimeConfig(BaseModel):
|
||
|
|
"""可由管理员动态调整的非敏感查询参数。"""
|
||
|
|
|
||
|
|
model_config = ConfigDict(extra="forbid", validate_assignment=True)
|
||
|
|
|
||
|
|
cache_ttl: int = Field(default=300, ge=30, le=86400)
|
||
|
|
retrieval_top_k: int = Field(default=5, ge=1, le=50)
|
||
|
|
retrieval_threshold: float = Field(default=0.0, ge=0.0, le=1.0)
|
||
|
|
max_rows: int = Field(default=1000, ge=1, le=100000)
|
||
|
|
max_join_depth: int = Field(default=3, ge=0, le=10)
|
||
|
|
|
||
|
|
def update(self, **values: object) -> dict:
|
||
|
|
"""校验并更新配置,返回当前完整配置。"""
|
||
|
|
updated = self.model_copy(update=values)
|
||
|
|
for key, value in updated.model_dump().items():
|
||
|
|
setattr(self, key, value)
|
||
|
|
return self.model_dump()
|
||
|
|
|
||
|
|
|
||
|
|
runtime_config = Nl2SqlRuntimeConfig()
|