v2.1.1: Auto配置改为模型粒度拖动排序 + 历史缓存复用 + 对话生图
- Auto配置编辑: 粒度从提供商改为具体模型, 原生HTML5拖动排序, 修复已保存模型不显示勾选(字符串/对象混拼bug) - 历史缓存: 带历史上下文的auto请求按首条消息识别会话, 优先复用上次模型命中上游前缀缓存 (可配置: prefer_cache_model + cache_ttl_seconds, 系统配置页开关 + /api/admin/routing) - 对话生图: chat页选 auto-image/Qwen-Image 直接调生图接口并在对话内展示图片 - 修复: Flask模板缓存导致改模板不生效 -> TEMPLATES_AUTO_RELOAD - 修复: 自动回退/显式有序模型列表路由, 空列表回退提供商能力选择
This commit is contained in:
+54
-7
@@ -114,59 +114,106 @@ DEFAULT_MODEL_ALIASES = {
|
||||
|
||||
# 默认Auto配置:每个auto配置固定绑定一个能力
|
||||
# capability: 固定此auto的功能类型(取自 CAPABILITY_DEFS)
|
||||
# models: 有序的**具体模型**列表(按优先级,可拖动排序);为空时回退为按提供商能力选择
|
||||
# providers: 候选提供商(* 表示所有启用的、且具备该能力模型的提供商)
|
||||
DEFAULT_AUTO_PROFILES = {
|
||||
"auto": {
|
||||
"name": "默认Auto",
|
||||
"description": "文本推理 - 自动选择可用提供商",
|
||||
"description": "文本推理 - 按模型列表顺序自动选择",
|
||||
"capability": "text",
|
||||
"models": [
|
||||
"unsloth/Qwen3.8-27B-Q6_K",
|
||||
"unsloth/Qwen3.8-27B-Q4_K_M",
|
||||
"deepseek-ai/DeepSeek-V4-Flash",
|
||||
"meituan-longcat/LongCat-2.0",
|
||||
"qwen3.6-plus",
|
||||
"GLM-5.3-flash",
|
||||
],
|
||||
"providers": ["*"],
|
||||
"strategy": "priority",
|
||||
},
|
||||
"auto-text": {
|
||||
"name": "文本推理",
|
||||
"description": "纯文本推理,自动选择文本模型",
|
||||
"description": "纯文本推理,按模型列表顺序自动选择",
|
||||
"capability": "text",
|
||||
"models": [
|
||||
"unsloth/Qwen3.8-27B-Q6_K",
|
||||
"unsloth/Qwen3.8-27B-Q4_K_M",
|
||||
"deepseek-ai/DeepSeek-V4-Flash",
|
||||
"meituan-longcat/LongCat-2.0",
|
||||
"qwen3.6-plus",
|
||||
"GLM-5.3-flash",
|
||||
],
|
||||
"providers": ["*"],
|
||||
"strategy": "priority",
|
||||
},
|
||||
"auto-vision": {
|
||||
"name": "视觉能力",
|
||||
"description": "多模态视觉理解,自动选择视觉模型",
|
||||
"description": "多模态视觉理解,按模型列表顺序自动选择",
|
||||
"capability": "vision",
|
||||
"models": [
|
||||
"unsloth/Qwen3.8-27B-Q6_K",
|
||||
"unsloth/Qwen3.8-27B-Q4_K_M",
|
||||
"qwen3.6-plus",
|
||||
"GLM-5.3-flash",
|
||||
],
|
||||
"providers": ["*"],
|
||||
"strategy": "priority",
|
||||
},
|
||||
"auto-image": {
|
||||
"name": "图片生成",
|
||||
"description": "文生图,自动选择生图模型",
|
||||
"description": "文生图,按模型列表顺序自动选择",
|
||||
"capability": "image_gen",
|
||||
"models": ["Qwen-Image"],
|
||||
"providers": ["*"],
|
||||
"strategy": "priority",
|
||||
},
|
||||
"auto-voice-out": {
|
||||
"name": "语音输出",
|
||||
"description": "语音合成(TTS),自动选择语音输出模型",
|
||||
"description": "语音合成(TTS),按模型列表顺序自动选择",
|
||||
"capability": "audio_out",
|
||||
"models": [],
|
||||
"providers": ["*"],
|
||||
"strategy": "priority",
|
||||
},
|
||||
"auto-voice-in": {
|
||||
"name": "语音输入",
|
||||
"description": "语音识别(ASR),自动选择语音输入模型",
|
||||
"description": "语音识别(ASR),按模型列表顺序自动选择",
|
||||
"capability": "audio_in",
|
||||
"models": [],
|
||||
"providers": ["*"],
|
||||
"strategy": "priority",
|
||||
},
|
||||
"auto-video": {
|
||||
"name": "视频生成",
|
||||
"description": "文生视频,自动选择视频生成模型",
|
||||
"description": "文生视频,按模型列表顺序自动选择",
|
||||
"capability": "video_gen",
|
||||
"models": [],
|
||||
"providers": ["*"],
|
||||
"strategy": "priority",
|
||||
},
|
||||
}
|
||||
|
||||
# 路由缓存配置(历史上下文优先复用上次模型,命中前缀缓存节省成本)
|
||||
ROUTING_CONFIG = {
|
||||
"prefer_cache_model": True, # 开启后:带历史上下文的 auto 请求优先复用上次使用的模型
|
||||
"cache_ttl_seconds": 3600, # 记忆有效期(秒)
|
||||
}
|
||||
|
||||
|
||||
def load_routing_config():
|
||||
"""加载路由缓存配置(运行时配置优先)"""
|
||||
config = load_config()
|
||||
return {**ROUTING_CONFIG, **config.get("routing_config", {})}
|
||||
|
||||
|
||||
def save_routing_config(data):
|
||||
"""保存路由缓存配置"""
|
||||
config = load_config()
|
||||
config["routing_config"] = {**ROUTING_CONFIG, **data}
|
||||
save_config(config)
|
||||
return config["routing_config"]
|
||||
|
||||
|
||||
def load_config():
|
||||
"""加载配置"""
|
||||
|
||||
Reference in New Issue
Block a user