llm.rb 4.0.0 → 4.2.0
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/LICENSE +2 -2
- data/README.md +226 -192
- data/lib/llm/agent.rb +226 -0
- data/lib/llm/bot.rb +57 -28
- data/lib/llm/error.rb +4 -0
- data/lib/llm/function/tracing.rb +19 -0
- data/lib/llm/function.rb +16 -3
- data/lib/llm/json_adapter.rb +1 -1
- data/lib/llm/message.rb +7 -0
- data/lib/llm/prompt.rb +85 -0
- data/lib/llm/provider.rb +74 -10
- data/lib/llm/providers/anthropic/error_handler.rb +27 -5
- data/lib/llm/providers/anthropic/files.rb +22 -16
- data/lib/llm/providers/anthropic/models.rb +4 -3
- data/lib/llm/providers/anthropic.rb +6 -5
- data/lib/llm/providers/deepseek.rb +3 -3
- data/lib/llm/providers/gemini/error_handler.rb +34 -12
- data/lib/llm/providers/gemini/files.rb +18 -13
- data/lib/llm/providers/gemini/images.rb +4 -3
- data/lib/llm/providers/gemini/models.rb +4 -3
- data/lib/llm/providers/gemini.rb +36 -13
- data/lib/llm/providers/llamacpp.rb +3 -3
- data/lib/llm/providers/ollama/error_handler.rb +28 -6
- data/lib/llm/providers/ollama/models.rb +4 -3
- data/lib/llm/providers/ollama.rb +9 -7
- data/lib/llm/providers/openai/audio.rb +10 -7
- data/lib/llm/providers/openai/error_handler.rb +41 -14
- data/lib/llm/providers/openai/files.rb +19 -14
- data/lib/llm/providers/openai/images.rb +10 -7
- data/lib/llm/providers/openai/models.rb +4 -3
- data/lib/llm/providers/openai/moderations.rb +4 -3
- data/lib/llm/providers/openai/responses.rb +10 -7
- data/lib/llm/providers/openai/vector_stores.rb +34 -23
- data/lib/llm/providers/openai.rb +9 -7
- data/lib/llm/providers/xai.rb +3 -3
- data/lib/llm/providers/zai.rb +2 -2
- data/lib/llm/schema/object.rb +2 -2
- data/lib/llm/schema.rb +16 -2
- data/lib/llm/server_tool.rb +3 -3
- data/lib/llm/session.rb +3 -0
- data/lib/llm/tracer/logger.rb +192 -0
- data/lib/llm/tracer/null.rb +49 -0
- data/lib/llm/tracer/telemetry.rb +255 -0
- data/lib/llm/tracer.rb +134 -0
- data/lib/llm/version.rb +1 -1
- data/lib/llm.rb +5 -3
- data/llm.gemspec +4 -1
- metadata +39 -3
- data/lib/llm/builder.rb +0 -61
data/lib/llm.rb
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
module LLM
|
|
4
4
|
require "stringio"
|
|
5
5
|
require_relative "llm/json_adapter"
|
|
6
|
+
require_relative "llm/tracer"
|
|
6
7
|
require_relative "llm/error"
|
|
7
8
|
require_relative "llm/contract"
|
|
8
9
|
require_relative "llm/usage"
|
|
9
|
-
require_relative "llm/
|
|
10
|
+
require_relative "llm/prompt"
|
|
10
11
|
require_relative "llm/schema"
|
|
11
12
|
require_relative "llm/object"
|
|
12
13
|
require_relative "llm/version"
|
|
@@ -17,7 +18,8 @@ module LLM
|
|
|
17
18
|
require_relative "llm/multipart"
|
|
18
19
|
require_relative "llm/file"
|
|
19
20
|
require_relative "llm/provider"
|
|
20
|
-
require_relative "llm/
|
|
21
|
+
require_relative "llm/session"
|
|
22
|
+
require_relative "llm/agent"
|
|
21
23
|
require_relative "llm/buffer"
|
|
22
24
|
require_relative "llm/function"
|
|
23
25
|
require_relative "llm/eventstream"
|
|
@@ -34,7 +36,7 @@ module LLM
|
|
|
34
36
|
##
|
|
35
37
|
# Returns the JSON adapter used by the library
|
|
36
38
|
# @return [Class]
|
|
37
|
-
# Returns a class that responds to
|
|
39
|
+
# Returns a class that responds to `dump` and `load`
|
|
38
40
|
def json
|
|
39
41
|
@json ||= JSONAdapter::JSON
|
|
40
42
|
end
|
data/llm.gemspec
CHANGED
|
@@ -21,7 +21,8 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.required_ruby_version = ">= 3.2.0"
|
|
22
22
|
|
|
23
23
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
24
|
-
spec.metadata["source_code_uri"] = "https://github.com/llmrb/llm"
|
|
24
|
+
spec.metadata["source_code_uri"] = "https://github.com/llmrb/llm.rb"
|
|
25
|
+
spec.metadata["documentation_uri"] = "https://0x1eef.github.io/x/llm.rb"
|
|
25
26
|
|
|
26
27
|
spec.files = Dir[
|
|
27
28
|
"README.md", "LICENSE",
|
|
@@ -41,4 +42,6 @@ Gem::Specification.new do |spec|
|
|
|
41
42
|
spec.add_development_dependency "vcr", "~> 6.0"
|
|
42
43
|
spec.add_development_dependency "dotenv", "~> 2.8"
|
|
43
44
|
spec.add_development_dependency "net-http-persistent", "~> 4.0"
|
|
45
|
+
spec.add_development_dependency "opentelemetry-sdk", "~> 1.10"
|
|
46
|
+
spec.add_development_dependency "logger", "~> 1.7"
|
|
44
47
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: llm.rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Antar Azri
|
|
@@ -164,6 +164,34 @@ dependencies:
|
|
|
164
164
|
- - "~>"
|
|
165
165
|
- !ruby/object:Gem::Version
|
|
166
166
|
version: '4.0'
|
|
167
|
+
- !ruby/object:Gem::Dependency
|
|
168
|
+
name: opentelemetry-sdk
|
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
|
170
|
+
requirements:
|
|
171
|
+
- - "~>"
|
|
172
|
+
- !ruby/object:Gem::Version
|
|
173
|
+
version: '1.10'
|
|
174
|
+
type: :development
|
|
175
|
+
prerelease: false
|
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
+
requirements:
|
|
178
|
+
- - "~>"
|
|
179
|
+
- !ruby/object:Gem::Version
|
|
180
|
+
version: '1.10'
|
|
181
|
+
- !ruby/object:Gem::Dependency
|
|
182
|
+
name: logger
|
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - "~>"
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '1.7'
|
|
188
|
+
type: :development
|
|
189
|
+
prerelease: false
|
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
+
requirements:
|
|
192
|
+
- - "~>"
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: '1.7'
|
|
167
195
|
description: llm.rb is a zero-dependency Ruby toolkit for Large Language Models that
|
|
168
196
|
includes OpenAI, Gemini, Anthropic, xAI (grok), zAI, DeepSeek, Ollama, and LlamaCpp.
|
|
169
197
|
The toolkit includes full support for chat, streaming, tool calling, audio, images,
|
|
@@ -178,9 +206,9 @@ files:
|
|
|
178
206
|
- LICENSE
|
|
179
207
|
- README.md
|
|
180
208
|
- lib/llm.rb
|
|
209
|
+
- lib/llm/agent.rb
|
|
181
210
|
- lib/llm/bot.rb
|
|
182
211
|
- lib/llm/buffer.rb
|
|
183
|
-
- lib/llm/builder.rb
|
|
184
212
|
- lib/llm/client.rb
|
|
185
213
|
- lib/llm/contract.rb
|
|
186
214
|
- lib/llm/contract/completion.rb
|
|
@@ -191,6 +219,7 @@ files:
|
|
|
191
219
|
- lib/llm/eventstream/parser.rb
|
|
192
220
|
- lib/llm/file.rb
|
|
193
221
|
- lib/llm/function.rb
|
|
222
|
+
- lib/llm/function/tracing.rb
|
|
194
223
|
- lib/llm/json_adapter.rb
|
|
195
224
|
- lib/llm/message.rb
|
|
196
225
|
- lib/llm/mime.rb
|
|
@@ -199,6 +228,7 @@ files:
|
|
|
199
228
|
- lib/llm/object.rb
|
|
200
229
|
- lib/llm/object/builder.rb
|
|
201
230
|
- lib/llm/object/kernel.rb
|
|
231
|
+
- lib/llm/prompt.rb
|
|
202
232
|
- lib/llm/provider.rb
|
|
203
233
|
- lib/llm/providers/anthropic.rb
|
|
204
234
|
- lib/llm/providers/anthropic/error_handler.rb
|
|
@@ -282,8 +312,13 @@ files:
|
|
|
282
312
|
- lib/llm/schema/string.rb
|
|
283
313
|
- lib/llm/schema/version.rb
|
|
284
314
|
- lib/llm/server_tool.rb
|
|
315
|
+
- lib/llm/session.rb
|
|
285
316
|
- lib/llm/tool.rb
|
|
286
317
|
- lib/llm/tool/param.rb
|
|
318
|
+
- lib/llm/tracer.rb
|
|
319
|
+
- lib/llm/tracer/logger.rb
|
|
320
|
+
- lib/llm/tracer/null.rb
|
|
321
|
+
- lib/llm/tracer/telemetry.rb
|
|
287
322
|
- lib/llm/usage.rb
|
|
288
323
|
- lib/llm/utils.rb
|
|
289
324
|
- lib/llm/version.rb
|
|
@@ -293,7 +328,8 @@ licenses:
|
|
|
293
328
|
- 0BSD
|
|
294
329
|
metadata:
|
|
295
330
|
homepage_uri: https://github.com/llmrb/llm
|
|
296
|
-
source_code_uri: https://github.com/llmrb/llm
|
|
331
|
+
source_code_uri: https://github.com/llmrb/llm.rb
|
|
332
|
+
documentation_uri: https://0x1eef.github.io/x/llm.rb
|
|
297
333
|
rdoc_options: []
|
|
298
334
|
require_paths:
|
|
299
335
|
- lib
|
data/lib/llm/builder.rb
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
# The {LLM::Builder LLM::Builder} class can build a collection
|
|
5
|
-
# of messages that can be sent in a single request.
|
|
6
|
-
#
|
|
7
|
-
# @example
|
|
8
|
-
# llm = LLM.openai(key: ENV["KEY"])
|
|
9
|
-
# bot = LLM::Bot.new(llm)
|
|
10
|
-
# prompt = bot.build_prompt do
|
|
11
|
-
# it.system "Your task is to assist the user"
|
|
12
|
-
# it.user "Hello. Can you assist me?"
|
|
13
|
-
# end
|
|
14
|
-
# res = bot.chat(prompt)
|
|
15
|
-
class LLM::Builder
|
|
16
|
-
##
|
|
17
|
-
# @param [Proc] evaluator
|
|
18
|
-
# The evaluator
|
|
19
|
-
def initialize(&evaluator)
|
|
20
|
-
@buffer = []
|
|
21
|
-
@evaluator = evaluator
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
##
|
|
25
|
-
# @return [void]
|
|
26
|
-
def call
|
|
27
|
-
@evaluator.call(self)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
##
|
|
31
|
-
# @param [String] content
|
|
32
|
-
# The message
|
|
33
|
-
# @param [Symbol] role
|
|
34
|
-
# The role (eg user, system)
|
|
35
|
-
# @return [void]
|
|
36
|
-
def chat(content, role: :user)
|
|
37
|
-
@buffer << LLM::Message.new(role, content)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
##
|
|
41
|
-
# @param [String] content
|
|
42
|
-
# The message content
|
|
43
|
-
# @return [void]
|
|
44
|
-
def user(content)
|
|
45
|
-
chat(content, role: :user)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
##
|
|
49
|
-
# @param [String] content
|
|
50
|
-
# The message content
|
|
51
|
-
# @return [void]
|
|
52
|
-
def system(content)
|
|
53
|
-
chat(content, role: :system)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
##
|
|
57
|
-
# @return [Array]
|
|
58
|
-
def to_a
|
|
59
|
-
@buffer.dup
|
|
60
|
-
end
|
|
61
|
-
end
|