fix: restore main runtime sources and cache consistency

This commit is contained in:
User
2026-07-14 14:19:36 +08:00
parent e40989eeab
commit f951bc6598
15 changed files with 1664 additions and 29 deletions

View File

@@ -9,11 +9,13 @@ import os
# 一、API 密钥与模型
# ==============================================================================
# 通义千问 LLM 服务
# OpenAI 兼容 LLM 服务(当前默认使用小米 MiMo
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY", "")
DASHSCOPE_BASE_URL = os.getenv("DASHSCOPE_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1")
DASHSCOPE_MODEL = os.getenv("DASHSCOPE_MODEL", "qwen-flash") # 文本生成模型
RAG_CHAT_MODEL = os.getenv("RAG_CHAT_MODEL", "qwen-flash") # RAG 对话模型
DASHSCOPE_BASE_URL = os.getenv("DASHSCOPE_BASE_URL", "https://token-plan-cn.xiaomimimo.com/v1")
DASHSCOPE_MODEL = os.getenv("DASHSCOPE_MODEL", "mimo-v2.5") # 文本生成模型
RAG_CHAT_MODEL = os.getenv("RAG_CHAT_MODEL", "mimo-v2.5") # RAG 对话模型
INTENT_MODEL = os.getenv("INTENT_MODEL", "mimo-v2.5") # 意图分析模型
VLM_MODEL = os.getenv("VLM_MODEL", "mimo-v2.5") # 图片理解模型
# 兼容旧变量名(逐步迁移到 DASHSCOPE_* 命名)
API_KEY = DASHSCOPE_API_KEY
@@ -27,6 +29,7 @@ MODEL = DASHSCOPE_MODEL
APP_ENV = os.getenv("APP_ENV", "dev") # dev / prod
IS_DEV = APP_ENV == "dev"
IS_PROD = APP_ENV == "prod"
DEV_MODE = os.getenv("DEV_MODE", "true").lower() != "false"
# 开发/生产环境自动切换
ENABLE_SESSION = IS_DEV # 会话存储(仅开发环境)
@@ -85,10 +88,11 @@ RERANK_DEVICE = os.getenv("RERANK_DEVICE", os.getenv("DEVICE", "auto"))
# ----- 通用问答 -----
LLM_TEMPERATURE = 0.7 # 生成温度0=确定性1=随机性)
LLM_MAX_TOKENS = 3000 # 最大输出 token 数
LLM_DISABLE_THINKING = os.getenv("LLM_DISABLE_THINKING", "true").lower() != "false"
# ----- 意图分析(轻量、确定性高)-----
INTENT_TEMPERATURE = 0.1
INTENT_MAX_TOKENS = 300
INTENT_MAX_TOKENS = 2048
INTENT_HISTORY_WINDOW = 6 # 分析时取最近几条历史消息
# ==============================================================================
@@ -201,6 +205,9 @@ MAX_QUERY_REWRITES = 1
# MinerU 解析器
MINERU_DEVICE_MODE = os.getenv("MINERU_DEVICE_MODE", "cpu") # cpu / cuda
MINERU_MODEL_VERSION = os.getenv("MINERU_MODEL_VERSION", "vlm")
MINERU_LOCAL_BACKEND = os.getenv("MINERU_LOCAL_BACKEND", "pipeline")
MINERU_ONLINE_TIMEOUT = int(os.getenv("MINERU_ONLINE_TIMEOUT", "300"))
# MinerU 在线 API作为本地解析失败时的备选
MINERU_API_TOKEN = os.getenv("MINERU_API_TOKEN", "") # 在 https://mineru.net/apiManage/token 申请
@@ -246,6 +253,20 @@ CONFIDENCE_CAUTION_THRESHOLD = 0.30 # top-3 均分低于此值时,提示 LLM
ENUM_QUERY_DISABLE_TOPK_SHRINK = True
ENUM_QUERY_MMR_LAMBDA = 0.85
# 章节聚类提升与 BM25/CrossEncoder 分歧救援
SECTION_CLUSTER_BOOST_ENABLED = True
SECTION_CLUSTER_RESCUE_ENABLED = True
BM25_DIVERGENCE_RESCUE_ENABLED = True
BM25_DIVERGENCE_MAX_RANK = 3
CLUSTER_MIN_MEMBERS = 3
CLUSTER_MIN_TYPES = 2
CLUSTER_SEED_FLOOR = 0.35
CLUSTER_RESCUE_FLOOR = 0.06
CLUSTER_MAX_BOOST_PER_SECTION = 8
CLUSTER_MAX_SECTIONS = 3
CLUSTER_MAX_RESCUE_PER_SECTION = 6
CLUSTER_SECTION_PREFIX_LEVELS = 2
# ==============================================================================
# 十一、可选功能配置
# ==============================================================================
@@ -261,3 +282,20 @@ def get_llm_client():
"""获取 LLM 客户端实例"""
from openai import OpenAI
return OpenAI(api_key=DASHSCOPE_API_KEY, base_url=DASHSCOPE_BASE_URL)
_intent_client = None
def get_intent_client():
"""获取意图分析专用 LLM 客户端(进程内复用连接池)。"""
global _intent_client
if _intent_client is None:
if not DASHSCOPE_API_KEY:
raise ValueError("DASHSCOPE_API_KEY 未配置,请在环境变量中设置")
from openai import OpenAI
_intent_client = OpenAI(
api_key=DASHSCOPE_API_KEY,
base_url=DASHSCOPE_BASE_URL,
)
return _intent_client