版本确认 / Version Check
问题描述 / Problem Description
这是 #1208 / PR #1211 的 follow-up,不是同一个根因。
#1208 修复的是 Model disabled. 被误报为网络异常;最新用户反馈中的原始错误是 litellm.APIError: APIError: OpenAIException - Your request was blocked.。当前分支已经正确显示“基础连接测试默认使用模型列表首项”和“本次测试模型”,但后端没有专门识别 Your request was blocked 这类服务商/中转网关拦截错误,最终兜底为 network_error / unknown_error,前端显示为“网络异常”,排障方向仍然容易误导。
历史上 #1212 已有同类用户反馈,但当时被并入 #1208 后关闭。现在从 #1211 的回归反馈看,这应作为独立诊断缺口重新跟踪。
复现步骤 / Reproduction Steps
- 在 Web/桌面端 AI 模型配置中配置一个 OpenAI Compatible 第三方代理或中转网关。
- 模型列表首项为
gpt-5.5(后端会规范化为 openai/gpt-5.5)。
- 点击“测试连接”。
- 上游经 LiteLLM 返回:
litellm.APIError: APIError: OpenAIException - Your request was blocked.
期望行为 / Expected Behavior
测试连接失败是正常的,但诊断不应显示为“网络异常”。
更合理的行为:
- 后端将明确的 blocked 类错误归入“请求被服务商或网关拦截”一类诊断。
- 前端显示类似“请求被拦截”或“服务商拒绝请求”。
- hint 引导用户检查账号风控、地域限制、模型权限、代理商网关策略、内容安全策略或请求来源限制,而不是优先检查 Base URL、代理、TLS/证书。
实际行为 / Actual Behavior
当前显示为:
聊天调用 · 网络异常:LLM channel test failed(原始摘要:litellm.APIError: APIError: OpenAIException - Your request was blocked.)
基础连接测试默认使用模型列表首项:gpt-5.5
本次测试模型:openai/gpt-5.5。基础连接测试默认只测试模型列表中的第一个模型。请检查 Base URL、代理、TLS/证书、中转网关或本地网络策略,并可稍后重试。
这会把用户引向本地网络/TLS 排障,但错误语义更接近服务商或中转网关主动拒绝请求。
错误日志 / Error Logs
litellm.APIError: APIError: OpenAIException - Your request was blocked.
环境信息 / Environment
- 操作系统 / OS: 桌面端用户反馈,具体系统未确认
- Python 版本 / Python version: 未确认
- 运行方式 / Run mode: Desktop / Web settings LLM channel test
- 相关配置 / Relevant config:
- 协议 / Protocol: OpenAI Compatible
- 模型 / Model:
gpt-5.5 -> openai/gpt-5.5
- Base URL: 第三方代理或中转网关,具体地址未公开
其他信息 / Additional Context
排查补充:使用 OpenAI 官方 API 做过对照。官方 /v1/models 可访问且 gpt-5.5 可见;但 Chat Completions 返回的是 429 insufficient_quota。同一 Key 走项目 test_llm_channel() 会被正确分类为 error_code=quota、details.reason=insufficient_balance,说明测试连接功能不是完全坏掉,且 quota 类错误不会误报为网络异常。
建议修复方向:
- 后端在
SystemConfigService._classify_llm_exception() / _classify_llm_http_error() 中增加保守的 blocked 信号识别,例如 your request was blocked、request was blocked、blocked by policy、moderation_blocked 等明确表达上游拦截的文本。
- 推荐新增清晰的诊断类型,如
error_code=request_blocked 或至少 details.reason=provider_blocked,避免继续用 network_error 展示。
- 前端新增对应 label/hint,且保留“本次测试模型”和“基础测试只测首项”的提示。
- 补充后端分类测试、前端展示测试和文档/CHANGELOG。
Refs #1208
Refs #1211
Related #1212
版本确认 / Version Check
fix/1208-llm-model-disabled-diagnostic4f8fb5b问题描述 / Problem Description
这是 #1208 / PR #1211 的 follow-up,不是同一个根因。
#1208 修复的是
Model disabled.被误报为网络异常;最新用户反馈中的原始错误是litellm.APIError: APIError: OpenAIException - Your request was blocked.。当前分支已经正确显示“基础连接测试默认使用模型列表首项”和“本次测试模型”,但后端没有专门识别Your request was blocked这类服务商/中转网关拦截错误,最终兜底为network_error / unknown_error,前端显示为“网络异常”,排障方向仍然容易误导。历史上 #1212 已有同类用户反馈,但当时被并入 #1208 后关闭。现在从 #1211 的回归反馈看,这应作为独立诊断缺口重新跟踪。
复现步骤 / Reproduction Steps
gpt-5.5(后端会规范化为openai/gpt-5.5)。litellm.APIError: APIError: OpenAIException - Your request was blocked.期望行为 / Expected Behavior
测试连接失败是正常的,但诊断不应显示为“网络异常”。
更合理的行为:
实际行为 / Actual Behavior
当前显示为:
这会把用户引向本地网络/TLS 排障,但错误语义更接近服务商或中转网关主动拒绝请求。
错误日志 / Error Logs
环境信息 / Environment
gpt-5.5->openai/gpt-5.5其他信息 / Additional Context
排查补充:使用 OpenAI 官方 API 做过对照。官方
/v1/models可访问且gpt-5.5可见;但 Chat Completions 返回的是429 insufficient_quota。同一 Key 走项目test_llm_channel()会被正确分类为error_code=quota、details.reason=insufficient_balance,说明测试连接功能不是完全坏掉,且 quota 类错误不会误报为网络异常。建议修复方向:
SystemConfigService._classify_llm_exception()/_classify_llm_http_error()中增加保守的 blocked 信号识别,例如your request was blocked、request was blocked、blocked by policy、moderation_blocked等明确表达上游拦截的文本。error_code=request_blocked或至少details.reason=provider_blocked,避免继续用network_error展示。Refs #1208
Refs #1211
Related #1212