diff --git a/lib/llm/models.rb b/lib/llm/models.rb index 010742ff4..1dc61d688 100644 --- a/lib/llm/models.rb +++ b/lib/llm/models.rb @@ -19,6 +19,10 @@ module Llm::Models models_for(feature).include?(model_name.to_s) end + def credit_multiplier_for(model_name) + CONFIG.dig('models', model_name.to_s, 'credit_multiplier') || 1 + end + def feature_config(feature_key) feature = features[feature_key.to_s] return nil unless feature diff --git a/spec/lib/llm/models_spec.rb b/spec/lib/llm/models_spec.rb new file mode 100644 index 000000000..754521c92 --- /dev/null +++ b/spec/lib/llm/models_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Llm::Models do + describe '.credit_multiplier_for' do + it 'returns the credit multiplier for a known model' do + expect(described_class.credit_multiplier_for('gpt-4.1')).to eq(3) + expect(described_class.credit_multiplier_for('gpt-4.1-mini')).to eq(1) + expect(described_class.credit_multiplier_for('gpt-5.1')).to eq(2) + end + + it 'returns 1 for an unknown model' do + expect(described_class.credit_multiplier_for('unknown-model')).to eq(1) + end + + it 'returns 1 for nil' do + expect(described_class.credit_multiplier_for(nil)).to eq(1) + end + end +end