Class: Aigen::Google::GenerationConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/aigen/google/generation_config.rb

Overview

GenerationConfig controls generation parameters for the Gemini API. Validates parameter ranges and raises InvalidRequestError before API calls.

Examples:

Basic configuration

config = Aigen::Google::GenerationConfig.new(temperature: 0.7, max_output_tokens: 1024)
config.to_h # => {temperature: 0.7, maxOutputTokens: 1024}

All parameters

config = Aigen::Google::GenerationConfig.new(
  temperature: 0.9,
  top_p: 0.95,
  top_k: 40,
  max_output_tokens: 2048
)

Instance Method Summary collapse

Constructor Details

#initialize(temperature: nil, top_p: nil, top_k: nil, max_output_tokens: nil, response_modalities: nil, aspect_ratio: nil, image_size: nil) ⇒ GenerationConfig

Initializes a GenerationConfig instance with optional parameters. Validates all parameters and raises InvalidRequestError if invalid.

Examples:

config = GenerationConfig.new(temperature: 0.5)

Image generation

config = GenerationConfig.new(
  response_modalities: ["TEXT", "IMAGE"],
  aspect_ratio: "16:9",
  image_size: "2K"
)

Parameters:

  • temperature (Float, nil) (defaults to: nil)

    controls randomness (0.0-1.0)

  • top_p (Float, nil) (defaults to: nil)

    nucleus sampling threshold (0.0-1.0)

  • top_k (Integer, nil) (defaults to: nil)

    top-k sampling limit (> 0)

  • max_output_tokens (Integer, nil) (defaults to: nil)

    maximum response tokens (> 0)

  • response_modalities (Array<String>, nil) (defaults to: nil)

    output modalities: [“TEXT”], [“IMAGE”], or [“TEXT”, “IMAGE”]

  • aspect_ratio (String, nil) (defaults to: nil)

    image aspect ratio: “1:1”, “16:9”, “9:16”, “4:3”, “3:4”, “5:4”, “4:5”

  • image_size (String, nil) (defaults to: nil)

    image resolution: “1K”, “2K”, “4K” (uppercase required)

Raises:



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/aigen/google/generation_config.rb', line 42

def initialize(temperature: nil, top_p: nil, top_k: nil, max_output_tokens: nil, response_modalities: nil, aspect_ratio: nil, image_size: nil)
  validate_temperature(temperature) if temperature
  validate_top_p(top_p) if top_p
  validate_top_k(top_k) if top_k
  validate_max_output_tokens(max_output_tokens) if max_output_tokens
  validate_response_modalities(response_modalities) if response_modalities
  validate_aspect_ratio(aspect_ratio) if aspect_ratio
  validate_image_size(image_size) if image_size

  @temperature = temperature
  @top_p = top_p
  @top_k = top_k
  @max_output_tokens = max_output_tokens
  @response_modalities = response_modalities
  @aspect_ratio = aspect_ratio
  @image_size = image_size
end

Instance Method Details

#to_hHash

Serializes the configuration to Gemini API format with camelCase keys. Omits nil values from the output.

Examples:

config = GenerationConfig.new(temperature: 0.7, max_output_tokens: 1024)
config.to_h # => {temperature: 0.7, maxOutputTokens: 1024}

Returns:

  • (Hash)

    the configuration hash with camelCase keys



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/aigen/google/generation_config.rb', line 68

def to_h
  result = {}
  result[:temperature] = @temperature unless @temperature.nil?
  result[:topP] = @top_p unless @top_p.nil?
  result[:topK] = @top_k unless @top_k.nil?
  result[:maxOutputTokens] = @max_output_tokens unless @max_output_tokens.nil?
  result[:responseModalities] = @response_modalities unless @response_modalities.nil?

  # Image generation parameters go under imageConfig
  if @aspect_ratio || @image_size
    image_config = {}
    image_config[:aspectRatio] = @aspect_ratio unless @aspect_ratio.nil?
    image_config[:imageSize] = @image_size unless @image_size.nil?
    result[:imageConfig] = image_config
  end

  result
end