omniai-anthropic 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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