| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- using OASystem.API.OAMethodLib.TokenHubAI.Models;
- namespace OASystem.API.OAMethodLib.TokenHubAI;
- public static class TokenHubErrorExtensions
- {
- /// <summary>
- /// 判断是否为 API Key 相关错误
- /// </summary>
- public static bool IsApiKeyError(this TokenHubException ex)
- {
- return ex.ErrorCode is TokenHubErrorCode.InvalidApiKey
- or TokenHubErrorCode.ApiKeyExpired
- or TokenHubErrorCode.ApiKeyDisabled
- or TokenHubErrorCode.Unauthorized;
- }
- /// <summary>
- /// 判断是否为模型相关错误
- /// </summary>
- public static bool IsModelError(this TokenHubException ex)
- {
- return ex.ErrorCode is TokenHubErrorCode.ModelNotFound
- or TokenHubErrorCode.UnsupportedModel
- or TokenHubErrorCode.ModelAccessDenied;
- }
- /// <summary>
- /// 判断是否为限流错误
- /// </summary>
- public static bool IsRateLimitError(this TokenHubException ex)
- {
- return TokenHubErrorCode.IsRateLimitError(ex.ErrorCode);
- }
- /// <summary>
- /// 判断是否为计费错误
- /// </summary>
- public static bool IsBillingError(this TokenHubException ex)
- {
- return TokenHubErrorCode.IsBillingError(ex.ErrorCode);
- }
- private static readonly IReadOnlyDictionary<string, string> ErrorMessages =
- new Dictionary<string, string>
- {
- // ============================================================
- // 400 系列 - 请求参数错误 (HTTP 400)
- // ============================================================
- ["400001"] = "请求体格式无效,请检查请求内容是否为合法JSON",
- ["400002"] = "请求参数不合法,请检查必填字段是否缺失或值是否正确",
- ["400003"] = "输入内容过长,超出模型上下文窗口限制,请减少输入长度",
- ["400004"] = "请求的模型不存在,请检查模型名称拼写是否正确",
- ["400005"] = "当前模型不支持该请求类型或能力,请检查模型兼容性",
- ["400006"] = "请求的响应格式不被模型支持,请使用支持的格式类型",
- ["401006"] = "模型服务当前处于离线状态,请稍后重试或检查模型配置",
- // ============================================================
- // 401 系列 - 鉴权错误 (HTTP 401)
- // ============================================================
- ["401001"] = "未携带有效的认证信息,请检查Authorization请求头",
- ["401002"] = "API Key无效,请检查您的密钥配置是否正确",
- ["401003"] = "API Key已过期,请重新生成新的API Key",
- ["401004"] = "API Key已被禁用,请联系管理员或检查控制台状态",
- ["401005"] = "签名验证失败,请检查签名算法和密钥是否正确",
- // ============================================================
- // 402 系列 - 计费/套餐错误 (HTTP 402)
- // ============================================================
- ["401007"] = "当前Endpoint无可用的免费套餐,请购买或升级套餐",
- ["401008"] = "免费配额已耗尽,请升级套餐或等待配额周期重置",
- ["403004"] = "账户余额不足,请及时充值以恢复服务",
- // ============================================================
- // 403 系列 - 权限错误 (HTTP 403)
- // ============================================================
- ["403001"] = "套餐包已被禁用,请检查套餐状态或联系管理员",
- ["403002"] = "当前API Key未被授权访问该模型,请申请相应权限",
- ["403003"] = "账号已被封禁,请联系技术支持处理",
- ["403005"] = "来源IP不在白名单内,请在控制台添加当前IP到白名单",
- // ============================================================
- // 429 系列 - 限流错误 (HTTP 429)
- // ============================================================
- ["429001"] = "请求频率超出限制,请降低调用频率或联系平台提升配额",
- ["429002"] = "每分钟请求数超限,请降低调用频率",
- ["429003"] = "每分钟Token数超限,请降低输入长度或调用频率",
- ["429004"] = "每日Token数超限,请控制日用量或升级套餐",
- ["429005"] = "并发请求数超限,请减少同时并发数",
- // ============================================================
- // 499/410 系列 - 连接/会话错误
- // ============================================================
- ["499001"] = "请求已被客户端取消,请检查客户端连接状态",
- ["410001"] = "会话已过期或绑定的服务不可用,请重新创建会话",
- // ============================================================
- // 451 - 内容安全错误 (HTTP 451)
- // ============================================================
- ["451001"] = "输入或输出内容触发了安全策略,请检查内容是否合规",
- // ============================================================
- // 500+ 系列 - 服务端错误
- // ============================================================
- ["500001"] = "服务内部发生错误,请稍后重试或联系技术支持",
- ["502001"] = "上游模型服务暂时不可用,请稍后重试",
- ["503001"] = "服务暂时不可用,请稍后重试",
- ["504001"] = "服务响应超时,请稍后重试",
- };
- /// <summary>
- /// 获取错误码对应的中文描述
- /// </summary>
- public static string GetMessage(string errorCode)
- {
- return ErrorMessages.TryGetValue(errorCode, out var message)
- ? message
- : $"未知错误,错误码: {errorCode},请联系技术支持";
- }
- }
|