ticuna 0.1.1 → 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: 265d5920dcf993177bbac8fbea70aff8dedadc946d21dfc2ab3ae8df6c56048d
4
- data.tar.gz: 12355c8e356b369df4c59cb3b8ac8f9502f5ca1a06928cccd7b6a54e08fce65c
3
+ metadata.gz: 25afb92c6ab2ba62fe78323b2c25e8a6f87d08d0297139ea4433e52de1156426
4
+ data.tar.gz: 90d7976a68c9ae75c972bda54765e11d4dd9050c32d2f6433852b15a607f2b11
5
5
  SHA512:
6
- metadata.gz: 970adeae5f453b7e5143375867ad5868e9a6c925b73cba14e73409a2bbc8bc9fa05271d7a2570b029cbb42219da6fb9f64a92d86157bc5e6370639153e44ee7e
7
- data.tar.gz: 9b98707287ad15dc2568e054892d23088b278fc458f427199cf74345bb4597661918ecaac61d0630753f1c35e322075b0fde3193abe45b38d73150cefc59a2a7
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
@@ -66,11 +68,11 @@ module Ticuna
66
68
 
67
69
  case valid.size
68
70
  when 0
69
- raise "Provider not found. Define at least one ENV with token."
71
+ raise "Provider not found. Define at least one in config/initializers/ticuna.rb"
70
72
  when 1
71
- valid.keys.firstraise
73
+ valid.keys.first
72
74
  else
73
- raise "Multiple providers detected: #{valid.keys.join(", ")}. Define one in Ticuna::LLM.new(provider: :provider_name)."
75
+ raise "Multiple LLM APIs providers detected: #{valid.keys.join(", ")}. Define one in Ticuna::LLM.new(provider: :provider_name)."
74
76
  end
75
77
  end
76
78
  end
@@ -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.1"
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.1
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