wellfound-viewer / src /config.py
Zoey7Web's picture
Upload 16 files
4242667 verified
Raw
History Blame Contribute Delete
3.19 kB
"""
精简配置模块(仅 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()