omniai 1.2.1 → 1.2.3

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: 5b37e667b2b004a012bf7d7d76fd80c08aa8948d46b8670651daa3a426c591d2
4
- data.tar.gz: ded01ccbbf34486159fd965953a9d5cec9a62da16404960e5b0c8bca8d5384ad
3
+ metadata.gz: 2820bc43050fa4484a25e1a967b3d12ac71a3d5659e735f5904040990acf47b8
4
+ data.tar.gz: 8894714bf0c8055ca173176d8eeb078ce6f93a0481c19df3fd2dae911fbb264d
5
5
  SHA512:
6
- metadata.gz: c6c26067f0b0b3c7ecefbdc00ed1746f0f597f729a41ff1e0a253bb723cf89ef1b82ccc2c411a8b43b93d5f54c83a9f3e58ab7074be324e9b3bf24e099e7ca2a
7
- data.tar.gz: fe75154f85d6a68b1698c923548570695c724293462225bdb9d29db8ccf884ab2965bce3090a9f9c64851c5547ab4a655e59e7079c0923bff9ee18f46320517c
6
+ metadata.gz: b2658cb0bf197315f3679225a214871ffdbf670cabb65f3126b4a1e7ccd40b6f38810e9fea828b71eb1c9fae819f94e824dedc65ed69cc7531e496d9ae027896
7
+ data.tar.gz: 3f525900c8c319076549235713418e7cc7e87167151668900e3073530004b9bb1561469a9b02914dfac63eff4f35b67fbf9ca66171b5471cf24c665e280f3d23
data/README.md CHANGED
@@ -60,6 +60,18 @@ require 'omniai/openai'
60
60
  client = OmniAI::OpenAI::Client.new
