ruby-openai 3.6.0 → 6.5.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.
data/lib/openai.rb CHANGED
@@ -1,28 +1,57 @@
1
- require "httparty"
1
+ require "faraday"
2
+ require "faraday/multipart"
2
3
 
4
+ require_relative "openai/http"
3
5
  require_relative "openai/client"
4
6
  require_relative "openai/files"
5
7
  require_relative "openai/finetunes"
6
8
  require_relative "openai/images"
7
9
  require_relative "openai/models"
10
+ require_relative "openai/assistants"
11
+ require_relative "openai/threads"
12
+ require_relative "openai/messages"
13
+ require_relative "openai/runs"
14
+ require_relative "openai/run_steps"
15
+ require_relative "openai/audio"
8
16
  require_relative "openai/version"
9
17
 
10
18
  module OpenAI
11
19
  class Error < StandardError; end
12
20
  class ConfigurationError < Error; end
13
21
 
22
+ class MiddlewareErrors < Faraday::Middleware
23
+ def call(env)
24
+ @app.call(env)
25
+ rescue Faraday::Error => e
26
+ raise e unless e.response.is_a?(Hash)
27
+
28
+ logger = Logger.new($stdout)
29
+ logger.formatter = proc do |_severity, _datetime, _progname, msg|
30
+ "\033[31mOpenAI HTTP Error (spotted in ruby-openai #{VERSION}): #{msg}\n\033[0m"
31
+ end
32
+ logger.error(e.response[:body])
33
+
34
+ raise e
35
+ end
36
+ end
37
+
14
38
  class Configuration
15
39
  attr_writer :access_token
16
- attr_accessor :api_version, :organization_id, :request_timeout
40
+ attr_accessor :api_type, :api_version, :organization_id, :uri_base, :request_timeout,
41
+ :extra_headers
17
42
 
18
43
  DEFAULT_API_VERSION = "v1".freeze
44
+ DEFAULT_URI_BASE = "https://api.openai.com/".freeze
19
45
  DEFAULT_REQUEST_TIMEOUT = 120
20
46
 
21
47
  def initialize
22
48
  @access_token = nil
49
+ @api_type = nil
23
50
  @api_version = DEFAULT_API_VERSION
24
51
  @organization_id = nil
52
+ @uri_base = DEFAULT_URI_BASE
25
53
  @request_timeout = DEFAULT_REQUEST_TIMEOUT
54
+ @extra_headers = {}
26
55
  end
27
56
 
28
57
  def access_token
@@ -44,4 +73,16 @@ module OpenAI
44
73
  def self.configure
45
74
  yield(configuration)
46
75
  end
76
+
77
+ # Estimate the number of tokens in a string, using the rules of thumb from OpenAI:
78
+ # https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them
79
+ def self.rough_token_count(content = "")
80
+ raise ArgumentError, "rough_token_count requires a string" unless content.is_a? String
81
+ return 0 if content.empty?
82
+
83
+ count_by_chars = content.size / 4.0
84
+ count_by_words = content.split.size * 4.0 / 3
85
+ estimate = ((count_by_chars + count_by_words) / 2.0).round
86
+ [1, estimate].max
87
+ end
47
88
  end
data/ruby-openai.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 = "A Ruby gem for the OpenAI GPT-3 API"
9
+ spec.summary = "OpenAI API + Ruby! 🤖🩵"
10
10
  spec.homepage = "https://github.com/alexrudall/ruby-openai"
11
11
  spec.license = "MIT"
12
12
  spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
@@ -15,6 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.metadata["source_code_uri"] = "https://github.com/alexrudall/ruby-openai"
16
16
  spec.metadata["changelog_uri"] = "https://github.com/alexrudall/ruby-openai/blob/main/CHANGELOG.md"
17
17
  spec.metadata["rubygems_mfa_required"] = "true"
18
+ spec.metadata["funding_uri"] = "https://github.com/sponsors/alexrudall"
18
19
 
19
20
  # Specify which files should be added to the gem when it is released.
20
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -25,7 +26,7 @@ Gem::Specification.new do |spec|
25
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
27
  spec.require_paths = ["lib"]
27
28
 
