Exception: RubyLLM::Error

Inherits:
StandardError
  • Object
show all
Defined in:
lib/ruby_llm/error.rb

Overview

Error is the base class for provider-operation errors raised by RubyLLM, including API, network, capability, and provider response-shape failures. When an HTTP response is available, it wraps that response and normalizes the message across providers. Subclasses map common HTTP status codes: BadRequestError (400), UnauthorizedError (401), PaymentRequiredError (402), ForbiddenError (403), RateLimitError (429), ServerError (500), ServiceUnavailableError (502 to 504), and OverloadedError (529).

begin
RubyLLM.chat.ask "Translate 'hello' to French."
rescue RubyLLM::RateLimitError
puts "Rate limit hit. Please wait a moment."
rescue RubyLLM::Error => e
puts "API error: #{e.message}"
puts e.response&.status
end

Local setup and programming errors, such as ConfigurationError and ModelNotFoundError, inherit from StandardError directly and are not caught by rescuing Error.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = nil, response: nil) ⇒ Error

Creates an error with message. Pass response: to attach the HTTP response; its body supplies the message when message is nil.



36
37
38
39
# File 'lib/ruby_llm/error.rb', line 36

def initialize(message = nil, response: nil)
  @response = response
  super(message || response&.body || self.class.default_message)
end

Instance Attribute Details

#responseObject (readonly)

The HTTP response that caused the error, or nil when none is available. Its status and body carry the provider's reply.



28
29
30
# File 'lib/ruby_llm/error.rb', line 28

def response
  @response
end

Class Method Details

.default_messageObject

:nodoc:



30
31
32
# File 'lib/ruby_llm/error.rb', line 30

def self.default_message # :nodoc:
  nil
end