dify_llm 1.6.4

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.
Files changed (129) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +157 -0
  4. data/lib/generators/ruby_llm/install/templates/chat_model.rb.tt +3 -0
  5. data/lib/generators/ruby_llm/install/templates/create_chats_legacy_migration.rb.tt +8 -0
  6. data/lib/generators/ruby_llm/install/templates/create_chats_migration.rb.tt +8 -0
  7. data/lib/generators/ruby_llm/install/templates/create_messages_legacy_migration.rb.tt +16 -0
  8. data/lib/generators/ruby_llm/install/templates/create_messages_migration.rb.tt +16 -0
  9. data/lib/generators/ruby_llm/install/templates/create_models_migration.rb.tt +43 -0
  10. data/lib/generators/ruby_llm/install/templates/create_tool_calls_migration.rb.tt +15 -0
  11. data/lib/generators/ruby_llm/install/templates/initializer.rb.tt +9 -0
  12. data/lib/generators/ruby_llm/install/templates/message_model.rb.tt +4 -0
  13. data/lib/generators/ruby_llm/install/templates/model_model.rb.tt +3 -0
  14. data/lib/generators/ruby_llm/install/templates/tool_call_model.rb.tt +3 -0
  15. data/lib/generators/ruby_llm/install_generator.rb +184 -0
  16. data/lib/generators/ruby_llm/migrate_model_fields/templates/migration.rb.tt +142 -0
  17. data/lib/generators/ruby_llm/migrate_model_fields_generator.rb +84 -0
  18. data/lib/ruby_llm/active_record/acts_as.rb +137 -0
  19. data/lib/ruby_llm/active_record/acts_as_legacy.rb +398 -0
  20. data/lib/ruby_llm/active_record/chat_methods.rb +315 -0
  21. data/lib/ruby_llm/active_record/message_methods.rb +72 -0
  22. data/lib/ruby_llm/active_record/model_methods.rb +84 -0
  23. data/lib/ruby_llm/aliases.json +274 -0
  24. data/lib/ruby_llm/aliases.rb +38 -0
  25. data/lib/ruby_llm/attachment.rb +191 -0
  26. data/lib/ruby_llm/chat.rb +212 -0
  27. data/lib/ruby_llm/chunk.rb +6 -0
  28. data/lib/ruby_llm/configuration.rb +69 -0
  29. data/lib/ruby_llm/connection.rb +137 -0
  30. data/lib/ruby_llm/content.rb +50 -0
  31. data/lib/ruby_llm/context.rb +29 -0
  32. data/lib/ruby_llm/embedding.rb +29 -0
  33. data/lib/ruby_llm/error.rb +76 -0
  34. data/lib/ruby_llm/image.rb +49 -0
  35. data/lib/ruby_llm/message.rb +76 -0
  36. data/lib/ruby_llm/mime_type.rb +67 -0
  37. data/lib/ruby_llm/model/info.rb +103 -0
  38. data/lib/ruby_llm/model/modalities.rb +22 -0
  39. data/lib/ruby_llm/model/pricing.rb +48 -0
  40. data/lib/ruby_llm/model/pricing_category.rb +46 -0
  41. data/lib/ruby_llm/model/pricing_tier.rb +33 -0
  42. data/lib/ruby_llm/model.rb +7 -0
  43. data/lib/ruby_llm/models.json +31418 -0
  44. data/lib/ruby_llm/models.rb +235 -0
  45. data/lib/ruby_llm/models_schema.json +168 -0
  46. data/lib/ruby_llm/provider.rb +215 -0
  47. data/lib/ruby_llm/providers/anthropic/capabilities.rb +134 -0
  48. data/lib/ruby_llm/providers/anthropic/chat.rb +106 -0
  49. data/lib/ruby_llm/providers/anthropic/embeddings.rb +20 -0
  50. data/lib/ruby_llm/providers/anthropic/media.rb +91 -0
  51. data/lib/ruby_llm/providers/anthropic/models.rb +48 -0
  52. data/lib/ruby_llm/providers/anthropic/streaming.rb +43 -0
  53. data/lib/ruby_llm/providers/anthropic/tools.rb +107 -0
  54. data/lib/ruby_llm/providers/anthropic.rb +36 -0
  55. data/lib/ruby_llm/providers/bedrock/capabilities.rb +167 -0
  56. data/lib/ruby_llm/providers/bedrock/chat.rb +63 -0
  57. data/lib/ruby_llm/providers/bedrock/media.rb +60 -0
  58. data/lib/ruby_llm/providers/bedrock/models.rb +98 -0
  59. data/lib/ruby_llm/providers/bedrock/signing.rb +831 -0
  60. data/lib/ruby_llm/providers/bedrock/streaming/base.rb +51 -0
  61. data/lib/ruby_llm/providers/bedrock/streaming/content_extraction.rb +56 -0
  62. data/lib/ruby_llm/providers/bedrock/streaming/message_processing.rb +67 -0
  63. data/lib/ruby_llm/providers/bedrock/streaming/payload_processing.rb +78 -0
  64. data/lib/ruby_llm/providers/bedrock/streaming/prelude_handling.rb +78 -0
  65. data/lib/ruby_llm/providers/bedrock/streaming.rb +18 -0
  66. data/lib/ruby_llm/providers/bedrock.rb +82 -0
  67. data/lib/ruby_llm/providers/deepseek/capabilities.rb +130 -0
  68. data/lib/ruby_llm/providers/deepseek/chat.rb +16 -0
  69. data/lib/ruby_llm/providers/deepseek.rb +30 -0
  70. data/lib/ruby_llm/providers/dify/capabilities.rb +16 -0
  71. data/lib/ruby_llm/providers/dify/chat.rb +59 -0
  72. data/lib/ruby_llm/providers/dify/media.rb +37 -0
  73. data/lib/ruby_llm/providers/dify/streaming.rb +28 -0
  74. data/lib/ruby_llm/providers/dify.rb +48 -0
  75. data/lib/ruby_llm/providers/gemini/capabilities.rb +276 -0
  76. data/lib/ruby_llm/providers/gemini/chat.rb +171 -0
  77. data/lib/ruby_llm/providers/gemini/embeddings.rb +37 -0
  78. data/lib/ruby_llm/providers/gemini/images.rb +47 -0
  79. data/lib/ruby_llm/providers/gemini/media.rb +54 -0
  80. data/lib/ruby_llm/providers/gemini/models.rb +40 -0
  81. data/lib/ruby_llm/providers/gemini/streaming.rb +61 -0
  82. data/lib/ruby_llm/providers/gemini/tools.rb +77 -0
  83. data/lib/ruby_llm/providers/gemini.rb +36 -0
  84. data/lib/ruby_llm/providers/gpustack/chat.rb +27 -0
  85. data/lib/ruby_llm/providers/gpustack/media.rb +45 -0
  86. data/lib/ruby_llm/providers/gpustack/models.rb +90 -0
  87. data/lib/ruby_llm/providers/gpustack.rb +34 -0
  88. data/lib/ruby_llm/providers/mistral/capabilities.rb +155 -0
  89. data/lib/ruby_llm/providers/mistral/chat.rb +24 -0
  90. data/lib/ruby_llm/providers/mistral/embeddings.rb +33 -0
  91. data/lib/ruby_llm/providers/mistral/models.rb +48 -0
  92. data/lib/ruby_llm/providers/mistral.rb +32 -0
  93. data/lib/ruby_llm/providers/ollama/chat.rb +27 -0
  94. data/lib/ruby_llm/providers/ollama/media.rb +45 -0
  95. data/lib/ruby_llm/providers/ollama/models.rb +36 -0
  96. data/lib/ruby_llm/providers/ollama.rb +30 -0
  97. data/lib/ruby_llm/providers/openai/capabilities.rb +291 -0
  98. data/lib/ruby_llm/providers/openai/chat.rb +83 -0
  99. data/lib/ruby_llm/providers/openai/embeddings.rb +33 -0
  100. data/lib/ruby_llm/providers/openai/images.rb +38 -0
  101. data/lib/ruby_llm/providers/openai/media.rb +80 -0
  102. data/lib/ruby_llm/providers/openai/models.rb +39 -0
  103. data/lib/ruby_llm/providers/openai/streaming.rb +41 -0
  104. data/lib/ruby_llm/providers/openai/tools.rb +78 -0
  105. data/lib/ruby_llm/providers/openai.rb +42 -0
  106. data/lib/ruby_llm/providers/openrouter/models.rb +73 -0
  107. data/lib/ruby_llm/providers/openrouter.rb +26 -0
  108. data/lib/ruby_llm/providers/perplexity/capabilities.rb +137 -0
  109. data/lib/ruby_llm/providers/perplexity/chat.rb +16 -0
  110. data/lib/ruby_llm/providers/perplexity/models.rb +42 -0
  111. data/lib/ruby_llm/providers/perplexity.rb +48 -0
  112. data/lib/ruby_llm/providers/vertexai/chat.rb +14 -0
  113. data/lib/ruby_llm/providers/vertexai/embeddings.rb +32 -0
  114. data/lib/ruby_llm/providers/vertexai/models.rb +130 -0
  115. data/lib/ruby_llm/providers/vertexai/streaming.rb +14 -0
  116. data/lib/ruby_llm/providers/vertexai.rb +55 -0
  117. data/lib/ruby_llm/railtie.rb +41 -0
  118. data/lib/ruby_llm/stream_accumulator.rb +97 -0
  119. data/lib/ruby_llm/streaming.rb +153 -0
  120. data/lib/ruby_llm/tool.rb +83 -0
  121. data/lib/ruby_llm/tool_call.rb +22 -0
  122. data/lib/ruby_llm/utils.rb +45 -0
  123. data/lib/ruby_llm/version.rb +5 -0
  124. data/lib/ruby_llm.rb +97 -0
  125. data/lib/tasks/models.rake +525 -0
  126. data/lib/tasks/release.rake +67 -0
  127. data/lib/tasks/ruby_llm.rake +15 -0
  128. data/lib/tasks/vcr.rake +92 -0
  129. metadata +291 -0
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dotenv/load'
4
+
5
+ def record_all_cassettes(cassette_dir)
6
+ FileUtils.rm_rf(cassette_dir)
7
+ FileUtils.mkdir_p(cassette_dir)
8
+
9
+ puts 'Recording cassettes for all providers...'
10
+ run_tests
11
+ puts 'Done recording. Please review the new cassettes.'
12
+ end
13
+
14
+ def record_for_providers(providers, cassette_dir)
15
+ all_providers = RubyLLM::Provider.providers.keys.map(&:to_s)
16
+
17
+ if providers.empty?
18
+ puts "Please specify providers or 'all'. Example: rake vcr:record[openai,anthropic]"
19
+ puts "Available providers: #{all_providers.join(', ')}"
20
+ return
21
+ end
22
+
23
+ invalid_providers = providers - all_providers
24
+ if invalid_providers.any?
25
+ puts "Invalid providers: #{invalid_providers.join(', ')}"
26
+ puts "Available providers: #{all_providers.join(', ')}"
27
+ return
28
+ end
29
+
30
+ cassettes_to_delete = find_matching_cassettes(cassette_dir, providers)
31
+
32
+ if cassettes_to_delete.empty?
33
+ puts 'No cassettes found for the specified providers.'
34
+ puts 'Running tests to record new cassettes...'
35
+ else
36
+ delete_cassettes(cassettes_to_delete)
37
+ puts "\nRunning tests to record new cassettes..."
38
+ end
39
+
40
+ run_tests
41
+
42
+ puts "\nDone recording cassettes for #{providers.join(', ')}."
43
+ puts 'Please review the updated cassettes for sensitive information.'
44
+ end
45
+
46
+ def find_matching_cassettes(dir, providers)
47
+ cassettes = []
48
+
49
+ Dir.glob("#{dir}/**/*.yml").each do |file|
50
+ basename = File.basename(file)
51
+
52
+ providers.each do |provider|
53
+ next unless basename =~ /^[^_]*_#{provider}_/ || # For first section like "chat_openai_"
54
+ basename =~ /_#{provider}_[^_]+_/ # For middle sections like "_openai_gpt4_"
55
+
56
+ cassettes << file
57
+ break
58
+ end
59
+ end
60
+
61
+ cassettes
62
+ end
63
+
64
+ def delete_cassettes(cassettes)
65
+ puts "Deleting #{cassettes.size} cassettes for re-recording:"
66
+ cassettes.each do |file|
67
+ puts " - #{File.basename(file)}"
68
+ File.delete(file)
69
+ end
70
+ end
71
+
72
+ def run_tests
73
+ system('bundle exec rspec') || abort('Tests failed')
74
+ end
75
+
76
+ namespace :vcr do
77
+ desc 'Record VCR cassettes (rake vcr:record[all] or vcr:record[openai,anthropic])'
78
+ task :record, :providers do |_, args|
79
+ require 'fileutils'
80
+ require 'ruby_llm'
81
+
82
+ providers = args.extras.unshift(args[:providers]).compact.map(&:downcase)
83
+ cassette_dir = 'spec/fixtures/vcr_cassettes'
84
+ FileUtils.mkdir_p(cassette_dir)
85
+
86
+ if providers.include?('all')
87
+ record_all_cassettes(cassette_dir)
88
+ else
89
+ record_for_providers(providers, cassette_dir)
90
+ end
91
+ end
92
+ end
metadata ADDED
@@ -0,0 +1,291 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dify_llm
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.6.4
5
+ platform: ruby
6
+ authors:
7
+ - Carmine Paolino
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: event_stream_parser
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1'
40
+ - !ruby/object:Gem::Dependency
41
+ name: faraday
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.10.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.10.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: faraday-multipart
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '1'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '1'
68
+ - !ruby/object:Gem::Dependency
69
+ name: faraday-net_http
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '1'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '1'
82
+ - !ruby/object:Gem::Dependency
83
+ name: faraday-retry
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '1'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '1'
96
+ - !ruby/object:Gem::Dependency
97
+ name: marcel
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '1.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: zeitwerk
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '2'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2'
124
+ description: One beautiful Ruby API for GPT, Claude, Gemini, and more. Easily build
125
+ chatbots, AI agents, RAG applications, and content generators. Features chat (text,
126
+ images, audio, PDFs), image generation, embeddings, tools (function calling), structured
127
+ output, Rails integration, and streaming. Works with OpenAI, Anthropic, Google Gemini,
128
+ AWS Bedrock, DeepSeek, Mistral, Ollama (local models), OpenRouter, Perplexity, GPUStack,
129
+ and any OpenAI-compatible API. Minimal dependencies - just Faraday, Zeitwerk, and
130
+ Marcel.
131
+ email:
132
+ - carmine@paolino.me
133
+ executables: []
134
+ extensions: []
135
+ extra_rdoc_files: []
136
+ files:
137
+ - LICENSE
138
+ - README.md
139
+ - lib/generators/ruby_llm/install/templates/chat_model.rb.tt
140
+ - lib/generators/ruby_llm/install/templates/create_chats_legacy_migration.rb.tt
141
+ - lib/generators/ruby_llm/install/templates/create_chats_migration.rb.tt
142
+ - lib/generators/ruby_llm/install/templates/create_messages_legacy_migration.rb.tt
143
+ - lib/generators/ruby_llm/install/templates/create_messages_migration.rb.tt
144
+ - lib/generators/ruby_llm/install/templates/create_models_migration.rb.tt
145
+ - lib/generators/ruby_llm/install/templates/create_tool_calls_migration.rb.tt
146
+ - lib/generators/ruby_llm/install/templates/initializer.rb.tt
147
+ - lib/generators/ruby_llm/install/templates/message_model.rb.tt
148
+ - lib/generators/ruby_llm/install/templates/model_model.rb.tt
149
+ - lib/generators/ruby_llm/install/templates/tool_call_model.rb.tt
150
+ - lib/generators/ruby_llm/install_generator.rb
151
+ - lib/generators/ruby_llm/migrate_model_fields/templates/migration.rb.tt
152
+ - lib/generators/ruby_llm/migrate_model_fields_generator.rb
153
+ - lib/ruby_llm.rb
154
+ - lib/ruby_llm/active_record/acts_as.rb
155
+ - lib/ruby_llm/active_record/acts_as_legacy.rb
156
+ - lib/ruby_llm/active_record/chat_methods.rb
157
+ - lib/ruby_llm/active_record/message_methods.rb
158
+ - lib/ruby_llm/active_record/model_methods.rb
159
+ - lib/ruby_llm/aliases.json
160
+ - lib/ruby_llm/aliases.rb
161
+ - lib/ruby_llm/attachment.rb
162
+ - lib/ruby_llm/chat.rb
163
+ - lib/ruby_llm/chunk.rb
164
+ - lib/ruby_llm/configuration.rb
165
+ - lib/ruby_llm/connection.rb
166
+ - lib/ruby_llm/content.rb
167
+ - lib/ruby_llm/context.rb
168
+ - lib/ruby_llm/embedding.rb
169
+ - lib/ruby_llm/error.rb
170
+ - lib/ruby_llm/image.rb
171
+ - lib/ruby_llm/message.rb
172
+ - lib/ruby_llm/mime_type.rb
173
+ - lib/ruby_llm/model.rb
174
+ - lib/ruby_llm/model/info.rb
175
+ - lib/ruby_llm/model/modalities.rb
176
+ - lib/ruby_llm/model/pricing.rb
177
+ - lib/ruby_llm/model/pricing_category.rb
178
+ - lib/ruby_llm/model/pricing_tier.rb
179
+ - lib/ruby_llm/models.json
180
+ - lib/ruby_llm/models.rb
181
+ - lib/ruby_llm/models_schema.json
182
+ - lib/ruby_llm/provider.rb
183
+ - lib/ruby_llm/providers/anthropic.rb
184
+ - lib/ruby_llm/providers/anthropic/capabilities.rb
185
+ - lib/ruby_llm/providers/anthropic/chat.rb
186
+ - lib/ruby_llm/providers/anthropic/embeddings.rb
187
+ - lib/ruby_llm/providers/anthropic/media.rb
188
+ - lib/ruby_llm/providers/anthropic/models.rb
189
+ - lib/ruby_llm/providers/anthropic/streaming.rb
190
+ - lib/ruby_llm/providers/anthropic/tools.rb
191
+ - lib/ruby_llm/providers/bedrock.rb
192
+ - lib/ruby_llm/providers/bedrock/capabilities.rb
193
+ - lib/ruby_llm/providers/bedrock/chat.rb
194
+ - lib/ruby_llm/providers/bedrock/media.rb
195
+ - lib/ruby_llm/providers/bedrock/models.rb
196
+ - lib/ruby_llm/providers/bedrock/signing.rb
197
+ - lib/ruby_llm/providers/bedrock/streaming.rb
198
+ - lib/ruby_llm/providers/bedrock/streaming/base.rb
199
+ - lib/ruby_llm/providers/bedrock/streaming/content_extraction.rb
200
+ - lib/ruby_llm/providers/bedrock/streaming/message_processing.rb
201
+ - lib/ruby_llm/providers/bedrock/streaming/payload_processing.rb
202
+ - lib/ruby_llm/providers/bedrock/streaming/prelude_handling.rb
203
+ - lib/ruby_llm/providers/deepseek.rb
204
+ - lib/ruby_llm/providers/deepseek/capabilities.rb
205
+ - lib/ruby_llm/providers/deepseek/chat.rb
206
+ - lib/ruby_llm/providers/dify.rb
207
+ - lib/ruby_llm/providers/dify/capabilities.rb
208
+ - lib/ruby_llm/providers/dify/chat.rb
209
+ - lib/ruby_llm/providers/dify/media.rb
210
+ - lib/ruby_llm/providers/dify/streaming.rb
211
+ - lib/ruby_llm/providers/gemini.rb
212
+ - lib/ruby_llm/providers/gemini/capabilities.rb
213
+ - lib/ruby_llm/providers/gemini/chat.rb
214
+ - lib/ruby_llm/providers/gemini/embeddings.rb
215
+ - lib/ruby_llm/providers/gemini/images.rb
216
+ - lib/ruby_llm/providers/gemini/media.rb
217
+ - lib/ruby_llm/providers/gemini/models.rb
218
+ - lib/ruby_llm/providers/gemini/streaming.rb
219
+ - lib/ruby_llm/providers/gemini/tools.rb
220
+ - lib/ruby_llm/providers/gpustack.rb
221
+ - lib/ruby_llm/providers/gpustack/chat.rb
222
+ - lib/ruby_llm/providers/gpustack/media.rb
223
+ - lib/ruby_llm/providers/gpustack/models.rb
224
+ - lib/ruby_llm/providers/mistral.rb
225
+ - lib/ruby_llm/providers/mistral/capabilities.rb
226
+ - lib/ruby_llm/providers/mistral/chat.rb
227
+ - lib/ruby_llm/providers/mistral/embeddings.rb
228
+ - lib/ruby_llm/providers/mistral/models.rb
229
+ - lib/ruby_llm/providers/ollama.rb
230
+ - lib/ruby_llm/providers/ollama/chat.rb
231
+ - lib/ruby_llm/providers/ollama/media.rb
232
+ - lib/ruby_llm/providers/ollama/models.rb
233
+ - lib/ruby_llm/providers/openai.rb
234
+ - lib/ruby_llm/providers/openai/capabilities.rb
235
+ - lib/ruby_llm/providers/openai/chat.rb
236
+ - lib/ruby_llm/providers/openai/embeddings.rb
237
+ - lib/ruby_llm/providers/openai/images.rb
238
+ - lib/ruby_llm/providers/openai/media.rb
239
+ - lib/ruby_llm/providers/openai/models.rb
240
+ - lib/ruby_llm/providers/openai/streaming.rb
241
+ - lib/ruby_llm/providers/openai/tools.rb
242
+ - lib/ruby_llm/providers/openrouter.rb
243
+ - lib/ruby_llm/providers/openrouter/models.rb
244
+ - lib/ruby_llm/providers/perplexity.rb
245
+ - lib/ruby_llm/providers/perplexity/capabilities.rb
246
+ - lib/ruby_llm/providers/perplexity/chat.rb
247
+ - lib/ruby_llm/providers/perplexity/models.rb
248
+ - lib/ruby_llm/providers/vertexai.rb
249
+ - lib/ruby_llm/providers/vertexai/chat.rb
250
+ - lib/ruby_llm/providers/vertexai/embeddings.rb
251
+ - lib/ruby_llm/providers/vertexai/models.rb
252
+ - lib/ruby_llm/providers/vertexai/streaming.rb
253
+ - lib/ruby_llm/railtie.rb
254
+ - lib/ruby_llm/stream_accumulator.rb
255
+ - lib/ruby_llm/streaming.rb
256
+ - lib/ruby_llm/tool.rb
257
+ - lib/ruby_llm/tool_call.rb
258
+ - lib/ruby_llm/utils.rb
259
+ - lib/ruby_llm/version.rb
260
+ - lib/tasks/models.rake
261
+ - lib/tasks/release.rake
262
+ - lib/tasks/ruby_llm.rake
263
+ - lib/tasks/vcr.rake
264
+ homepage: https://rubyllm.com
265
+ licenses:
266
+ - MIT
267
+ metadata:
268
+ homepage_uri: https://rubyllm.com
269
+ source_code_uri: https://github.com/crmne/ruby_llm
270
+ changelog_uri: https://github.com/crmne/ruby_llm/commits/main
271
+ documentation_uri: https://rubyllm.com
272
+ bug_tracker_uri: https://github.com/crmne/ruby_llm/issues
273
+ rubygems_mfa_required: 'true'
274
+ rdoc_options: []
275
+ require_paths:
276
+ - lib
277
+ required_ruby_version: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: 3.1.0
282
+ required_rubygems_version: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '0'
287
+ requirements: []
288
+ rubygems_version: 3.7.2
289
+ specification_version: 4
290
+ summary: One beautiful Ruby API for GPT, Claude, Gemini, and more.
291
+ test_files: []