28
- spec.add_dependency "httparty", ">= 0.18.1"
29
-
30
- spec.post_install_message = "Note if upgrading: The `::Ruby::OpenAI` module has been removed and all classes have been moved under the top level `::OpenAI` module. To upgrade, change `require 'ruby/openai'` to `require 'openai'` and change all references to `Ruby::OpenAI` to `OpenAI`."
29
+ spec.add_dependency "event_stream_parser", ">= 0.3.0", "< 2.0.0"
30
+ spec.add_dependency "faraday", ">= 1"
31
+ spec.add_dependency "faraday-multipart", ">= 1"
31
32
  end
metadata CHANGED
@@ -1,30 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-openai
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.0
4
+ version: 6.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-22 00:00:00.000000000 Z
11
+ date: 2024-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: httparty
14
+ name: event_stream_parser
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.18.1
19
+ version: 0.3.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.3.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 2.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: faraday
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: faraday-multipart
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '1'
20
54
  type: :runtime
21
55
  prerelease: false
22
56
  version_requirements: !ruby/object:Gem::Requirement
23
57
  requirements:
24
58
  - - ">="
25
59
  - !ruby/object:Gem::Version
26
- version: 0.18.1
27
- description:
60
+ version: '1'
61
+ description:
28
62
  email:
29
63
  - alexrudall@users.noreply.github.com
30
64
  executables: []
@@ -32,6 +66,10 @@ extensions: []
32
66
  extra_rdoc_files: []
33
67
  files:
34
68
  - ".circleci/config.yml"
69
+ - ".devcontainer/Dockerfile"
70
+ - ".devcontainer/devcontainer.json"
71
+ - ".devcontainer/docker-compose.yml"
72
+ - ".github/FUNDING.yml"
35
73
  - ".github/ISSUE_TEMPLATE/bug_report.md"
36
74
  - ".github/ISSUE_TEMPLATE/feature_request.md"
37
75
  - ".github/dependabot.yml"
@@ -49,12 +87,20 @@ files:
49
87
  - bin/console
50
88
  - bin/setup
51
89
  - lib/openai.rb
90
+ - lib/openai/assistants.rb
91
+ - lib/openai/audio.rb
52
92
  - lib/openai/client.rb
53
93
  - lib/openai/compatibility.rb
54
94
  - lib/openai/files.rb
55
95
  - lib/openai/finetunes.rb
96
+ - lib/openai/http.rb
97
+ - lib/openai/http_headers.rb
56
98
  - lib/openai/images.rb
99
+ - lib/openai/messages.rb
57
100
  - lib/openai/models.rb
101
+ - lib/openai/run_steps.rb
102
+ - lib/openai/runs.rb
103
+ - lib/openai/threads.rb
58
104
  - lib/openai/version.rb
59
105
  - lib/ruby/openai.rb
60
106
  - pull_request_template.md
@@ -67,10 +113,8 @@ metadata:
67
113
  source_code_uri: https://github.com/alexrudall/ruby-openai
68
114
  changelog_uri: https://github.com/alexrudall/ruby-openai/blob/main/CHANGELOG.md
69
115
  rubygems_mfa_required: 'true'
70
- post_install_message: 'Note if upgrading: The `::Ruby::OpenAI` module has been removed
71
- and all classes have been moved under the top level `::OpenAI` module. To upgrade,
72
- change `require ''ruby/openai''` to `require ''openai''` and change all references
73
- to `Ruby::OpenAI` to `OpenAI`.'
116
+ funding_uri: https://github.com/sponsors/alexrudall
117
+ post_install_message:
74
118
  rdoc_options: []
75
119
  require_paths:
76
120
  - lib
@@ -85,8 +129,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
129
  - !ruby/object:Gem::Version
86
130
  version: '0'
87
131
  requirements: []
88
- rubygems_version: 3.1.4
89
- signing_key:
132
+ rubygems_version: 3.4.22
133
+ signing_key:
90
134
  specification_version: 4
91
- summary: A Ruby gem for the OpenAI GPT-3 API
135
+ summary: "OpenAI API + Ruby! \U0001F916\U0001FA75"
92
136
  test_files: []