omniai 1.0.2 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffc27287a50c39e3aab00622ea1e389f2e2da0828e5ec5b01f0e62bf7ec63c58
4
- data.tar.gz: 3979a4a92abd12706cc36ff66d4befab252a48a2deb7d5b3db3a81162af41b50
3
+ metadata.gz: 6d821530b3b40043754c26a175c2b5d9c70fe3f04bd62bf61c5506963e56dae3
4
+ data.tar.gz: 6f0cf3e3292b11492bd25526391ec3a396d5a9262050dcf4d5aba35726c2ed04
5
5
  SHA512:
6
- metadata.gz: 32f6f70655128b1eb60bcc1add45eb53cd312550a521fd3a7a7663f09f4084809d139ecb2a617464266b12199f590db26bfa240be9c5fb90b6d1e264b1bd57c9
7
- data.tar.gz: d7b170ae465c6e72e4faa5fde86a216bd8317205c9c1630753f527424aa9e59b60f6f1dca32fcecd242824485f7fc328368d9fd8bcff92658fdfd078a5d4080f
6
+ metadata.gz: 9f2d2fa897c94b741435df368ca0952fe00e4dafd0f199756008749a1267ac2d4ea325338b1da359c7c84944b76ec3a875d678039b9bd88ee819cacb470a6fdd
7
+ data.tar.gz: 698f4ec0159ac6a359f5bd93c02db3e4acd0cde6cfd42c17a30c341d6ad674720aa442040c0890cd3c600068c52717b011b28601335721fbdd7a55c1d74ae61d
@@ -23,7 +23,9 @@ module OmniAI
23
23
 
24
24
  # @return [OmniAI::Chat::Message]
25
25
  def message
26
- Message.new(data: @data['message']) if @data['message']
26
+ return unless @data['message']
27
+
28
+ @message ||= Message.for(role: @data['message'])
27
29
  end
28
30
  end
29
31
  end
@@ -33,7 +33,17 @@ module OmniAI
33
33
 
34
34
  # @return [OmniAI::Chat::Usage]
35
35
  def usage
36
- @usage ||= Usage.new(data: @data['usage']) if @data['usage']
36
+ return unless @data['usage']
37
+
38
+ input_tokens = @data['usage']['input_tokens'] || @data['usage']['prompt_tokens']
39
+ output_tokens = @data['usage']['output_tokens'] || @data['usage']['completion_tokens']
40
+ total_tokens = @data['usage']['total_tokens'] || (input_tokens + output_tokens)
41
+
42
+ @usage ||= Usage.new(
43
+ input_tokens:,
44
+ output_tokens:,
45
+ total_tokens:
46
+ )
37
47
  end
38
48
 
39
49
  # @return [Array<OmniAI::Chat::Choice>]
@@ -4,22 +4,27 @@ module OmniAI
4
4
  class Chat
5
5
  # A message returned by the API.
6
6
  class Message
7
- attr_accessor :data
7
+ attr_accessor :role, :content
8
8
 
9
- # @param content [Integer]
10
- # @param role [String]
11
- def initialize(data:)
12
- @data = data
9
+ # @param data [Hash]
10
+ # @return [OmniAI::Chat::Message]
11
+ def self.for(data:)
12
+ content = data['content'] || data[:content]
13
+ role = data['role'] || data[:role]
14
+
15
+ new(content:, role: role || Role::USER)
13
16
  end
14
17
 
15
- # @return [String]
16
- def role
17
- @data['role']
18
+ # @param content [String]
19
+ # @param role [String] optional (default to "user") e.g. "assistant" / "user" / "system"
20
+ def initialize(content:, role: OmniAI::Chat::Role::USER)
21
+ @role = role
22
+ @content = content
18
23
  end
19
24
 
20
25
  # @return [String]
21
- def content
22
- @data['content']
26
+ def inspect
27
+ "#<#{self.class.name} role=#{role.inspect} content=#{content.inspect}>"
23
28
  end
24
29
  end
25
30
  end
@@ -3,37 +3,31 @@
3
3
  module OmniAI
4
4
  class Chat
5
5
  # A usage returned by the API.
6
- class Completion
7
- attr_accessor :data
6
+ class Usage
7
+ attr_accessor :input_tokens, :output_tokens, :total_tokens
8
8
 
9
- # @param data [Hash]
10
- def initialize(data:)
11
- @data = data
9
+ # @param input_tokens [Integer]
10
+ # @param output_tokens [Integer]
11
+ # @param total_tokens [Integer]
12
+ def initialize(input_tokens:, output_tokens:, total_tokens:)
13
+ @input_tokens = input_tokens
14
+ @output_tokens = output_tokens
15
+ @total_tokens = total_tokens
12
16
  end
13
17
 
14
- # @return [Integer, nil]
18
+ # @return [Integer]
15
19
  def completion_tokens
16
- @data['completion_tokens']
20
+ @output_tokens
17
21
  end
18
22
 
19
- # @return [Integer, nil]
23
+ # @return [Integer]
20
24
  def prompt_tokens
21
- @data['prompt_tokens']
25
+ @input_tokens
22
26
  end
23
27
 
24
- # @return [Integer, nil]
25
- def total_tokens
26
- @data['total_tokens']
27
- end
28
-
29
- # @return [Integer, nil]
30
- def input_tokens
31
- @data['input_tokens']
32
- end
33
-
34
- # @return [Integer, nil]
35
- def output_tokens
36
- @data['output_tokens']
28
+ # @return [String]
29
+ def inspect
30
+ "#<#{self.class.name} input_tokens=#{input_tokens} output_tokens=#{output_tokens} total_tokens=#{total_tokens}>"
37
31
  end
38
32
  end
39
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OmniAI
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.4'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniai
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Sylvestre
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-06-15 00:00:00.000000000 Z
11
+ date: 2024-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: event_stream_parser