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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 94edb41afdba159c925d228d74af4f953ec1fe0685ee91c96604d9f2e811d285
4
- data.tar.gz: d60b97840f9fc260fc9a5d2d7301f0f736985b6e56b5b03d470447142ef3fe9d
3
+ metadata.gz: ae62c7e30da3f0f0ad3fc0e0c3d6c77fb2401281d5630d0d5447a49321416fcf
4
+ data.tar.gz: 76ed4ac36be43c81788ec82542c10905a04882f76d48b24903899c571989f7e3
5
5
  SHA512:
6
- metadata.gz: a367fc5489ec208adbaaec7629a877ddf3f2f1f444cd8a0eac40af0a2f2072ce5d7ea82ab7a6d18de56e0a06ec23e9177b84a5856954c5961ad0967c4c527531
7
- data.tar.gz: 3b31c67c47b8c367d0207e8f4bf73f7a498fe78e4848505ec287fb42a9307963fa13e33176f68aa160d7296a3bcfa0e5b2bab6a90a05a264b5ba9092a174336f
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::CLAUDE_OPUS)
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::Choice>]
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::Choice.for(data: {
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 = CLAUDE_3_SONET_20240307
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
- host: OmniAI::Anthropic.config.host
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
- HTTP
44
- .headers('x-api-key': @api_key)
45
- .headers('anthropic-version': @version)
46
- .persistent('https://api.anthropic.com')
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
- # Config for the Anthropic `api_key` / `host` / `logger` / `version` / `chat_options`.
5
+ # Configuration for Anthropic.
6
6
  class Config < OmniAI::Config
7
- attr_accessor :version, :chat_options
7
+ DEFAULT_HOST = 'https://api.anthropic.com'
8
+ DEFAULT_VERSION = '2023-06-01'
8
9
 
9
- def initialize
10
- super
11
- @api_key = ENV.fetch('ANTHROPIC_API_KEY', nil)
12
- @host = ENV.fetch('ANTHROPIC_HOST', 'https://api.anthropic.com')
13
- @version = ENV.fetch('ANTHROPIC_VERSION', '2023-06-01')
14
- @chat_options = { max_tokens: 4096 }
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OmniAI
4
4
  module Anthropic
5
- VERSION = '1.2.0'
5
+ VERSION = '1.3.0'
6
6
  end
7
7
  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.2.0
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-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