anthropic 0.0.0 → 0.1.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: 5ebc9a3f0188078f1a6bd06fc9bd603f22b054bab8228df0882112a223793210
4
- data.tar.gz: bbbce42b980f930f7f34e283528926d6013dc136d8246bfe6b0aa7802db959ca
3
+ metadata.gz: 7bf4e9a547533edb57fcaee7dd07c8c1a5c7d3f5291b539541b9b9b8c3b5e614
4
+ data.tar.gz: e62081a581aa15d9b8dbd335fb6b989671eb733629b64992c847584e83100c4e
5
5
  SHA512:
6
- metadata.gz: b45be07f0fdebad2f46b7701cee689a7abbde61c2b20b594f809dfc22523b1a314c11a2556bcdb7862e0fc22dcdf575e5e037f3f5738e28069688d8a8689e16b
7
- data.tar.gz: 5cdc5d601c49bf76ace7f4daa54ae4c41f27ec866c28e1ea9c3ebaba64bd6ac06fe4c3413ade2ee41b38f6487f37ef4487fcc551cdc065f2418c3bf983dc4e7c
6
+ metadata.gz: dc148818d355a80050ae35c9b7a60d48dfa713826b9607d9add0ceb70b88da4b19f7b650dae1b5714ea41003fcec94cd4bc2fd226f999c3e4c3562d681a8100a
7
+ data.tar.gz: 683dedfd00584546691bde56a569f2a043a0ba8b9806450e5baabcdbc0c0ff28960778c9cda600bea5b13a8024b01337e1f271f363508dd657424ad6da3b3fbd
data/CHANGELOG.md CHANGED
@@ -10,3 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
10
10
  ### Added
11
11
 
12
12
  - Initialise repository.
13
+
14
+ ## [0.1.0] - 2023-07-18
15
+
16
+ ### Changed
17
+
18
+ - Got the gem working with the API. MVP
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- anthropic (0.0.0)
4
+ anthropic (0.1.0)
5
5
  faraday (>= 1)
6
6
  faraday-multipart (>= 1)
7
7
 
@@ -16,7 +16,7 @@ GEM
16
16
  rexml
17
17
  diff-lcs (1.5.0)
18
18
  dotenv (2.8.1)
19
- faraday (2.7.7)
19
+ faraday (2.7.10)
20
20
  faraday-net_http (>= 2.0, < 3.1)
21
21
  ruby2_keywords (>= 0.0.4)
22
22
  faraday-multipart (1.0.4)
data/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
  [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/alexrudall/anthropic/blob/main/LICENSE.txt)
