Skip to content

[Bug] LLM 渠道测试将 Your request was blocked 误报为网络异常 #1223

Description

@massif-01

版本确认 / 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

  1. 在 Web/桌面端 AI 模型配置中配置一个 OpenAI Compatible 第三方代理或中转网关。
  2. 模型列表首项为 gpt-5.5(后端会规范化为 openai/gpt-5.5)。
  3. 点击“测试连接”。
  4. 上游经 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=quotadetails.reason=insufficient_balance,说明测试连接功能不是完全坏掉,且 quota 类错误不会误报为网络异常。

建议修复方向:

  • 后端在 SystemConfigService._classify_llm_exception() / _classify_llm_http_error() 中增加保守的 blocked 信号识别,例如 your request was blockedrequest was blockedblocked by policymoderation_blocked 等明确表达上游拦截的文本。
  • 推荐新增清晰的诊断类型,如 error_code=request_blocked 或至少 details.reason=provider_blocked,避免继续用 network_error 展示。
  • 前端新增对应 label/hint,且保留“本次测试模型”和“基础测试只测首项”的提示。
  • 补充后端分类测试、前端展示测试和文档/CHANGELOG。

Refs #1208
Refs #1211
Related #1212

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions