mx_quota.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. """妙想 API 额度类错误识别与前端提示文案"""
  2. MX_QUOTA_HINT = (
  3. "今日妙想 Skills 调用额度已用尽,以下为缓存数据(若有);"
  4. "升级或次日重置额度后可获取最新数据。"
  5. )
  6. def quota_exhausted_no_cache_message(upstream_error: str | None) -> str:
  7. """额度用尽且无进程内缓存时的提示(附上游原文,便于核对 Key 是否生效、是否真为 113 等)"""
  8. base = MX_QUOTA_HINT + "(暂无可用缓存)"
  9. u = (upstream_error or "").strip()
  10. if not u:
  11. return base
  12. return f"{base} 上游提示:{u}"
  13. def is_mx_quota_exhausted(error_text: str | None) -> bool:
  14. """判断是否命中免费版日限额(状态码 113 等)"""
  15. if not error_text:
  16. return False
  17. s = str(error_text)
  18. if "状态码 113" in s:
  19. return True
  20. if "调用次数已达到上限" in s:
  21. return True
  22. if "今日调用次数已达到上限" in s:
  23. return True
  24. # 避免宽泛匹配:仅当同时涉及「免费版 + 上限」且明显与调用次数相关时才视为额度类
  25. if "免费版" in s and "上限" in s:
  26. if any(k in s for k in ("调用", "次数", "配额", "限额", "Skills")):
  27. return True
  28. return False