5
5
  [![CircleCI Build Status](https://circleci.com/gh/alexrudall/anthropic.svg?style=shield)](https://circleci.com/gh/alexrudall/anthropic)
6
6
 
7
- Use the [Anthropic API](https://anthropic.com/blog/anthropic-api/) with Ruby! 🤖❤️
7
+ Use the [Anthropic API](https://docs.anthropic.com/claude/reference/getting-started-with-the-api) with Ruby! 🌌❤️
8
8
 
9
- This is very much a WIP and probably doesn't work as I don't have access to the Anthropic API as yet, but it will get a lot better once I do! Hopefully very soon :D
9
+ You can apply for access to the API [here](https://docs.anthropic.com/claude/docs/getting-access-to-claude).
10
10
 
11
11
  [Ruby AI Builders Discord](https://discord.gg/k4Uc224xVD)
12
12
 
@@ -40,8 +40,7 @@ require "anthropic"
40
40
 
41
41
  ## Usage
42
42
 
43
- - Get your API key from [https://platform.anthropic.com/account/api-keys](https://platform.anthropic.com/account/api-keys)
44
- - If you belong to multiple organizations, you can get your Organization ID from [https://platform.anthropic.com/account/org-settings](https://platform.anthropic.com/account/org-settings)
43
+ - Get your API key from [https://console.anthropic.com/account/keys](https://console.anthropic.com/account/keys)
45
44
 
46
45
  ### Quickstart
47
46
 
@@ -67,26 +66,27 @@ Then you can create a client like this:
67
66
  client = Anthropic::Client.new
68
67
  ```
69
68
 
70
- #### Custom timeout or base URI
69
+ #### Change version or timeout
70
+
71
+ You can change to a different dated version (different from the URL version which is just `v1`) of Anthropic's API by passing `anthropic_version` when initializing the client. If you don't the default latest will be used, which is "2023-06-01". [More info](https://docs.anthropic.com/claude/reference/versioning)
71
72
 
72
73
  The default timeout for any request using this library is 120 seconds. You can change that by passing a number of seconds to the `request_timeout` when initializing the client.
73
74
 
74
75
  ```ruby
75
76
  client = Anthropic::Client.new(
76
77
  access_token: "access_token_goes_here",
77
- request_timeout: 240
78
+ anthropic_version: "2023-01-01", # Optional
79
+ request_timeout: 240 # Optional
78
80
  )
79
81
  ```
80
82
 
81
- or when configuring the gem:
83
+ You can also set these keys when configuring the gem:
82
84
 
83
85
  ```ruby
84
86
  Anthropic.configure do |config|
85
87
  config.access_token = ENV.fetch("ANTHROPIC_API_KEY")
88
+ config.anthropic_version = "2023-01-01" # Optional
86
89
  config.request_timeout = 240 # Optional
87
- config.extra_headers = {
88
- "X-Proxy-Refresh": "true"
89
- } # Optional
90
90
  end
91
91
  ```
92
92
 
@@ -95,16 +95,30 @@ end
95
95
  Hit the Anthropic API for a completion:
96
96
 
97
97
  ```ruby
98
- response = client.completions(
98
+ response = client.complete(
99
99
  parameters: {
100
100
  model: "claude-2",
101
- prompt: "Once upon a time",
102
- max_tokens: 5
101
+ prompt: "How high is the sky?",
102
+ max_tokens_to_sample: 5
103
103
  })
104
- puts response["choices"].map { |c| c["text"] }
105
- # => [", there lived a great"]
104
+ puts response["completion"]
105
+ # => " The sky has no definitive"
106
106
  ```
107
107
 
108
+ Note that all requests are prepended by this library with
109
+
110
+ `\n\nHuman: `
111
+
112
+ and appended with
113
+
114
+ `\n\nAssistant:`
115
+
116
+ so whatever prompt you pass will be sent to the API as
117
+
118
+ `\n\nHuman: How high is the sky?\n\nAssistant:`
119
+
120
+ This is a requirement of [the API](https://docs.anthropic.com/claude/reference/complete_post).
121
+
108
122
  ## Development
109
123
 
110
124
  After checking out the repo, run `bin/setup` to install dependencies. You can run `bin/console` for an interactive prompt that will allow you to experiment.
data/anthropic.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
6
6
  spec.authors = ["Alex"]
7
7
  spec.email = ["alexrudall@users.noreply.github.com"]
8
8
 
9
- spec.summary = "Anthropic API + Ruby! 🤖❤️"
9
+ spec.summary = "Anthropic API + Ruby! 🌌❤️"
10
10
  spec.homepage = "https://github.com/alexrudall/anthropic"
11
11
  spec.license = "MIT"
12
12
  spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
@@ -11,8 +11,19 @@ module Anthropic
11
11
  Anthropic.configuration.extra_headers = extra_headers
12
12
  end
13
13
 
14
- def completions(parameters: {})
15
- Anthropic::Client.json_post(path: "/completions", parameters: parameters)
14
+ def complete(parameters: {})
15
+ parameters[:prompt] = wrap_prompt(prompt: parameters[:prompt])
16
+ Anthropic::Client.json_post(path: "/complete", parameters: parameters)
17
+ end
18
+
19
+ private
20
+
21
+ def wrap_prompt(prompt:, prefix: "\n\nHuman: ", suffix: "\n\nAssistant:")
22
+ return if prompt.nil?
23
+
24
+ prompt.prepend(prefix) unless prompt.start_with?(prefix)
25
+ prompt.concat(suffix) unless prompt.end_with?(suffix)
26
+ prompt
16
27
  end
17
28
  end
18
29
  end
@@ -74,8 +74,8 @@ module Anthropic
74
74
  def headers
75
75
  {
76
76
  "Content-Type" => "application/json",
77
- "Authorization" => "Bearer #{Anthropic.configuration.access_token}",
78
- "Anthropic-Organization" => Anthropic.configuration.organization_id
77
+ "x-api-key" => Anthropic.configuration.access_token,
78
+ "Anthropic-Version" => Anthropic.configuration.anthropic_version
79
79
  }.merge(Anthropic.configuration.extra_headers)
80
80
  end
81
81
 
@@ -83,7 +83,7 @@ module Anthropic
83
83
  parameters&.transform_values do |value|
84
84
  next value unless value.is_a?(File)
85
85
 
86
- # Doesn't seem like Anthropic need mime_type yet, so not worth
86
+ # Doesn't seem like Anthropic needs mime_type yet, so not worth
87
87
  # the library to figure this out. Hence the empty string
88
88
  # as the second argument.
89
89
  Faraday::UploadIO.new(value, "", value.path)
@@ -1,3 +1,3 @@
1
1
  module Anthropic
2
- VERSION = "0.0.0".freeze
2
+ VERSION = "0.1.0".freeze
3
3
  end
data/lib/anthropic.rb CHANGED
@@ -3,10 +3,6 @@ require "faraday/multipart"
3
3
 
4
4
  require_relative "anthropic/http"
5
5
  require_relative "anthropic/client"
6
- require_relative "anthropic/files"
7
- require_relative "anthropic/finetunes"
8
- require_relative "anthropic/images"
9
- require_relative "anthropic/models"
10
6
  require_relative "anthropic/version"
11
7
 
12
8
  module Anthropic
@@ -15,15 +11,18 @@ module Anthropic
15
11
 
16
12
  class Configuration
17
13
  attr_writer :access_token
18
- attr_accessor :api_version, :organization_id, :uri_base, :request_timeout, :extra_headers
14
+ attr_accessor :anthropic_version, :api_version, :extra_headers, :organization_id,
15
+ :request_timeout, :uri_base
19
16
 
20
17
  DEFAULT_API_VERSION = "v1".freeze
18
+ DEFAULT_ANTHROPIC_VERSION = "2023-06-01".freeze
21
19
  DEFAULT_URI_BASE = "https://api.anthropic.com/".freeze
22
20
  DEFAULT_REQUEST_TIMEOUT = 120
23
21
 
24
22
  def initialize
25
23
  @access_token = nil
26
24
  @api_version = DEFAULT_API_VERSION
25
+ @anthropic_version = DEFAULT_ANTHROPIC_VERSION
27
26
  @organization_id = nil
28
27
  @uri_base = DEFAULT_URI_BASE
29
28
  @request_timeout = DEFAULT_REQUEST_TIMEOUT
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anthropic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-12 00:00:00.000000000 Z
11
+ date: 2023-07-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -96,5 +96,5 @@ requirements: []
96
96
  rubygems_version: 3.4.12
97
97
  signing_key:
98
98
  specification_version: 4
99
- summary: "Anthropic API + Ruby! \U0001F916❤️"
99
+ summary: "Anthropic API + Ruby! \U0001F30C❤️"
100
100
  test_files: []