ruby_llm 0.1.0.pre45 → 0.1.0.pre47

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: e122212234e51321ae20de6894bb476b46c83d745ca30bedd9ced246bdcff22f
4
- data.tar.gz: c0619618ca5e09db904545594c613b87ade415a4d1ed38ebd2c8b5857933ea02
3
+ metadata.gz: 92de102c05319b9254741ad429d08bb6d3df6fca1037bb1acdb9a818fb3f4f2f
4
+ data.tar.gz: f8b1e3b1e10d3a666e1f8b7383b98cc832dd90fb7afed0958f9ec37d6206f180
5
5
  SHA512:
6
- metadata.gz: e14f4c2ce93c2d6a4f8ba3909b78a2cad5fb336066b28999ace00135f6abb7a1c3a56389e5a01b41583c86a1b3521ff4296266be9eba831e06b591f558756045
7
- data.tar.gz: 6b68676a11c6168cccb7237fd3e90624fbe624402b731ffd87925f3805bffec849a9358c807890dea142f83035a511964b097defbe52a9ef33c679f6cf9195a3
6
+ metadata.gz: 2d8d351c5b6597ac5501dff34f489866de04ea7230fb317fcb0762be39d9df1d33ecb040a1eaa056125597078ebf1e155de2dfd4ea5b996e4b20807ac8f7247c
7
+ data.tar.gz: a13dfa9b28566cb700380ab0ba7876e824b04dd61962158e9ccc3f9dff2f6524fb7e7692e48546ecbaf8c43d5d5cf16ce66fa3a940602032c7dcf59dbc9e5d07
data/.rspec_status CHANGED
@@ -21,30 +21,30 @@ example_id | status | run_time |
21
21
  ./spec/ruby_llm/chat_streaming_spec.rb[1:1:2:1] | passed | 0.50088 seconds |
22
22
  ./spec/ruby_llm/chat_streaming_spec.rb[1:1:3:1] | passed | 5.69 seconds |
23
23
  ./spec/ruby_llm/chat_streaming_spec.rb[1:1:4:1] | passed | 1.22 seconds |
24
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:1:1] | passed | 3.75 seconds |
25
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:1:2] | passed | 6.1 seconds |
26
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:1:3] | passed | 5.32 seconds |
27
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:2:1] | passed | 1.21 seconds |
28
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:2:2] | passed | 2.36 seconds |
29
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:2:3] | passed | 2.78 seconds |
30
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:3:1] | passed | 1.87 seconds |
31
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:3:2] | passed | 3.12 seconds |
32
- ./spec/ruby_llm/chat_tools_spec.rb[1:1:3:3] | passed | 3.83 seconds |
24
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:1] | passed | 4.26 seconds |
25
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:2] | passed | 6.16 seconds |
26
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:3] | passed | 11.15 seconds |
27
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:4] | passed | 1.3 seconds |
28
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:5] | passed | 2.71 seconds |
29
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:6] | passed | 2.43 seconds |
30
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:7] | passed | 2.71 seconds |
31
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:8] | passed | 4 seconds |
32
+ ./spec/ruby_llm/chat_tools_spec.rb[1:1:9] | passed | 2.81 seconds |
33
33
  ./spec/ruby_llm/embeddings_spec.rb[1:1:1:1] | passed | 0.33357 seconds |
34
34
  ./spec/ruby_llm/embeddings_spec.rb[1:1:1:2] | passed | 0.43632 seconds |
35
35
  ./spec/ruby_llm/embeddings_spec.rb[1:1:2:1] | passed | 0.65614 seconds |
36
36
  ./spec/ruby_llm/embeddings_spec.rb[1:1:2:2] | passed | 2.16 seconds |
37
37
  ./spec/ruby_llm/error_handling_spec.rb[1:1] | passed | 0.29366 seconds |
