Spaces:
Sleeping
Sleeping
| """ | |
| 精简配置模块(仅 LLM API 相关) | |
| 支持: | |
| 1. 环境变量(HF Spaces Secrets / .env 文件) | |
| 2. 运行时内存更新(界面输入框) | |
| """ | |
| import json | |
| import logging | |
| import os | |
| from pathlib import Path | |
| from typing import Optional | |
| from dotenv import load_dotenv | |
| logger = logging.getLogger(__name__) | |
| # ---- 内存状态 ---- | |
| _llm_provider = "deepseek" | |
| _openai_api_key = "" | |
| _openai_model = "gpt-4o-mini" | |
| _deepseek_api_key = "" | |
| _deepseek_model = "deepseek-chat" | |
| # 所有合法分类标签 | |
| ALL_CATEGORIES = [ | |
| "Auto reply", | |
| "career page", | |
| "connect more", | |
| "considered", | |
| "not hiring", | |
| "do not exist", | |
| "not fit", | |
| "Forward", | |
| ] | |
| # 分类标签 → 颜色映射(供前端展示用) | |
| CATEGORY_COLORS = { | |
| "Auto reply": "#94a3b8", # 灰 | |
| "career page": "#60a5fa", # 蓝 | |
| "connect more": "#34d399", # 绿 | |
| "considered": "#fbbf24", # 黄 | |
| "not hiring": "#f87171", # 红 | |
| "do not exist": "#d1d5db", # 浅灰 | |
| "not fit": "#fb923c", # 橙 | |
| "Forward": "#a78bfa", # 紫 | |
| } | |
| CATEGORY_EMOJI = { | |
| "Auto reply": "🤖", | |
| "career page": "🔗", | |
| "connect more": "💬", | |
| "considered": "📌", | |
| "not hiring": "🚫", | |
| "do not exist": "❌", | |
| "not fit": "👋", | |
| "Forward": "📤", | |
| } | |
| def load_env(): | |
| """从环境变量加载配置(支持 .env 文件和 HF Spaces Secrets)""" | |
| global _llm_provider, _openai_api_key, _openai_model | |
| global _deepseek_api_key, _deepseek_model | |
| load_dotenv() | |
| env_provider = os.getenv("LLM_PROVIDER") | |
| if env_provider: | |
| _llm_provider = env_provider | |
| env_openai_key = os.getenv("OPENAI_API_KEY") | |
| if env_openai_key: | |
| _openai_api_key = env_openai_key | |
| env_openai_model = os.getenv("OPENAI_MODEL") | |
| if env_openai_model: | |
| _openai_model = env_openai_model | |
| env_deepseek_key = os.getenv("DEEPSEEK_API_KEY") | |
| if env_deepseek_key: | |
| _deepseek_api_key = env_deepseek_key | |
| env_deepseek_model = os.getenv("DEEPSEEK_MODEL") | |
| if env_deepseek_model: | |
| _deepseek_model = env_deepseek_model | |
| def apply_runtime_config(provider: str, api_key: str, model: str): | |
| """运行时更新(来自界面输入框)""" | |
| global _llm_provider, _openai_api_key, _openai_model | |
| global _deepseek_api_key, _deepseek_model | |
| _llm_provider = provider | |
| if provider == "deepseek": | |
| _deepseek_api_key = api_key | |
| _deepseek_model = model or "deepseek-chat" | |
| else: | |
| _openai_api_key = api_key | |
| _openai_model = model or "gpt-4o-mini" | |
| def get_llm_provider() -> str: | |
| return _llm_provider | |
| def get_llm_api_key() -> str: | |
| return _deepseek_api_key if _llm_provider == "deepseek" else _openai_api_key | |
| def get_llm_model() -> str: | |
| return _deepseek_model if _llm_provider == "deepseek" else _openai_model | |
| def get_llm_base_url() -> Optional[str]: | |
| return "https://api.deepseek.com" if _llm_provider == "deepseek" else None | |
| def get_current_config() -> dict: | |
| return { | |
| "provider": _llm_provider, | |
| "api_key": get_llm_api_key(), | |
| "model": get_llm_model(), | |
| } | |
| # 启动时自动从环境变量加载 | |
| load_env() | |