class OpenAI::Client
Public Class Methods
new(access_token: nil)
click to toggle source
# File lib/ruby/openai/client.rb, line 6 def initialize(access_token: nil) @access_token = access_token || ENV["OPENAI_ACCESS_TOKEN"] end
Public Instance Methods
answers(version: default_version, parameters: {})
click to toggle source
# File lib/ruby/openai/client.rb, line 10 def answers(version: default_version, parameters: {}) post(url: "/#{version}/answers", parameters: parameters) end
classifications(version: default_version, parameters: {})
click to toggle source
# File lib/ruby/openai/client.rb, line 14 def classifications(version: default_version, parameters: {}) post(url: "/#{version}/classifications", parameters: parameters) end
completions(engine:, version: default_version, parameters: {})
click to toggle source
# File lib/ruby/openai/client.rb, line 18 def completions(engine:, version: default_version, parameters: {}) post(url: "/#{version}/engines/#{engine}/completions", parameters: parameters) end
files()
click to toggle source
# File lib/ruby/openai/client.rb, line 22 def files @files ||= OpenAI::Files.new(access_token: @access_token) end
search(engine:, query: nil, documents: nil, file: nil, version: default_version, parameters: {})
click to toggle source
rubocop:disable Layout/LineLength rubocop:disable Metrics/ParameterLists
# File lib/ruby/openai/client.rb, line 28 def search(engine:, query: nil, documents: nil, file: nil, version: default_version, parameters: {}) return legacy_search(engine: engine, query: query, documents: documents, file: file, version: version) if query || documents || file post(url: "/#{version}/engines/#{engine}/search", parameters: parameters) end
Private Instance Methods
default_version()
click to toggle source
rubocop:enable Layout/LineLength
# File lib/ruby/openai/client.rb, line 52 def default_version "v1".freeze end
documents_or_file(documents: nil, file: nil)
click to toggle source
# File lib/ruby/openai/client.rb, line 56 def documents_or_file(documents: nil, file: nil) documents ? { documents: documents } : { file: file } end
legacy_search(engine:, query:, documents: nil, file: nil, version: default_version)
click to toggle source
rubocop:disable Layout/LineLength
# File lib/ruby/openai/client.rb, line 39 def legacy_search(engine:, query:, documents: nil, file: nil, version: default_version) warn "[DEPRECATION] Passing `query`, `documents` or `file` directly to `Client#search` is deprecated and will be removed in a future version of ruby-openai. Please nest these terms within `parameters` instead, like this: client.search(engine: 'davinci', parameters: { query: 'president', documents: %w[washington hospital school] }) " post( url: "/#{version}/engines/#{engine}/search", parameters: { query: query }.merge(documents_or_file(documents: documents, file: file)) ) end
post(url:, parameters:)
click to toggle source
# File lib/ruby/openai/client.rb, line 60 def post(url:, parameters:) self.class.post( url, headers: { "Content-Type" => "application/json", "Authorization" => "Bearer #{@access_token}" }, body: parameters.to_json ) end