本条目是 LiteLLM-RS 的错误处理架构指南,面向为该多供应商网关编写和维护错误处理的 Rust 开发者。
用途:统一 66+ 供应商的错误表示,使网关层与供应商层各司其职,便于映射、重试与降级。
主要能力:采用双层错误体系。网关层 LiteLLMError(core/types/errors/litellm.rs)含 15 个变体,覆盖路由、配置、认证等网关级错误;供应商层 ProviderError(core/providers/unified_provider.rs)含 24 个变体,每个变体带 provider: &'static str,涵盖认证、限流(含 retry_after、rpm_limit、tpm_limit、current_usage)、配额超限、模型不存在、无效请求、网络、超时、供应商不可用、不支持、未实现、功能禁用、上下文长度超限、Token 超限、内容过滤、配置、序列化、API 错误、部署错误、响应解析、路由、转换、流式、取消与其他错误。
使用方式:通过工厂方法创建错误,如 authentication、rate_limit、model_not_found、invalid_request、network、timeout、provider_unavailable、not_supported、configuration、serialization、api_error、response_parsing,以及增强版 rate_limit_with_limits、context_length_exceeded、content_filtered、streaming_error、routing_error。HTTP 状态码按标准模式映射:401/403 认证、404 模型不存在、400/422 无效请求、429 限流、500/502/503 供应商不可用、504 超时,其余走 api_error。ErrorMapper trait 定义 map_http_error、map_network_error、map_parse_error,并提供 GenericErrorMapper 通用实现。重试方面,is_retryable 识别 RateLimit、Timeout、Network、ProviderUnavailable;retry_after 返回对应退避时长(限流取 retry_after 秒、超时 1 秒、网络 500 毫秒、不可用 5 秒);should_fallback 识别 ProviderUnavailable、RateLimit、QuotaExceeded、ModelNotFound。execute_with_retry 实现指数退避重试。另可用 anyhow::Context 为错误添加上下文。
适用场景:Rust 大模型网关、供应商适配层、错误映射与重试降级策略。
限制:资料仅覆盖错误类型、映射与重试机制,未提供安装步骤、命令行用法、平台支持、收费与价格信息,暂未提供。