Class: Geminize::Configuration

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/geminize/configuration.rb

Overview

Handles configuration options for the Geminize gem

Constant Summary collapse

API_BASE_URL =

Base URL for the Google Gemini API

"https://generativelanguage.googleapis.com"
DEFAULT_API_VERSION =

Default API version

"v1beta"
DEFAULT_MODEL =

Default model

"gemini-2.0-flash"
DEFAULT_EMBEDDING_MODEL =

Default embedding model

"gemini-embedding-exp-03-07"
DEFAULT_TIMEOUT =

Default timeout values (in seconds)

30
DEFAULT_OPEN_TIMEOUT =
10
DEFAULT_STREAMING_TIMEOUT =
300
DEFAULT_ON_DATA_TIMEOUT =
60

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Initialize with default configuration values



64
65
66
# File 'lib/geminize/configuration.rb', line 64

def initialize
  reset!
end

Instance Attribute Details

#api_keyString?

API key for accessing the Gemini API

Returns:

  • (String, nil)


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

def api_key
  @api_key
end

#api_versionString

API version to use

Returns:

  • (String)


34
35
36
# File 'lib/geminize/configuration.rb', line 34

def api_version
  @api_version
end

#default_embedding_modelString

Default embedding model to use if not specified in embedding requests

Returns:

  • (String)


42
43
44
# File 'lib/geminize/configuration.rb', line 42

def default_embedding_model
  @default_embedding_model
end

#default_modelString

Default model to use if not specified in requests

Returns:

  • (String)


38
39
40
# File 'lib/geminize/configuration.rb', line 38

def default_model
  @default_model
end

#log_requestsBoolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/geminize/configuration.rb', line 61

def log_requests
  @log_requests
end

#on_data_timeoutInteger

Timeout between data chunks in streaming responses

Returns:

  • (Integer)


58
59
60
# File 'lib/geminize/configuration.rb', line 58

def on_data_timeout
  @on_data_timeout
end

#open_timeoutInteger

Connection open timeout in seconds

Returns:

  • (Integer)


50
51
52
# File 'lib/geminize/configuration.rb', line 50

def open_timeout
  @open_timeout
end

#streaming_timeoutInteger

Streaming request timeout in seconds

Returns:

  • (Integer)


54
55
56
# File 'lib/geminize/configuration.rb', line 54

def streaming_timeout
  @streaming_timeout
end

#timeoutInteger

Request timeout in seconds

Returns:

  • (Integer)


46
47
48
# File 'lib/geminize/configuration.rb', line 46

def timeout
  @timeout
end

Instance Method Details

#api_base_urlString

Get the base URL for the Gemini API

Returns:

  • (String)


84
85
86
# File 'lib/geminize/configuration.rb', line 84

def api_base_url
  API_BASE_URL
end

#reset!

This method returns an undefined value.

Reset configuration to default values



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/geminize/configuration.rb', line 70

def reset!
  @api_key = ENV["GEMINI_API_KEY"]
  @api_version = ENV["GEMINI_API_VERSION"] || DEFAULT_API_VERSION
  @default_model = ENV["GEMINI_MODEL"] || DEFAULT_MODEL
  @default_embedding_model = ENV["GEMINI_EMBEDDING_MODEL"] || DEFAULT_EMBEDDING_MODEL
  @timeout = DEFAULT_TIMEOUT
  @open_timeout = DEFAULT_OPEN_TIMEOUT
  @streaming_timeout = DEFAULT_STREAMING_TIMEOUT
  @on_data_timeout = DEFAULT_ON_DATA_TIMEOUT
  @log_requests = false
end

#validate!Boolean

Validates the current configuration

Returns:

  • (Boolean)

Raises:



91
92
93
94
95
96
# File 'lib/geminize/configuration.rb', line 91

def validate!
  raise ConfigurationError, "API key must be set" if @api_key.nil? || @api_key.empty?
  raise ConfigurationError, "API version must be set" if @api_version.nil? || @api_version.empty?

  true
end