anthropic-rb 0.3.0 → 0.4.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: 137b1e285afd97d1ec45ba94685dfcb17afd4388dbd43dbad200ef61228952bd
4
- data.tar.gz: 465bc7914a25c1f438539364de3fe753f379879273ffafac0818305db60d782c
3
+ metadata.gz: b5e066105f3157621c27e2f974ed43bde9f14e6e55187d1d7a4f095b79a5a1ba
4
+ data.tar.gz: f32d479f7ec06c29a0347f69084a4378a64d69233d78ed280f5a1c924e15d708
5
5
  SHA512:
6
- metadata.gz: 34e45517ffa6f2b35a550f8ff1827618b1a01068cc685f8e7980ea893025cd3811609f80cf2ce5c3d199507252701ad4efcc4ddb7cf2d462b996b5c9aa3229f3
7
- data.tar.gz: 2eddc00d9f8c86c45187a332a93e1d218f04af1eaf8cac45ccdcc767dba4e3c9217c17b80753b1c53d64c2b80aa2fa2c8940af1fe56a0c630766ab8e2f4ef0d5
6
+ metadata.gz: 90040c86504a3dfd28e0093d1b8525252387f4e978271908aa158d1cffe10a3dd5766aadc243bc31f45ca6dd38ecf1259d009b2da9f2f78670fcc114c76574a3
7
+ data.tar.gz: 8ca46c62fe204b3b2403cce1267b6661f43c52159c8d31877b9d2522be604427996eedcbac67ba22a1b6df703259ededd98ea2b86d49755d7aa057835458321c
data/.reek.yml CHANGED
@@ -8,3 +8,6 @@ detectors:
8
8
  BooleanParameter:
9
9
  exclude:
10
10
  - 'Anthropic::Messages#initialize'
11
+ DuplicateMethodCall:
12
+ exclude:
13
+ - 'Anthropic::Messages#create'
data/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.4.0] - 2024-04-20
6
+
7
+ ### Added
8
+
9
+ - Add support for the tools beta.
10
+
11
+ ### Updated
12
+
13
+ - Remove beta header for Messages API as the API is no longer in beta.
14
+
5
15
  ## [0.3.0] - 2023-12-28
6
16
 
7
17
  ### Added
@@ -47,7 +57,8 @@
47
57
 
48
58
  - Initial release
49
59
 
50
- [Unreleased]: https://github.com/dickdavis/anthropic-rb/compare/v0.3.0...HEAD
60
+ [Unreleased]: https://github.com/dickdavis/anthropic-rb/compare/v0.4.0...HEAD
61
+ [0.4.0]: https://github.com/dickdavis/anthropic-rb/compare/v0.3.0...v0.4.0
51
62
  [0.3.0]: https://github.com/dickdavis/anthropic-rb/compare/v0.2.5...v0.3.0
52
63
  [0.2.5]: https://github.com/dickdavis/anthropic-rb/compare/v0.2.3...v0.2.5
53
64
  [0.2.3]: https://github.com/dickdavis/anthropic-rb/compare/v0.2.2...v0.2.3
data/README.md CHANGED
@@ -9,7 +9,7 @@ The goal of this project is feature parity with Anthropic's Python SDK until an
9
9
  anthropic-rb will default to the value of the `ANTHROPIC_API_KEY` environment variable. However, you may initialize the library with your API key. You must set your API key before using the library.
10
10
 
11
11
  ```ruby
12
- require 'anthropic-rb'
12
+ require 'anthropic'
13
13
 
14
14
  Anthropic.setup do |config|
15
15
  config.api_key = 'YOUR_API_KEY'
@@ -19,7 +19,7 @@ end
19
19
  You can also specify an API version to use by setting the `ANTHROPIC_API_VERSION` environment variable or during initialization. This is optional; if not set, the library will default to `2023-06-01`.
20
20
 
21
21
  ```ruby
22
- require 'anthropic-rb'
22
+ require 'anthropic'
23
23
 
24
24
  Anthropic.setup do |config|
25
25
  config.api_version = '2023-06-01'
@@ -28,10 +28,10 @@ end
28
28
 
29
29
  ### Messages API
30
30
 
31
- You can send a request to the Messages API. The Messages API is currently in beta; as such, you'll need to pass the `beta` flag when calling the API to ensure the correct header is included.
31
+ You can send a request to the Messages API.
32
32
 
33
33
  ```ruby
34
- Anthropic.messages(beta: true).create(model: 'claude-2.1', max_tokens: 200, messages: [{role: 'user', content: 'Yo what up?'}])
34
+ Anthropic.messages.create(model: 'claude-2.1', max_tokens: 200, messages: [{role: 'user', content: 'Yo what up?'}])
35
35
 
36
36
  # Output =>
37
37
  # {
@@ -48,7 +48,7 @@ Anthropic.messages(beta: true).create(model: 'claude-2.1', max_tokens: 200, mess
48
48
  Alternatively, you can stream the response:
49
49
 
50
50
  ```ruby
51
- Anthropic.messages(beta: true).create(model: 'claude-2.1', max_tokens: 200, messages: [{role: 'user', content: 'Yo what up?'}], stream: true) do |event|
51
+ Anthropic.messages.create(model: 'claude-2.1', max_tokens: 200, messages: [{role: 'user', content: 'Yo what up?'}], stream: true) do |event|
52
52
  puts event
