omniai-anthropic 1.2.0 → 1.3.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 +2 -1
- 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: ae62c7e30da3f0f0ad3fc0e0c3d6c77fb2401281d5630d0d5447a49321416fcf
|
4
|
+
data.tar.gz: 76ed4ac36be43c81788ec82542c10905a04882f76d48b24903899c571989f7e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cf54724f2a28628c73fcefcc71e660bc18af0f615d1dbd1c4455a9f001a71fd9bd35801776318c344833d1b9ce47e599441aa6181de20cc07872b51e056595e
|
7
|
+
data.tar.gz: 887d226ca9d48d16595a1ba7b49fca0d3f07062a65372114558d201f4ccd2cbaebe45b814215f88a7ea06620fbbc7d1e9fff8ec6c5b21208825a5756835c635c
|
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
|
})
|
@@ -19,9 +19,10 @@ module OmniAI
|
|
19
19
|
CLAUDE_3_OPUS_20240229 = 'claude-3-opus-20240229'
|
20
20
|
CLAUDE_3_HAIKU_20240307 = 'claude-3-haiku-20240307'
|
21
21
|
CLAUDE_3_SONET_20240307 = 'claude-3-haiku-20240307'
|
22
|
+
CLAUDE_3_5_SONET_20240620 = 'claude-3-5-sonnet-20240620'
|
22
23
|
CLAUDE_OPUS = CLAUDE_3_OPUS_20240229
|
23
24
|
CLAUDE_HAIKU = CLAUDE_3_HAIKU_20240307
|
24
|
-
CLAUDE_SONET =
|
25
|
+
CLAUDE_SONET = CLAUDE_3_5_SONET_20240620
|
25
26
|
end
|
26
27
|
|
27
28
|
protected
|
@@ -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.3.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-06-
|
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
|