AutoSTAT / utils /save_secrets.py
ElvisWang111's picture
Update utils/save_secrets.py
4623123 verified
import toml
from pathlib import Path
from typing import Dict, Optional
# 我们把 secrets 放在项目 utils目录下的 .streamlit 文件夹
BASE = Path(__file__).parent
SECRETS_DIR = BASE / ".streamlit"
SECRETS_FILE = SECRETS_DIR / "secrets.toml"
def load_local_model_configs() -> Dict[str, Dict[str, str]]:
"""
从本地 secrets.toml 中读取完整的模型配置。
返回格式:{model_name: {api_base: str, model_name: str, api_key: str}}
"""
if not SECRETS_FILE.exists():
return {}
data = toml.load(SECRETS_FILE)
return data.get("models", {})
def update_local_model_config(display_name: str, api_key: str,
base_url: Optional[str] = None,
model_name: Optional[str] = None) -> None:
"""
更新本地模型配置到 secrets.toml。
参数:
display_name: 模型显示名称(菜单项名称,如 DeepSeek、Claude、OpenAI API 兼容模型等)
api_key: API 密钥
base_url: API base URL(自定义模型必需)
model_name: 模型 ID,API 调用时使用(自定义模型必需)
"""
SECRETS_DIR.mkdir(exist_ok=True)
if SECRETS_FILE.exists():
data = toml.load(SECRETS_FILE)
else:
data = {"models": {}}
if "models" not in data:
data["models"] = {}
# 保存模型配置
model_config = {"api_key": api_key}
if base_url:
model_config["api_base"] = base_url
if model_name:
model_config["model_name"] = model_name
data["models"][display_name] = model_config
with SECRETS_FILE.open("w", encoding="utf-8") as f:
toml.dump(data, f)