61
61
  ```
62
62
 
63
+ #### Usage with LocalAI
64
+
65
+ LocalAI support is offered through [OmniAI::OpenAI](https://github.com/ksylvest/omniai-openai):
66
+
67
+ [Usage with LocalAI](https://github.com/ksylvest/omniai-openai#usage-with-localai)
68
+
69
+ #### Usage with Ollama
70
+
71
+ Ollama support is offered through [OmniAI::OpenAI](https://github.com/ksylvest/omniai-openai):
72
+
73
+ [Usage with Ollama](https://github.com/ksylvest/omniai-openai#usage-with-ollama)
74
+
63
75
  ### Chat
64
76
 
65
77
  Clients that support chat (e.g. Anthropic w/ "Claude", Google w/ "Gemini", Mistral w/ "LeChat", OpenAI w/ "ChatGPT", etc) generate completions using the following calls:
@@ -31,9 +31,9 @@ module OmniAI
31
31
  @data['model']
32
32
  end
33
33
 
34
- # @return [Array<OmniAI::Chat::Choice>]
34
+ # @return [Array<OmniAI::Chat::DeltaChoice>]
35
35
  def choices
36
- @choices ||= @data['choices'].map { |data| Choice.for(data:) }
36
+ @choices ||= @data['choices'].map { |data| DeltaChoice.for(data:) }
37
37
  end
38
38
 
39
39
  # @param index [Integer]
@@ -38,13 +38,13 @@ module OmniAI
38
38
  @usage ||= Usage.for(data: @data['usage'])
39
39
  end
40
40
 
41
- # @return [Array<OmniAI::Chat::Choice>]
41
+ # @return [Array<OmniAI::Chat::MessageChoice>]
42
42
  def choices
43
- @choices ||= @data['choices'].map { |data| Choice.for(data:) }
43
+ @choices ||= @data['choices'].map { |data| MessageChoice.for(data:) }
44
44
  end
45
45
 
46
46
  # @param index [Integer] optional - default is 0
47
- # @return [OmniAI::Chat::Choice]
47
+ # @return [OmniAI::Chat::MessageChoice]
48
48
  def choice(index: 0)
49
49
  choices[index]
50
50
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OmniAI
4
+ class Chat
5
+ # A delta choice returned by the API.
6
+ class DeltaChoice
7
+ attr_accessor :index, :delta
8
+
9
+ # @param data [Hash]
10
+ # @return [OmniAI::Chat::Choice]
11
+ def self.for(data:)
12
+ index = data['index']
13
+ delta = Delta.for(data: data['delta'])
14
+
15
+ new(index:, delta:)
16
+ end
17
+
18
+ # @param index [Integer]
19
+ # @param delta [Delta]
20
+ def initialize(index:, delta:)
21
+ @index = index
22
+ @delta = delta
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OmniAI
4
+ class Chat
5
+ # A choice returned by the API.
6
+ class MessageChoice
7
+ attr_accessor :index, :message
8
+
9
+ # @param data [Hash]
10
+ # @return [OmniAI::Chat::Choice]
11
+ def self.for(data:)
12
+ index = data['index']
13
+ message = Message.for(data: data['message'])
14
+
15
+ new(index:, message:)
16
+ end
17
+
18
+ # @param index [Integer]
19
+ # @param message [OmniAI::Chat::Message]
20
+ def initialize(index:, message:)
21
+ @index = index
22
+ @message = message
23
+ end
24
+ end
25
+ end
26
+ end
data/lib/omniai/client.rb CHANGED
@@ -13,19 +13,28 @@ module OmniAI
13
13
  class Client
14
14
  class Error < StandardError; end
15
15
 
16
- attr_accessor :api_key
16
+ attr_accessor :api_key, :logger, :host
17
17
 
18
- # @param api_key [String]
19
- # @param logger [Logger]
20
- def initialize(api_key:, logger: nil)
18
+ # @param api_key [String] optional
19
+ # @param host [String] optional - supports for customzing the host of the client (e.g. 'http://localhost:8080')
20
+ # @param logger [Logger] optional
21
+ def initialize(api_key: nil, logger: nil, host: nil)
21
22
  @api_key = api_key
23
+ @host = host
22
24
  @logger = logger
23
25
  end
24
26
 
25
27
  # @return [String]
26
28
  def inspect
27
- masked_api_key = "#{api_key[..2]}***" if api_key
28
- "#<#{self.class.name} api_key=#{masked_api_key.inspect}>"
29
+ props = []
30
+ props << "api_key=#{masked_api_key.inspect}" if @api_key
31
+ props << "host=#{@host.inspect}" if @host
32
+ "#<#{self.class.name} #{props.join(' ')}>"
33
+ end
34
+
35
+ # @return [String]
36
+ def masked_api_key
37
+ "#{api_key[..2]}***" if api_key
29
38
  end
30
39
 
31
40
  # @return [HTTP::Client]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OmniAI
4
- VERSION = '1.2.1'
4
+ VERSION = '1.2.3'
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.2.1
4
+ version: 1.2.3
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-20 00:00:00.000000000 Z
11
+ date: 2024-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: event_stream_parser
@@ -66,7 +66,6 @@ files:
66
66
  - bin/setup
67
67
  - lib/omniai.rb
68
68
  - lib/omniai/chat.rb
69
- - lib/omniai/chat/choice.rb
70
69
  - lib/omniai/chat/chunk.rb
71
70
  - lib/omniai/chat/completion.rb
72
71
  - lib/omniai/chat/content/file.rb
@@ -74,7 +73,9 @@ files:
74
73
  - lib/omniai/chat/content/text.rb
75
74
  - lib/omniai/chat/content/url.rb
76
75
  - lib/omniai/chat/delta.rb
76
+ - lib/omniai/chat/delta_choice.rb
77
77
  - lib/omniai/chat/message.rb
78
+ - lib/omniai/chat/message_choice.rb
78
79
  - lib/omniai/chat/stream.rb
79
80
  - lib/omniai/chat/usage.rb
80
81
  - lib/omniai/client.rb
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module OmniAI
4
- class Chat
5
- # A choice returned by the API.
6
- class Choice
7
- attr_accessor :index, :delta, :message
8
-
9
- # @param data [Hash]
10
- # @return [OmniAI::Chat::Choice]
11
- def self.for(data:)
12
- index = data['index']
13
- delta = Delta.for(data: data['delta']) if data['delta']
14
- message = Message.for(data: data['message']) if data['message']
15
-
16
- new(index:, delta:, message:)
17
- end
18
-
19
- # @param index [Integer]
20
- # @param delta [OmniAI::Chat::Delta] optional
21
- # @param message [OmniAI::Chat::Message] optional
22
- def initialize(index:, delta:, message:)
23
- @index = index
24
- @delta = delta
25
- @message = message
26
- end
27
- end
28
- end
29
- end