last_llm 0.0.7 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c45436277c2f585b851688ade72bbd838d33f0c51b0792942e56734e534a9a2e
4
- data.tar.gz: 0ad94566719d472ccfcea83cb5bce21cd4142df80b2ffdda0f139ff561d6c9d8
3
+ metadata.gz: fcfc9f768214734064aa171be872fc31ae283254a425e3cea60863d9ffe9c925
4
+ data.tar.gz: 93ff7962c0e3c64936beaf30f8e5923d1d4ca88712592910d71ea609a0c15c7d
5
5
  SHA512:
6
- metadata.gz: c77932637b424601a950f6ad655c3886773be3b9880f4ce5607d4af18f0036876dd9463c973f64628c1a97ef50d73b56af9d6cd7f492144da164177dc628d4dc
7
- data.tar.gz: 51709ae9cfee0d6047b5076ca0926f6395ebae1cbaa7c3b6621787dca86e8f0ff3a5d3e5f44a1d1038315effeae118b32352b963ae12f23fdd43c7356b99ca1e
6
+ metadata.gz: cdf524997506cd40183f9bcf60f35483f86caa42cf10ab7b9831d268d6aa3328bda96fbbbc598114ce8db1b33612e1b30d34a6d1f60f8dfd2dc2e65dc326714b
7
+ data.tar.gz: 8b6c9da52eef3ed6c228ae6228dc127e78f5ea607ec149140790393ed99c3f334d814405dee0ee83a66295eda2d8144a2780e7bfaa481b57ea704144954d6a68
@@ -20,6 +20,9 @@ module LastLLM
20
20
  }
21
21
  }
22
22
  }.freeze
23
+
24
+ VALID_LOG_LEVELS = [:debug, :info, :warn, :error, :fatal].freeze
25
+
23
26
  # Default provider to use
24
27
  attr_accessor :default_provider
25
28
 
@@ -34,6 +37,9 @@ module LastLLM
34
37
  # Global settings
35
38
  attr_reader :globals
36
39
 
40
+ # Logger instance
41
+ attr_accessor :logger
42
+
37
43
  # Initialize a new configuration
38
44
  # @param options [Hash] Configuration options
39
45
  # @option options [Symbol] :default_provider (:openai) The default provider to use
@@ -49,6 +55,21 @@ module LastLLM
49
55
  max_retries: 3,
50
56
  retry_delay: 1
51
57
  }
58
+ @provider_configs = {}
59
+ @logger = nil
60
+ @log_level = :info
61
+ end
62
+
63
+ def log_level=(level)
64
+ level_sym = level.to_sym
65
+ unless VALID_LOG_LEVELS.include?(level_sym)
66
+ raise ConfigurationError, "Invalid log level: #{level}. Valid levels are: #{VALID_LOG_LEVELS.join(', ')}"
67
+ end
68
+ @log_level = level_sym
69
+ end
70
+
71
+ def log_level
72
+ @log_level
52
73
  end
53
74
 
54
75
  # Configure a provider with specific settings
@@ -56,23 +77,46 @@ module LastLLM
56
77
  # @param config [Hash] Provider-specific configuration
57
78
  # @return [Hash] The updated provider configuration
58
79
  def configure_provider(provider, config = {})
59
- @providers[provider] ||= {}
60
- @providers[provider].merge!(config)
80
+ provider_sym = provider.to_sym
81
+ @providers[provider_sym] ||= {}
82
+ @providers[provider_sym].merge!(config)
83
+
84
+ # Also update @provider_configs to maintain consistency
85
+ @provider_configs ||= {}
86
+ @provider_configs[provider_sym] ||= {}
87
+ @provider_configs[provider_sym].merge!(config)
61
88
  end
62
89
 
63
90
  # Get provider configuration
64
91
  # @param provider [Symbol] The provider name
65
92
  # @return [Hash] The provider configuration
66
93
  def provider_config(provider)
67
- config = @providers[provider] || {}
94
+ provider_sym = provider.to_sym
95
+ config = @provider_configs&.dig(provider_sym) || @providers[provider_sym] || {}
68
96
  # Ensure skip_validation is set when in test mode
69
97
  config = config.dup
70
98
  config[:skip_validation] = true if @test_mode
71
99
  config
72
100
  end
73
101
 
102
+ # Set configuration value for a specific provider
103
+ def set_provider_config(provider, key, value)
104
+ @provider_configs ||= {}
105
+ provider_sym = provider.to_sym
106
+ @provider_configs[provider_sym] ||= {}
107
+ @provider_configs[provider_sym][key.to_sym] = value
108
+ end
109
+
110
+ # Get provider configuration value
111
+ def get_provider_config(provider, key = nil)
112
+ @provider_configs ||= {}
113
+ provider_config = @provider_configs[provider.to_sym] || {}
114
+ return provider_config if key.nil?
115
+
116
+ provider_config[key.to_sym]
117
+ end
118
+
74
119
  # Check if running in test mode
75
- # @return [Boolean] Whether in test mode
76
120
  def test_mode?
77
121
  @test_mode
78
122
  end
@@ -89,7 +133,9 @@ module LastLLM
89
133
  config = provider_config(provider)
90
134
 
91
135
  validation[:required]&.each do |key|
92
- raise ConfigurationError, "#{key.to_s.gsub('_', ' ')} is required for #{provider} provider" unless config[key]
136
+ unless config[key.to_sym]
137
+ raise ConfigurationError, "#{key.to_s.gsub('_', ' ')} is required for #{provider} provider"
138
+ end
93
139
  end
94
140
 
95
141
  return unless validation[:custom]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LastLLM
4
- VERSION = '0.0.7'
4
+ VERSION = '0.0.9'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: last_llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Obukwelu