namespace OASystem.API.OAMethodLib.TokenHubAI.Models;
///
/// TokenHub API 错误响应(OpenAI 兼容协议)
///
public class TokenHubError
{
///
/// 错误类型
///
public string? Type { get; set; }
///
/// 业务错误码
///
public string? Code { get; set; }
///
/// 错误描述
///
public string? Message { get; set; }
///
/// 错误来源: client | gateway | upstream
///
public string? Source { get; set; }
///
/// 上游错误码
///
public string? UpstreamCode { get; set; }
///
/// 上游 HTTP 状态码
///
public int? UpstreamStatus { get; set; }
///
/// 请求唯一标识
///
public string? RequestId { get; set; }
///
/// 判断是否为客户端错误
///
public bool IsClientError => Source == "client";
///
/// 判断是否为网关错误
///
public bool IsGatewayError => Source == "gateway";
///
/// 判断是否为上游错误
///
public bool IsUpstreamError => Source == "upstream";
///
/// 判断是否可重试(上游错误或服务不可用)
///
public bool IsRetryable => Source == "upstream" ||
Type == "service_unavailable" ||
Type == "timeout_error" ||
Code == "503001" ||
Code == "504001" ||
Code == "502001";
public override string ToString()
{
return $"[{Code}] {Type}: {Message} (RequestId: {RequestId})";
}
}
///
/// 错误响应外层包装(OpenAI 协议)
///
public class TokenHubErrorResponse
{
public TokenHubError? Error { get; set; }
}
///
/// Anthropic 协议错误响应
///
public class AnthropicErrorResponse
{
public string? Type { get; set; }
public AnthropicErrorDetail? Error { get; set; }
}
public class AnthropicErrorDetail
{
public string? Type { get; set; }
public string? Message { get; set; }
public string? Reqid { get; set; }
}