38
- ./spec/ruby_llm/image_generation_spec.rb[1:1:1] | passed | 24.16 seconds |
39
- ./spec/ruby_llm/image_generation_spec.rb[1:1:2] | passed | 14.81 seconds |
40
- ./spec/ruby_llm/image_generation_spec.rb[1:1:3] | passed | 9.17 seconds |
41
- ./spec/ruby_llm/image_generation_spec.rb[1:1:4] | passed | 0.00083 seconds |
42
- ./spec/ruby_llm/models_spec.rb[1:1:1] | passed | 0.00337 seconds |
43
- ./spec/ruby_llm/models_spec.rb[1:2:1] | passed | 0.00435 seconds |
44
- ./spec/ruby_llm/models_spec.rb[1:2:2] | passed | 0.00491 seconds |
45
- ./spec/ruby_llm/models_spec.rb[1:2:3] | passed | 0.00028 seconds |
46
- ./spec/ruby_llm/models_spec.rb[1:3:1] | passed | 0.00007 seconds |
47
- ./spec/ruby_llm/models_spec.rb[1:3:2] | passed | 0.00036 seconds |
48
- ./spec/ruby_llm/models_spec.rb[1:3:3] | passed | 0.00252 seconds |
49
- ./spec/ruby_llm/models_spec.rb[1:4:1] | passed | 0.0016 seconds |
50
- ./spec/ruby_llm/models_spec.rb[1:4:2] | passed | 0.00156 seconds |
38
+ ./spec/ruby_llm/image_generation_spec.rb[1:1:1] | passed | 14.16 seconds |
39
+ ./spec/ruby_llm/image_generation_spec.rb[1:1:2] | passed | 16.22 seconds |
40
+ ./spec/ruby_llm/image_generation_spec.rb[1:1:3] | passed | 9.1 seconds |
41
+ ./spec/ruby_llm/image_generation_spec.rb[1:1:4] | passed | 0.00138 seconds |
42
+ ./spec/ruby_llm/models_spec.rb[1:1:1] | passed | 0.01071 seconds |
43
+ ./spec/ruby_llm/models_spec.rb[1:1:2] | passed | 0.00056 seconds |
44
+ ./spec/ruby_llm/models_spec.rb[1:1:3] | passed | 0.00336 seconds |
45
+ ./spec/ruby_llm/models_spec.rb[1:2:1] | passed | 0.00016 seconds |
46
+ ./spec/ruby_llm/models_spec.rb[1:2:2] | passed | 0.00085 seconds |
47
+ ./spec/ruby_llm/models_spec.rb[1:3:1] | passed | 1.44 seconds |
48
+ ./spec/ruby_llm/models_spec.rb[1:3:2] | passed | 1.23 seconds |
49
+ ./spec/ruby_llm/models_spec.rb[1:4:1] | passed | 0.0003 seconds |
50
+ ./spec/ruby_llm/models_spec.rb[1:4:2] | passed | 0.00175 seconds |
@@ -96,7 +96,7 @@ module RubyLLM
96
96
  private
97
97
 
98
98
  def persist_new_message
99
- messages.create!(
99
+ @message = messages.create!(
100
100
  role: :assistant,
101
101
  content: String.new
102
102
  )
@@ -110,7 +110,7 @@ module RubyLLM
110
110
  end
111
111
 
112
112
  transaction do
113
- messages.last.update!(
113
+ @message.update!(
114
114
  role: message.role,
115
115
  content: message.content,
116
116
  model_id: message.model_id,
@@ -126,7 +126,7 @@ module RubyLLM
126
126
  tool_calls.each_value do |tool_call|
127
127
  attributes = tool_call.to_h
128
128
  attributes[:tool_call_id] = attributes.delete(:id)
129
- messages.last.tool_calls.create!(**attributes)
129
+ @message.tool_calls.create!(**attributes)
130
130
  end
131
131
  end
132
132
  end
@@ -168,7 +168,7 @@
168
168
  },
169
169
  {
170
170
  "id": "claude-3-7-sonnet-20250219",
171
- "created_at": "2025-02-19T00:00:00Z",
171
+ "created_at": "2025-02-24T00:00:00Z",
172
172
  "display_name": "Claude 3.7 Sonnet",
173
173
  "provider": "anthropic",
174
174
  "context_window": 200000,
@@ -883,6 +883,56 @@
883
883
  ]
884
884
  }
885
885
  },
886
+ {
887
+ "id": "gemini-2.0-flash-lite-preview",
888
+ "created_at": null,
889
+ "display_name": "Gemini 2.0 Flash-Lite Preview",
890
+ "provider": "gemini",
891
+ "context_window": 1048576,
892
+ "max_tokens": 8192,
893
+ "type": "chat",
894
+ "family": "gemini20_flash_lite",
895
+ "supports_vision": true,
896
+ "supports_functions": false,
897
+ "supports_json_mode": false,
898
+ "input_price_per_million": 0.075,
899
+ "output_price_per_million": 0.3,
900
+ "metadata": {
901
+ "version": "preview-02-05",
902
+ "description": "Preview release (February 5th, 2025) of Gemini 2.0 Flash Lite",
903
+ "input_token_limit": 1048576,
904
+ "output_token_limit": 8192,
905
+ "supported_generation_methods": [
906
+ "generateContent",
907
+ "countTokens"
908
+ ]
909
+ }
910
+ },
911
+ {
912
+ "id": "gemini-2.0-flash-lite-preview-02-05",
913
+ "created_at": null,
914
+ "display_name": "Gemini 2.0 Flash-Lite Preview 02-05",
915
+ "provider": "gemini",
916
+ "context_window": 1048576,
917
+ "max_tokens": 8192,
918
+ "type": "chat",
919
+ "family": "gemini20_flash_lite",
920
+ "supports_vision": true,
921
+ "supports_functions": false,
922
+ "supports_json_mode": false,
923
+ "input_price_per_million": 0.075,
924
+ "output_price_per_million": 0.3,
925
+ "metadata": {
926
+ "version": "preview-02-05",
927
+ "description": "Preview release (February 5th, 2025) of Gemini 2.0 Flash Lite",
928
+ "input_token_limit": 1048576,
929
+ "output_token_limit": 8192,
930
+ "supported_generation_methods": [
931
+ "generateContent",
932
+ "countTokens"
933
+ ]
934
+ }
935
+ },
886
936
  {
887
937
  "id": "gemini-2.0-flash-thinking-exp",
888
938
  "created_at": null,
@@ -1305,6 +1355,44 @@
1305
1355
  "owned_by": "system"
1306
1356
  }
