omni_llm_kit/model/
errors.rs1use std::time::Duration;
2use http::StatusCode;
3use thiserror::Error;
4use crate::model::LanguageModelProviderName;
5
6
7#[derive(Error, Debug)]
8pub enum LanguageModelCompletionError {
9 #[error("prompt too large for context window")]
10 PromptTooLarge { tokens: Option<u64> },
11 #[error("missing {provider} API key")]
12 NoApiKey { provider: LanguageModelProviderName },
13 #[error("{provider}'s API rate limit exceeded")]
14 RateLimitExceeded {
15 provider: LanguageModelProviderName,
16 retry_after: Option<Duration>,
17 },
18 #[error("{provider}'s API servers are overloaded right now")]
19 ServerOverloaded {
20 provider: LanguageModelProviderName,
21 retry_after: Option<Duration>,
22 },
23 #[error("{provider}'s API server reported an internal server error: {message}")]
24 ApiInternalServerError {
25 provider: LanguageModelProviderName,
26 message: String,
27 },
28 #[error("{message}")]
29 UpstreamProviderError {
30 message: String,
31 status: StatusCode,
32 retry_after: Option<Duration>,
33 },
34 #[error("HTTP response error from {provider}'s API: status {status_code} - {message:?}")]
35 HttpResponseError {
36 provider: LanguageModelProviderName,
37 status_code: StatusCode,
38 message: String,
39 },
40
41 #[error("invalid request format to {provider}'s API: {message}")]
43 BadRequestFormat {
44 provider: LanguageModelProviderName,
45 message: String,
46 },
47 #[error("authentication error with {provider}'s API: {message}")]
48 AuthenticationError {
49 provider: LanguageModelProviderName,
50 message: String,
51 },
52 #[error("permission error with {provider}'s API: {message}")]
53 PermissionError {
54 provider: LanguageModelProviderName,
55 message: String,
56 },
57 #[error("language model provider API endpoint not found")]
58 ApiEndpointNotFound { provider: LanguageModelProviderName },
59 #[error("I/O error reading response from {provider}'s API")]
60 ApiReadResponseError {
61 provider: LanguageModelProviderName,
62 #[source]
63 error: std::io::Error,
64 },
65 #[error("error serializing request to {provider} API")]
66 SerializeRequest {
67 provider: LanguageModelProviderName,
68 #[source]
69 error: serde_json::Error,
70 },
71 #[error("error building request body to {provider} API")]
72 BuildRequestBody {
73 provider: LanguageModelProviderName,
74 #[source]
75 error: http::Error,
76 },
77 #[error("error sending HTTP request to {provider} API")]
78 HttpSend {
79 provider: LanguageModelProviderName,
80 #[source]
81 error: anyhow::Error,
82 },
83 #[error("error deserializing {provider} API response")]
84 DeserializeResponse {
85 provider: LanguageModelProviderName,
86 #[source]
87 error: serde_json::Error,
88 },
89
90 #[error(transparent)]
92 Other(#[from] anyhow::Error),
93}
94