ticuna 0.1.2 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e437b292297ce9fb31d37e3ad84e7d314f673bd0dab8a511ae8df35b737f17cf
4
- data.tar.gz: 19fd66d1964c4655fc8e7cab7d8a461de5a90fc4e4dd31a0a28bc81c5864f4d9
3
+ metadata.gz: 25afb92c6ab2ba62fe78323b2c25e8a6f87d08d0297139ea4433e52de1156426
4
+ data.tar.gz: 90d7976a68c9ae75c972bda54765e11d4dd9050c32d2f6433852b15a607f2b11
5
5
  SHA512:
6
- metadata.gz: 0ef912de56ab1e96259632020d089808548e9734663a0950eebbb918815c74429a4003b078db2183407bf0be1cdcf9dbfbadd332384c0f3958dbe7af0fe4c92c
7
- data.tar.gz: 8bbac24142de3cb268ac0b5968d2cbabca5adb4dd0357478758a7e3002f4628426a4dc10cda3af21889f4dafcc77a158c97ce31143ea9c55df046f9f98e24cb9
6
+ metadata.gz: 368e1eefe0937908dbbaf2dec05aaafc5ebd2f2e818d7fd5f445a3631b644d05e1ce22426861f9754b7e10e2177db4fb7dd3badebf70050bd1a9e81a6a674897
7
+ data.tar.gz: 13e403ca060db22f7427a33df32cddb4b255a15c27865a6080c714292bec45a307c39c632e403aa2483e5581ee5dc75fcda3be090d29438fe6531ef31ffaae68
data/lib/ticuna/llm.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "ticuna/providers/openai"
4
4
  require "ticuna/config"
5
+ require "ticuna/response"
5
6
 
6
7
  module Ticuna
7
8
  class LLM
@@ -54,7 +55,8 @@ module Ticuna
54
55
  else
55
56
  [{ role: "user", content: message }]
56
57
  end
57
- @provider.ask_with_messages(messages, stream: stream, model: model, &block)
58
+
59
+ Ticuna::Response.new(@provider.ask_with_messages(messages, stream: stream, model: model, &block))
58
60
  end
59
61
 
60
62
  private
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ticuna
4
+ class Response
5
+ attr_reader :data
6
+
7
+ def initialize(data)
8
+ @data = deep_symbolize_keys(data)
9
+ end
10
+
11
+ def [](key)
12
+ @data[key.to_sym]
13
+ end
14
+
15
+ def to_h
16
+ @data
17
+ end
18
+
19
+ def inspect
20
+ "#<Ticuna::Response #{@data.inspect}>"
21
+ end
22
+
23
+ def method_missing(name, *args, &block)
24
+ value = @data[name]
25
+ return wrap(value) if @data.key?(name)
26
+
27
+ super
28
+ end
29
+
30
+ def respond_to_missing?(name, include_private = false)
31
+ @data.key?(name) || super
32
+ end
33
+
34
+ private
35
+
36
+ def deep_symbolize_keys(obj)
37
+ case obj
38
+ when Hash
39
+ obj.each_with_object({}) do |(k, v), h|
40
+ h[k.to_sym] = deep_symbolize_keys(v)
41
+ end
42
+ when Array
43
+ obj.map { |v| deep_symbolize_keys(v) }
44
+ else
45
+ obj
46
+ end
47
+ end
48
+
49
+ def wrap(value)
50
+ case value
51
+ when Hash
52
+ self.class.new(value)
53
+ when Array
54
+ value.map { |v| wrap(v) }
55
+ else
56
+ value
57
+ end
58
+ end
59
+ end
60
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ticuna
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ticuna
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chirana
@@ -46,6 +46,7 @@ files:
46
46
  - lib/ticuna/config.rb
47
47
  - lib/ticuna/llm.rb
48
48
  - lib/ticuna/providers/openai.rb
49
+ - lib/ticuna/response.rb
49
50
  - lib/ticuna/tool.rb
50
51
  - lib/ticuna/version.rb
51
52
  - sig/ticuna.rbs