Skip to main content

LlmError

Enum LlmError 

Source
#[non_exhaustive]
pub enum LlmError { Http { status: Option<StatusCode>, message: String, retryable: bool, }, Auth(String), InvalidRequest(String), Provider { code: String, message: String, retryable: bool, }, ResponseFormat { message: String, raw: String, }, SchemaValidation { message: String, schema: Value, actual: Value, }, ToolExecution { tool_name: String, source: Box<dyn Error + Send + Sync>, }, RetryExhausted { attempts: u32, last_error: Box<LlmError>, }, Timeout { elapsed_ms: u64, }, MaxDepthExceeded { current: u32, limit: u32, }, }
Expand description

The unified error type returned by all provider operations.

Variants are #[non_exhaustive] — new error kinds may be added in minor releases without breaking downstream matches (always include a wildcard arm).

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Http

An HTTP-level failure (transport error, unexpected status code).

status is None when the request never received a response (e.g. DNS failure, connection reset).

Fields

§status: Option<StatusCode>

The HTTP status code, if one was received.

§message: String

A human-readable description of the failure.

§retryable: bool

Whether the caller should retry this request.

§

Auth(String)

The API key or token was rejected.

§

InvalidRequest(String)

The request was malformed (missing fields, invalid parameters).

§

Provider

A provider-specific error that doesn’t map to another variant.

Fields

§code: String

Provider-defined error code (e.g. "overloaded").

§message: String

Human-readable error description.

§retryable: bool

Whether the caller should retry this request.

§

ResponseFormat

The response body could not be parsed.

Fields

§message: String

What went wrong during parsing.

§raw: String

The raw response body, for diagnostics.

§

SchemaValidation

A structured-output response failed JSON Schema validation.

Fields

§message: String

Concatenated validation error messages.

§schema: Value

The schema the value was validated against.

§actual: Value

The value that failed validation.

§

ToolExecution

A tool invocation raised an error.

Fields

§tool_name: String

The name of the tool that failed.

§source: Box<dyn Error + Send + Sync>

The underlying error.

§

RetryExhausted

A retry policy exhausted its budget without a successful response.

Fields

§attempts: u32

How many attempts were made.

§last_error: Box<LlmError>

The error from the final attempt.

§

Timeout

The operation exceeded its deadline.

Fields

§elapsed_ms: u64

Milliseconds elapsed before the timeout fired.

§

MaxDepthExceeded

A nested tool loop exceeded the maximum allowed depth.

This occurs when tool_loop is called recursively (e.g., a tool spawning a sub-agent) and the nesting depth exceeds max_depth in ToolLoopConfig.

Fields

§current: u32

The depth at which the error was raised.

§limit: u32

The configured maximum depth.

Implementations§

Source§

impl LlmError

Source

pub fn is_retryable(&self) -> bool

Returns true if the error is transient and the request may succeed on retry.

Useful for retry interceptors. This checks the retryable flag on applicable variants and treats timeouts as always retryable.

§Example
use llm_stack::LlmError;

let err = LlmError::Timeout { elapsed_ms: 5000 };
assert!(err.is_retryable());

let err = LlmError::Auth("bad key".into());
assert!(!err.is_retryable());

Trait Implementations§

Source§

impl Debug for LlmError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for LlmError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for LlmError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for LlmError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more