omniai-anthropic 1.2.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/omniai/anthropic/chat/completion.rb +2 -2
- data/lib/omniai/anthropic/chat.rb +0 -14
- data/lib/omniai/anthropic/client.rb +10 -6
- data/lib/omniai/anthropic/config.rb +22 -8
- data/lib/omniai/anthropic/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81f979cca2281d6d2462bfd301d9112d2347c6db184b77ff5aaad73e4fb141ef
|
4
|
+
data.tar.gz: 906591303f337817e2f086169fe382d69e26a98674aad3feaedcb239e1087161
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5510b9cafbeea22e709f515eb0179ec6cb49e251fdd1391b6a1527f06908d2582ca22c56b06af3aee4cbb80ad63cb9aac047c0ed706eefa84cc69eb90c0ec0c2
|
7
|
+
data.tar.gz: 3ea6790fad0c04efc10f987125e64755e5a53416e5652440f65d660a7c276206bbc62d632c0c475555ba151bf2eae7103682aea71fea13388b3ef602a540ce0e
|
data/README.md
CHANGED
@@ -67,7 +67,7 @@ completion.choice.message.content # 'The capital of Canada is Ottawa.'
|
|
67
67
|
`model` takes an optional string (default is `claude-3-haiku-20240307`):
|
68
68
|
|
69
69
|
```ruby
|
70
|
-
completion = client.chat('Provide code for fibonacci', model: OmniAI::Anthropic::Chat::Model::
|
70
|
+
completion = client.chat('Provide code for fibonacci', model: OmniAI::Anthropic::Chat::Model::CLAUDE_SONET)
|
71
71
|
completion.choice.message.content # 'def fibonacci(n)...end'
|
72
72
|
```
|
73
73
|
|
@@ -5,13 +5,13 @@ module OmniAI
|
|
5
5
|
class Chat
|
6
6
|
# A completion returned by the API.
|
7
7
|
class Completion < OmniAI::Chat::Completion
|
8
|
-
# @return [Array<OmniAI::Chat::
|
8
|
+
# @return [Array<OmniAI::Chat::MessageChoice>]
|
9
9
|
def choices
|
10
10
|
@choices ||= begin
|
11
11
|
role = @data['role']
|
12
12
|
|
13
13
|
@data['content'].map do |data, index|
|
14
|
-
OmniAI::Chat::
|
14
|
+
OmniAI::Chat::MessageChoice.for(data: {
|
15
15
|
'index' => index,
|
16
16
|
'message' => { 'role' => role, 'content' => data['text'] },
|
17
17
|
})
|
@@ -27,20 +27,6 @@ module OmniAI
|
|
27
27
|
|
28
28
|
protected
|
29
29
|
|
30
|
-
# @param response [HTTP::Response]
|
31
|
-
# @return [OmniAI::Anthropic::Chat::Stream]
|
32
|
-
def stream!(response:)
|
33
|
-
raise Error, "#{self.class.name}#stream! unstreamable" unless @stream
|
34
|
-
|
35
|
-
Stream.new(response:).stream! { |chunk| @stream.call(chunk) }
|
36
|
-
end
|
37
|
-
|
38
|
-
# @param response [HTTP::Response]
|
39
|
-
# @param response [OmniAI::Anthropic::Chat::Completion]
|
40
|
-
def complete!(response:)
|
41
|
-
Completion.new(data: response.parse)
|
42
|
-
end
|
43
|
-
|
44
30
|
# @return [Hash]
|
45
31
|
def payload
|
46
32
|
OmniAI::Anthropic.config.chat_options.merge({
|
@@ -24,15 +24,19 @@ module OmniAI
|
|
24
24
|
|
25
25
|
# @param api_key [String] optional - defaults to `OmniAI::Anthropic.config.api_key`
|
26
26
|
# @param host [String] optional - defaults to `OmniAI::Anthropic.config.host`
|
27
|
+
# @param version [String] optional - defaults to `OmniAI::Anthropic.config.version`
|
28
|
+
# @param logger [Logger] optional - defaults to `OmniAI::Anthropic.config.logger`
|
29
|
+
# @param timeout [Integer] optional - defaults to `OmniAI::Anthropic.config.timeout`
|
27
30
|
def initialize(
|
28
31
|
api_key: OmniAI::Anthropic.config.api_key,
|
32
|
+
host: OmniAI::Anthropic.config.host,
|
29
33
|
version: OmniAI::Anthropic.config.version,
|
30
34
|
logger: OmniAI::Anthropic.config.logger,
|
31
|
-
|
35
|
+
timeout: OmniAI::Anthropic.config.timeout
|
32
36
|
)
|
33
37
|
raise(ArgumentError, %(ENV['ANTHROPIC_API_KEY'] must be defined or `api_key` must be passed)) if api_key.nil?
|
34
38
|
|
35
|
-
super(api_key:, logger:)
|
39
|
+
super(api_key:, host:, logger:, timeout:)
|
36
40
|
|
37
41
|
@host = host
|
38
42
|
@version = version
|
@@ -40,10 +44,10 @@ module OmniAI
|
|
40
44
|
|
41
45
|
# @return [HTTP::Client]
|
42
46
|
def connection
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
+
@connection ||= super.headers({
|
48
|
+
'x-api-key': @api_key,
|
49
|
+
'anthropic-version': @version,
|
50
|
+
}.compact)
|
47
51
|
end
|
48
52
|
|
49
53
|
# @raise [OmniAI::Error]
|
@@ -2,16 +2,30 @@
|
|
2
2
|
|
3
3
|
module OmniAI
|
4
4
|
module Anthropic
|
5
|
-
#
|
5
|
+
# Configuration for Anthropic.
|
6
6
|
class Config < OmniAI::Config
|
7
|
-
|
7
|
+
DEFAULT_HOST = 'https://api.anthropic.com'
|
8
|
+
DEFAULT_VERSION = '2023-06-01'
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
# @!attribute [rw] version
|
11
|
+
# @return [String, nil] passed as `anthropic-version` if specified
|
12
|
+
attr_accessor :version
|
13
|
+
|
14
|
+
# @param api_key [String, nil] optional - defaults to `ENV['ANTHROPIC_API_KEY']`
|
15
|
+
# @param host [String, nil] optional - defaults to `ENV['ANTHROPIC_HOST'] w/ fallback to `DEFAULT_HOST`
|
16
|
+
# @param version [String, nil] optional - defaults to `ENV['ANTHROPIC_VERSION'] w/ fallback to `DEFAULT_VERSION`
|
17
|
+
# @param logger [Logger, nil] optional - defaults to
|
18
|
+
# @param timeout [Integer, Hash, nil] optional
|
19
|
+
def initialize(
|
20
|
+
api_key: ENV.fetch('ANTHROPIC_API_KEY', nil),
|
21
|
+
host: ENV.fetch('ANTHROPIC_HOST', DEFAULT_HOST),
|
22
|
+
version: ENV.fetch('ANTHROPIC_VERSION', DEFAULT_VERSION),
|
23
|
+
logger: nil,
|
24
|
+
timeout: nil
|
25
|
+
)
|
26
|
+
super(api_key:, host:, logger:, timeout:)
|
27
|
+
@version = version
|
28
|
+
@chat_options[:max_tokens] = 4096
|
15
29
|
end
|
16
30
|
end
|
17
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniai-anthropic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
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-
|
11
|
+
date: 2024-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: event_stream_parser
|