feat(llm): LLM 配置完全通过管理后台维护
- _get_provider_config 改从 DB 读取 api_key(.env 为 fallback) - 前端 admin.html 新增 sensenova provider 选项,默认值更新为 sensenova - 新增提供商不再需要改代码,后台直接配即可
This commit is contained in:
@@ -50,29 +50,31 @@ def _get_active_provider() -> str:
|
||||
|
||||
def _get_provider_config(provider: Optional[str] = None) -> dict:
|
||||
p = provider or _get_active_provider()
|
||||
# 优先从 DB 读取该供应商的配置
|
||||
model = None
|
||||
base_url = None
|
||||
# 优先从 DB 读取该供应商的完整配置(包括 api_key)
|
||||
db_model = None
|
||||
db_base_url = None
|
||||
db_api_key = None
|
||||
try:
|
||||
from ..database import SessionLocal
|
||||
from ..models import LLMConfig
|
||||
db = SessionLocal()
|
||||
cfg = db.query(LLMConfig).filter(LLMConfig.provider == p).order_by(LLMConfig.is_active.desc()).first()
|
||||
if cfg:
|
||||
model = cfg.model
|
||||
base_url = cfg.base_url
|
||||
db_model = cfg.model
|
||||
db_base_url = cfg.base_url
|
||||
db_api_key = cfg.api_key
|
||||
db.close()
|
||||
except Exception:
|
||||
pass
|
||||
# 回退到代码默认值
|
||||
fb = _FALLBACK.get(p, {})
|
||||
api_key = _API_KEYS.get(p, "")
|
||||
api_key = db_api_key or _API_KEYS.get(p, "")
|
||||
if not api_key:
|
||||
raise LLMError(f"{p} API_KEY 未配置,请在 .env 中设置")
|
||||
raise LLMError(f"{p} API_KEY 未配置,请在管理后台 LLM 配置中设置 API Key")
|
||||
return {
|
||||
"api_key": api_key,
|
||||
"model": model or fb.get("model", ""),
|
||||
"base_url": base_url or fb.get("base_url", ""),
|
||||
"model": db_model or fb.get("model", ""),
|
||||
"base_url": db_base_url or fb.get("base_url", ""),
|
||||
}
|
||||
|
||||
def _get_db_defaults(provider: Optional[str] = None) -> dict:
|
||||
|
||||
Reference in New Issue
Block a user