1use thiserror::Error;
4
5use crate::BudgetExceededReason;
6
7#[derive(Debug, Clone, PartialEq, Eq, Error)]
9#[non_exhaustive]
10pub enum GenAiError {
11 #[error("rate limited")]
13 RateLimited,
14 #[error("context length exceeded")]
16 ContextLengthExceeded,
17 #[error("content filtered")]
19 ContentFilter,
20 #[error("model overloaded")]
22 ModelOverloaded,
23 #[error("budget exceeded: {0:?}")]
25 BudgetExceeded(BudgetExceededReason),
26 #[error("model not found")]
28 ModelNotFound,
29 #[error("invalid request: {0}")]
31 InvalidRequest(String),
32}