Files
BiliNote/backend/app/db/builtin_providers.json
huangjianwu bebf2e8c61 fix(backend): 修复 DeepSeek 模型列表为空 & whisper 下载不走代理 (#417)
问题1 — DeepSeek 模型下拉为空:
provider 的 /models 调用失败时,get_model_list 吞掉异常返回 [],
get_all_models_by_id 再对 [] 取 .data 触发 AttributeError 又被吞,
最终接口返回 {"code":0,"msg":"success","data":[]},把失败伪装成空成功,
用户看不到任何原因。
- 捕获并回传真实错误,不再二次吞
- 新增 model_fallback.normalize_models 兼容 SyncPage/list/dict,绝不再 .data 崩
- 内置供应商提供已知模型兜底清单(DeepSeek→deepseek-chat/deepseek-reasoner,
  Qwen→qwen-plus 等),动态拿不到时回退,保证下拉非空;动态可用时仍以动态为准

问题2 — whisper 模型下载不走代理(Docker 里代理没生效):
snapshot_download 既不读 UI 配的代理,HF_ENDPOINT 又固定 hf-mirror.com。
- ProxyConfigManager.apply_to_env() 把生效代理 export 到 HTTP(S)_PROXY/ALL_PROXY,
  huggingface_hub 即可复用;在每次下载前与启动时应用(覆盖转写按需下载)
- 网络类下载报错翻译成可操作提示(配代理 / 改 HF_ENDPOINT / 检查容器外网)
- .env.example 补充 HF_ENDPOINT 与代理覆盖说明

新增 tests/test_model_fallback.py、tests/test_proxy_apply_env.py(14 用例)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 13:54:44 +08:00

61 lines
1.3 KiB
JSON

[
{
"id": "openai",
"name": "OpenAI",
"type": "built-in",
"logo": "OpenAI",
"api_key": "",
"base_url": "https://api.openai.com/v1"
},
{
"id": "deepseek",
"name": "DeepSeek",
"type": "built-in",
"logo": "DeepSeek",
"api_key": "",
"base_url": "https://api.deepseek.com",
"models": ["deepseek-chat", "deepseek-reasoner"]
},
{
"id": "qwen",
"name": "Qwen",
"type": "built-in",
"logo": "Qwen",
"api_key": "",
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"models": ["qwen-plus", "qwen-turbo", "qwen-max", "qwen-long"]
},
{
"id": "Claude",
"name": "Claude",
"type": "built-in",
"logo": "Claude",
"api_key": "",
"base_url": "https://"
},
{
"id": "gemini",
"name": "Gemini",
"type": "built-in",
"logo": "Gemini",
"api_key": "",
"base_url": "https://generativelanguage.googleapis.com/v1beta/openai/"
},
{
"id": "groq",
"name": "Groq",
"type": "built-in",
"logo": "Groq",
"api_key": "",
"base_url": "https://api.groq.com/openai/v1"
},
{
"id": "ollama",
"name": "ollama",
"type": "built-in",
"logo": "Ollama",
"api_key": "",
"base_url": "http://127.0.0.1:11434/v1"
}
]