Skip to main content

rskit_ai/
error.rs

1//! Typed GenAI error sentinels.
2
3use thiserror::Error;
4
5use crate::BudgetExceededReason;
6
7/// Typed AI error sentinels.
8#[derive(Debug, Clone, PartialEq, Eq, Error)]
9#[non_exhaustive]
10pub enum GenAiError {
11    /// Provider rate limit was hit.
12    #[error("rate limited")]
13    RateLimited,
14    /// Request exceeded model context length.
15    #[error("context length exceeded")]
16    ContextLengthExceeded,
17    /// Content filter rejected the request or response.
18    #[error("content filtered")]
19    ContentFilter,
20    /// Model is overloaded.
21    #[error("model overloaded")]
22    ModelOverloaded,
23    /// Budget was exceeded.
24    #[error("budget exceeded: {0:?}")]
25    BudgetExceeded(BudgetExceededReason),
26    /// Requested model was not found.
27    #[error("model not found")]
28    ModelNotFound,
29    /// Request was invalid.
30    #[error("invalid request: {0}")]
31    InvalidRequest(String),
32}