diff --git a/app/models/provider.rb b/app/models/provider.rb index f188231e..c775d94b 100644 --- a/app/models/provider.rb +++ b/app/models/provider.rb @@ -61,13 +61,12 @@ class Provider # Override to set class-level error transformation for methods using `with_provider_response` def default_error_transformer(error) if error.is_a?(Faraday::Error) - Error.new( + self.class::Error.new( error.message, details: error.response&.dig(:body), - provider: self.class.name ) else - Error.new(error.message, provider: self.class.name) + self.class::Error.new(error.message) end end diff --git a/app/models/provider/openai.rb b/app/models/provider/openai.rb index fb515fd7..bf5fad05 100644 --- a/app/models/provider/openai.rb +++ b/app/models/provider/openai.rb @@ -1,6 +1,9 @@ class Provider::Openai < Provider include LlmProvider + # Subclass so errors caught in this provider are raised as Provider::Openai::Error + Error = Class.new(Provider::Error) + MODELS = %w[gpt-4o] def initialize(access_token) diff --git a/app/models/provider/synth.rb b/app/models/provider/synth.rb index 81d68ed5..17653d65 100644 --- a/app/models/provider/synth.rb +++ b/app/models/provider/synth.rb @@ -1,6 +1,9 @@ class Provider::Synth < Provider include ExchangeRateProvider, SecurityProvider + # Subclass so errors caught in this provider are raised as Provider::Synth::Error + Error = Class.new(Provider::Error) + def initialize(api_key) @api_key = api_key end