ruby_llm 1.0.0 → 1.1.0rc1
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 +4 -4
- data/README.md +58 -19
- data/lib/ruby_llm/active_record/acts_as.rb +46 -7
- data/lib/ruby_llm/aliases.json +65 -0
- data/lib/ruby_llm/aliases.rb +56 -0
- data/lib/ruby_llm/chat.rb +11 -10
- data/lib/ruby_llm/configuration.rb +4 -0
- data/lib/ruby_llm/error.rb +15 -4
- data/lib/ruby_llm/models.json +1489 -283
- data/lib/ruby_llm/models.rb +57 -22
- data/lib/ruby_llm/provider.rb +44 -41
- data/lib/ruby_llm/providers/anthropic/capabilities.rb +8 -9
- data/lib/ruby_llm/providers/anthropic/chat.rb +31 -4
- data/lib/ruby_llm/providers/anthropic/streaming.rb +12 -6
- data/lib/ruby_llm/providers/anthropic.rb +4 -0
- data/lib/ruby_llm/providers/bedrock/capabilities.rb +168 -0
- data/lib/ruby_llm/providers/bedrock/chat.rb +108 -0
- data/lib/ruby_llm/providers/bedrock/models.rb +84 -0
- data/lib/ruby_llm/providers/bedrock/signing.rb +831 -0
- data/lib/ruby_llm/providers/bedrock/streaming/base.rb +46 -0
- data/lib/ruby_llm/providers/bedrock/streaming/content_extraction.rb +63 -0
- data/lib/ruby_llm/providers/bedrock/streaming/message_processing.rb +79 -0
- data/lib/ruby_llm/providers/bedrock/streaming/payload_processing.rb +90 -0
- data/lib/ruby_llm/providers/bedrock/streaming/prelude_handling.rb +91 -0
- data/lib/ruby_llm/providers/bedrock/streaming.rb +36 -0
- data/lib/ruby_llm/providers/bedrock.rb +83 -0
- data/lib/ruby_llm/providers/deepseek/chat.rb +17 -0
- data/lib/ruby_llm/providers/deepseek.rb +5 -0
- data/lib/ruby_llm/providers/gemini/capabilities.rb +50 -34
- data/lib/ruby_llm/providers/gemini/chat.rb +8 -15
- data/lib/ruby_llm/providers/gemini/images.rb +5 -10
- data/lib/ruby_llm/providers/gemini/models.rb +0 -8
- data/lib/ruby_llm/providers/gemini/streaming.rb +35 -76
- data/lib/ruby_llm/providers/gemini/tools.rb +12 -12
- data/lib/ruby_llm/providers/gemini.rb +4 -0
- data/lib/ruby_llm/providers/openai/capabilities.rb +154 -177
- data/lib/ruby_llm/providers/openai/streaming.rb +9 -13
- data/lib/ruby_llm/providers/openai.rb +4 -0
- data/lib/ruby_llm/streaming.rb +96 -0
- data/lib/ruby_llm/tool.rb +15 -7
- data/lib/ruby_llm/version.rb +1 -1
- data/lib/ruby_llm.rb +8 -3
- data/lib/tasks/browser_helper.rb +97 -0
- data/lib/tasks/capability_generator.rb +123 -0
- data/lib/tasks/capability_scraper.rb +224 -0
- data/lib/tasks/cli_helper.rb +22 -0
- data/lib/tasks/code_validator.rb +29 -0
- data/lib/tasks/model_updater.rb +66 -0
- data/lib/tasks/models.rake +28 -197
- data/lib/tasks/vcr.rake +97 -0
- metadata +42 -19
- data/.github/workflows/cicd.yml +0 -109
- data/.github/workflows/docs.yml +0 -53
- data/.gitignore +0 -58
- data/.overcommit.yml +0 -26
- data/.rspec +0 -3
- data/.rspec_status +0 -50
- data/.rubocop.yml +0 -10
- data/.yardopts +0 -12
- data/Gemfile +0 -32
- data/Rakefile +0 -9
- data/bin/console +0 -17
- data/bin/setup +0 -6
- data/ruby_llm.gemspec +0 -43
data/.rspec
DELETED
data/.rspec_status
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
example_id | status | run_time |
|
2
|
-
-------------------------------------------------- | ------ | --------------- |
|
3
|
-
./spec/ruby_llm/active_record/acts_as_spec.rb[1:1] | passed | 3.38 seconds |
|
4
|
-
./spec/ruby_llm/active_record/acts_as_spec.rb[1:2] | passed | 2.48 seconds |
|
5
|
-
./spec/ruby_llm/chat_content_spec.rb[1:1:1] | passed | 2.74 seconds |
|
6
|
-
./spec/ruby_llm/chat_content_spec.rb[1:1:2] | passed | 1.29 seconds |
|
7
|
-
./spec/ruby_llm/chat_content_spec.rb[1:1:3] | passed | 2.54 seconds |
|
8
|
-
./spec/ruby_llm/chat_content_spec.rb[1:2:1] | passed | 2.77 seconds |
|
9
|
-
./spec/ruby_llm/chat_content_spec.rb[1:2:2] | passed | 2.1 seconds |
|
10
|
-
./spec/ruby_llm/chat_pdf_spec.rb[1:1:1] | passed | 7.75 seconds |
|
11
|
-
./spec/ruby_llm/chat_pdf_spec.rb[1:1:2] | passed | 13.88 seconds |
|
12
|
-
./spec/ruby_llm/chat_spec.rb[1:1:1:1] | passed | 1.02 seconds |
|
13
|
-
./spec/ruby_llm/chat_spec.rb[1:1:1:2] | passed | 3.95 seconds |
|
14
|
-
./spec/ruby_llm/chat_spec.rb[1:1:2:1] | passed | 0.4854 seconds |
|
15
|
-
./spec/ruby_llm/chat_spec.rb[1:1:2:2] | passed | 1.37 seconds |
|
16
|
-
./spec/ruby_llm/chat_spec.rb[1:1:3:1] | passed | 7.34 seconds |
|
17
|
-
./spec/ruby_llm/chat_spec.rb[1:1:3:2] | passed | 19.22 seconds |
|
18
|
-
./spec/ruby_llm/chat_spec.rb[1:1:4:1] | passed | 3.15 seconds |
|
19
|
-
./spec/ruby_llm/chat_spec.rb[1:1:4:2] | passed | 2.51 seconds |
|
20
|
-
./spec/ruby_llm/chat_streaming_spec.rb[1:1:1:1] | passed | 0.91374 seconds |
|
21
|
-
./spec/ruby_llm/chat_streaming_spec.rb[1:1:2:1] | passed | 0.50088 seconds |
|
22
|
-
./spec/ruby_llm/chat_streaming_spec.rb[1:1:3:1] | passed | 5.69 seconds |
|
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] | 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
|
-
./spec/ruby_llm/embeddings_spec.rb[1:1:1:1] | passed | 0.33357 seconds |
|
34
|
-
./spec/ruby_llm/embeddings_spec.rb[1:1:1:2] | passed | 0.43632 seconds |
|
35
|
-
./spec/ruby_llm/embeddings_spec.rb[1:1:2:1] | passed | 0.65614 seconds |
|
36
|
-
./spec/ruby_llm/embeddings_spec.rb[1:1:2:2] | passed | 2.16 seconds |
|
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 | 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 |
|
data/.rubocop.yml
DELETED
data/.yardopts
DELETED
data/Gemfile
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
source 'https://rubygems.org'
|
4
|
-
|
5
|
-
gemspec
|
6
|
-
|
7
|
-
group :development do
|
8
|
-
# Rails integration dependencies
|
9
|
-
gem 'activerecord', '>= 6.0', '< 9.0'
|
10
|
-
gem 'activesupport', '>= 6.0', '< 9.0'
|
11
|
-
|
12
|
-
# Development dependencies
|
13
|
-
gem 'bundler', '>= 2.0'
|
14
|
-
gem 'codecov'
|
15
|
-
gem 'dotenv'
|
16
|
-
gem 'irb'
|
17
|
-
gem 'nokogiri'
|
18
|
-
gem 'overcommit', '>= 0.66'
|
19
|
-
gem 'pry', '>= 0.14'
|
20
|
-
gem 'rake', '>= 13.0'
|
21
|
-
gem 'rdoc'
|
22
|
-
gem 'reline'
|
23
|
-
gem 'rspec', '~> 3.12'
|
24
|
-
gem 'rubocop', '>= 1.0'
|
25
|
-
gem 'rubocop-rake', '>= 0.6'
|
26
|
-
gem 'rubocop-rspec'
|
27
|
-
gem 'simplecov', '>= 0.21'
|
28
|
-
gem 'simplecov-cobertura'
|
29
|
-
gem 'sqlite3'
|
30
|
-
gem 'webmock', '~> 3.18'
|
31
|
-
gem 'yard', '>= 0.9'
|
32
|
-
end
|
data/Rakefile
DELETED
data/bin/console
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'bundler/setup'
|
5
|
-
require 'ruby_llm'
|
6
|
-
require 'dotenv/load'
|
7
|
-
|
8
|
-
require 'irb'
|
9
|
-
|
10
|
-
RubyLLM.configure do |config|
|
11
|
-
config.openai_api_key = ENV.fetch('OPENAI_API_KEY', nil)
|
12
|
-
config.anthropic_api_key = ENV.fetch('ANTHROPIC_API_KEY', nil)
|
13
|
-
config.gemini_api_key = ENV.fetch('GEMINI_API_KEY', nil)
|
14
|
-
config.deepseek_api_key = ENV.fetch('DEEPSEEK_API_KEY', nil)
|
15
|
-
end
|
16
|
-
|
17
|
-
IRB.start(__FILE__)
|
data/bin/setup
DELETED
data/ruby_llm.gemspec
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'lib/ruby_llm/version'
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = 'ruby_llm'
|
7
|
-
spec.version = RubyLLM::VERSION
|
8
|
-
spec.authors = ['Carmine Paolino']
|
9
|
-
spec.email = ['carmine@paolino.me']
|
10
|
-
|
11
|
-
spec.summary = 'Beautiful Ruby interface to modern AI'
|
12
|
-
spec.description = 'A delightful Ruby way to work with AI. Chat in text, analyze and generate images, understand ' \
|
13
|
-
'audio, and use tools through a unified interface to OpenAI, Anthropic, Google, and DeepSeek. ' \
|
14
|
-
'Built for developer happiness with automatic token counting, proper streaming, and Rails ' \
|
15
|
-
'integration. No wrapping your head around multiple APIs - just clean Ruby code that works.'
|
16
|
-
spec.homepage = 'https://rubyllm.com'
|
17
|
-
spec.license = 'MIT'
|
18
|
-
spec.required_ruby_version = Gem::Requirement.new('>= 3.1.0')
|
19
|
-
|
20
|
-
spec.metadata['homepage_uri'] = spec.homepage
|
21
|
-
spec.metadata['source_code_uri'] = 'https://github.com/crmne/ruby_llm'
|
22
|
-
spec.metadata['changelog_uri'] = "#{spec.metadata['source_code_uri']}/commits/main"
|
23
|
-
spec.metadata['documentation_uri'] = spec.homepage
|
24
|
-
spec.metadata['bug_tracker_uri'] = "#{spec.metadata['source_code_uri']}/issues"
|
25
|
-
|
26
|
-
spec.metadata['rubygems_mfa_required'] = 'true'
|
27
|
-
|
28
|
-
# Specify which files should be added to the gem when it is released.
|
29
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
30
|
-
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
31
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|docs)/}) }
|
32
|
-
end
|
33
|
-
spec.bindir = 'exe'
|
34
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
35
|
-
spec.require_paths = ['lib']
|
36
|
-
|
37
|
-
# Runtime dependencies
|
38
|
-
spec.add_dependency 'event_stream_parser', '~> 1'
|
39
|
-
spec.add_dependency 'faraday', '~> 2'
|
40
|
-
spec.add_dependency 'faraday-multipart', '~> 1'
|
41
|
-
spec.add_dependency 'faraday-retry', '~> 2'
|
42
|
-
spec.add_dependency 'zeitwerk', '~> 2'
|
43
|
-
end
|