53
53
  end
54
54
 
@@ -62,6 +62,33 @@ end
62
62
  # { type: 'message_stop' }
63
63
  ```
64
64
 
65
+ You can also experiment with the new tools beta by passing the `beta` flag when calling the API. This will ensure each request includes the correct beta header.
66
+
67
+ ```ruby
68
+ tools = [
69
+ {
70
+ name: 'get_weather',
71
+ description: 'Get the current weather in a given location',
72
+ input_schema: {
73
+ type: 'object',
74
+ properties: {
75
+ location: { type: 'string' }
76
+ },
77
+ required: ['location']
78
+ }
79
+ }
80
+ ]
81
+
82
+ Anthropic.messages(beta: true).create(
83
+ model: 'claude-3-opus-20240229',
84
+ max_tokens: 200,
85
+ tools:,
86
+ messages: [{role: 'user', content: 'What is the weather like in Nashville?'}]
87
+ )
88
+ ```
89
+
90
+ Streaming is currently not supported by the tools beta. You can find out more information about tools in the [documentation](https://docs.anthropic.com/claude/docs/tool-use).
91
+
65
92
  ### Completions API
66
93
 
67
94
  To make a request to the Completions API:
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/anthropic/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'anthropic-rb'
7
+ spec.version = Anthropic::VERSION
8
+ spec.authors = ['Dick Davis']
9
+ spec.email = ['dick@hey.com']
10
+
11
+ spec.summary = 'Ruby bindings for the Anthropic API'
12
+ spec.homepage = 'https://github.com/dickdavis/anthropic-rb'
13
+ spec.license = 'MIT'
14
+
15
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
16
+ spec.metadata['homepage_uri'] = spec.homepage
17
+ spec.metadata['source_code_uri'] = 'https://github.com/dickdavis/anthropic-rb'
18
+ spec.metadata['changelog_uri'] = 'https://github.com/dickdavis/anthropic-rb/blob/main/CHANGELOG.md'
19
+
20
+ # Specify which files should be added to the gem when it is released.
21
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
+ spec.files = Dir.chdir(__dir__) do
23
+ `git ls-files -z`.split("\x0").reject do |f|
24
+ (File.expand_path(f) == __FILE__) ||
25
+ f.start_with?(*%w[bin/ spec/ .git .github/ Gemfile])
26
+ end
27
+ end
28
+ spec.bindir = 'exe'
29
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ['lib']
31
+
32
+ # Uncomment to register a new dependency of your gem
33
+ # spec.add_dependency "example-gem", "~> 1.0"
34
+
35
+ # For more information and examples about making a new gem, check out our
36
+ # guide at: https://bundler.io/guides/creating_gem.html
37
+ spec.metadata['rubygems_mfa_required'] = 'true'
38
+
39
+ spec.required_ruby_version = '>= 3.1'
40
+ spec.add_dependency 'httpx', '>= 1.1.5'
41
+ spec.add_dependency 'json-schema', '>= 4.1.1'
42
+ end
@@ -7,6 +7,9 @@ module Anthropic
7
7
  # Error for when the API version is not supported.
8
8
  class UnsupportedApiVersionError < StandardError; end
9
9
 
10
+ # Error for when a beta feature is not used correctly
11
+ class UnsupportedBetaOptionError < StandardError; end
12
+
10
13
  ENDPOINT = 'https://api.anthropic.com/v1/messages'
11
14
  V1_SCHEMA = {
12
15
  type: 'object',
@@ -18,6 +21,14 @@ module Anthropic
18
21
  system: { type: 'string' },
19
22
  stop_sequences: { type: 'array', items: { type: 'string' } },
20
23
  temperature: { type: 'number' },
24
+ tools: {
25
+ type: 'array',
26
+ items: {
27
+ name: { type: 'string' },
28
+ description: { type: 'string' },
29
+ input_schema: { type: 'object' }
30
+ }
31
+ },
21
32
  top_k: { type: 'integer' },
22
33
  top_p: { type: 'number' },
23
34
  metadata: { type: 'object' },
@@ -31,7 +42,10 @@ module Anthropic
31
42
  end
32
43
 
33
44
  def create(**params, &)
45
+ raise UnsupportedBetaOptionError, 'Tool use is not yet supported in streaming mode' if params[:stream] && beta
46
+
34
47
  JSON::Validator.validate!(schema_for_api_version, params)
48
+
35
49
  return Anthropic::Client.post(ENDPOINT, params, additional_headers) unless params[:stream]
36
50
 
37
51
  Anthropic::Client.post_as_stream(ENDPOINT, params, additional_headers, &)
@@ -56,7 +70,7 @@ module Anthropic
56
70
  def additional_headers
57
71
  return {} unless beta
58
72
 
59
- { 'anthropic-beta' => 'messages-2023-12-15' }
73
+ { 'anthropic-beta' => 'tools-2024-04-04' }
60
74
  end
61
75
  end
62
76
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Anthropic
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anthropic-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dick Davis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-12-28 00:00:00.000000000 Z
11
+ date: 2024-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httpx
@@ -54,6 +54,7 @@ files:
54
54
  - LICENSE.txt
55
55
  - README.md
56
56
  - Rakefile
57
+ - anthropic-rb.gemspec
57
58
  - lib/anthropic.rb
58
59
  - lib/anthropic/client.rb
59
60
  - lib/anthropic/completions.rb