1307
1357
  },
1358
+ {
1359
+ "id": "gpt-4.5-preview",
1360
+ "created_at": "2025-02-27T03:24:19+01:00",
1361
+ "display_name": "GPT-4.5 Preview",
1362
+ "provider": "openai",
1363
+ "context_window": 4096,
1364
+ "max_tokens": 4096,
1365
+ "type": "chat",
1366
+ "family": "gpt4",
1367
+ "supports_vision": false,
1368
+ "supports_functions": true,
1369
+ "supports_json_mode": false,
1370
+ "input_price_per_million": 0.5,
1371
+ "output_price_per_million": 1.5,
1372
+ "metadata": {
1373
+ "object": "model",
1374
+ "owned_by": "system"
1375
+ }
1376
+ },
1377
+ {
1378
+ "id": "gpt-4.5-preview-2025-02-27",
1379
+ "created_at": "2025-02-27T03:28:24+01:00",
1380
+ "display_name": "GPT-4.5 Preview 20250227",
1381
+ "provider": "openai",
1382
+ "context_window": 4096,
1383
+ "max_tokens": 4096,
1384
+ "type": "chat",
1385
+ "family": "gpt4",
1386
+ "supports_vision": false,
1387
+ "supports_functions": true,
1388
+ "supports_json_mode": false,
1389
+ "input_price_per_million": 0.5,
1390
+ "output_price_per_million": 1.5,
1391
+ "metadata": {
1392
+ "object": "model",
1393
+ "owned_by": "system"
1394
+ }
1395
+ },
1308
1396
  {
1309
1397
  "id": "gpt-4o",
1310
1398
  "created_at": "2024-05-10T20:50:49+02:00",
@@ -20,6 +20,7 @@ module RubyLLM
20
20
  Provider.for(model)
21
21
  end
22
22
 
23
+ # Class method to refresh model data
23
24
  def self.refresh!
24
25
  models = RubyLLM.providers.flat_map(&:list_models).sort_by(&:id)
25
26
  # Write to models.json
@@ -100,5 +101,12 @@ module RubyLLM
100
101
  def by_provider(provider)
101
102
  self.class.new(all.select { |m| m.provider == provider.to_s })
102
103
  end
104
+
105
+ # Instance method to refresh models
106
+ def refresh!
107
+ self.class.refresh!
108
+ # Return self for method chaining
109
+ self
110
+ end
103
111
  end
104
112
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyLLM
4
- VERSION = '0.1.0.pre45'
4
+ VERSION = '0.1.0.pre47'
5
5
  end
data/lib/ruby_llm.rb CHANGED
@@ -58,7 +58,7 @@ module RubyLLM
58
58
  @logger ||= Logger.new(
59
59
  $stdout,
60
60
  progname: 'RubyLLM',
61
- level: ENV['RUBY_LLM_DEBUG'] ? Logger::DEBUG : Logger::INFO
61
+ level: ENV['RUBYLLM_DEBUG'] ? Logger::DEBUG : Logger::INFO
62
62
  )
63
63
  end
64
64
  end
@@ -70,21 +70,18 @@ namespace :models do # rubocop:disable Metrics/BlockLength
70
70
  RubyLLM.configure do |config|
71
71
  config.openai_api_key = ENV.fetch('OPENAI_API_KEY')
72
72
  config.anthropic_api_key = ENV.fetch('ANTHROPIC_API_KEY')
73
- config.gemini_api_key = ENV.fetch('GEMINI_API_KEY', nil)
74
- config.deepseek_api_key = ENV.fetch('DEEPSEEK_API_KEY', nil)
73
+ config.gemini_api_key = ENV.fetch('GEMINI_API_KEY')
74
+ config.deepseek_api_key = ENV.fetch('DEEPSEEK_API_KEY')
75
75
  end
76
76
 
77
- # Get all models
78
- models = RubyLLM.models.refresh!
79
-
80
- # Write to models.json
81
- models_file = File.expand_path('../../lib/ruby_llm/models.json', __dir__)
82
- File.write(models_file, JSON.pretty_generate(models.map(&:to_h)))
77
+ # Refresh models (now returns self instead of models array)
78
+ models = RubyLLM.models.refresh!.all
83
79
 
84
80
  puts "Updated models.json with #{models.size} models:"
85
81
  RubyLLM::Provider.providers.each do |provider_sym, provider_module|
86
82
  provider_name = provider_module.to_s.split('::').last
87
- puts "#{provider_name} models: #{models.count { |m| m.provider == provider_sym.to_s }}"
83
+ provider_models = models.select { |m| m.provider == provider_sym.to_s }
84
+ puts "#{provider_name} models: #{provider_models.size}"
88
85
  end
89
86
  end
90
87
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.pre45
4
+ version: 0.1.0.pre47
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carmine Paolino