Class: Rubygpt::Client::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/rubygpt/client/configuration.rb

Overview

Handles the configuration options when initializing a new Rubygpt::Client object

Defined Under Namespace

Classes: InvalidConfigurationError

Constant Summary collapse

DEFAULT_API_URL =

The base URL for the OpenAI API

"https://api.openai.com/v1"
DEFAULT_CONNECTION_ADAPTER =
:faraday

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Configuration

Initializes new Rubygpt::Client::Configuration object

Parameters:

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :api_url (String)

    required

  • :api_key (String)
  • :organization_id (String)
  • :model (String)

    required

  • :connection_adapter (String)


49
50
51
52
53
54
55
# File 'lib/rubygpt/client/configuration.rb', line 49

def initialize(options = {})
  @connection_adapter = options[:connection_adapter] || DEFAULT_CONNECTION_ADAPTER
  @api_key = options[:api_key]
  @api_url = options[:api_url] || DEFAULT_API_URL
  @organization_id = options[:organization_id]
  @model = options[:model]
end

Instance Attribute Details

#api_keyObject

The API key to use for the client



26
27
28
# File 'lib/rubygpt/client/configuration.rb', line 26

def api_key
  @api_key
end

#api_urlObject

The API URL to use for the client



23
24
25
# File 'lib/rubygpt/client/configuration.rb', line 23

def api_url
  @api_url
end

#connection_adapterObject

The connection adapter to use for the client Defaults to :faraday



20
21
22
# File 'lib/rubygpt/client/configuration.rb', line 20

def connection_adapter
  @connection_adapter
end

#modelObject

The GPT model to use for the client Sample values: gpt-4, gpt-4-turbo-preview, gpt-3.5-turbo, gpt-3.5-turbo-instruct Refer to platform.openai.com/docs/models



35
36
37
# File 'lib/rubygpt/client/configuration.rb', line 35

def model
  @model
end

#organization_idObject

The OpenAI OrganizationID that will be sent when making requests (optional) platform.openai.com/docs/api-reference/organization-optional



30
31
32
# File 'lib/rubygpt/client/configuration.rb', line 30

def organization_id
  @organization_id
end

Class Method Details

.from(configuration_input) ⇒ Object

Initializes a new Rubygpt::Client::Configuration object from a hash or another Configuration object



8
9
10
11
12
13
14
# File 'lib/rubygpt/client/configuration.rb', line 8

def self.from(configuration_input)
  case configuration_input
  when Configuration then configuration_input
  when Hash, nil then Configuration.new(configuration_input || {})
  else raise InvalidConfigurationError, "Invalid configuration provided for client."
  end
end

Instance Method Details

#to_headersObject



62
63
64
65
66
67
# File 'lib/rubygpt/client/configuration.rb', line 62

def to_headers
  {
    "Authorization" => "Bearer #{api_key}",
    "OpenAI-Organization" => organization_id
  }.compact
end

#validate!Object



57
58
59
60
# File 'lib/rubygpt/client/configuration.rb', line 57

def validate!
  raise(InvalidConfigurationError, "model is required") unless model
  raise(InvalidConfigurationError, "api_key is required") unless api_key
end