Class: Geminize::Models::ChatRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/geminize/models/chat_request.rb

Overview

Represents a chat request to the Gemini API

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(content, model_name = nil, user_id = nil, params = {}) ⇒ ChatRequest

Initialize a new chat request

Parameters:

  • content (String)

    The user's message content

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

    The model name to use

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

    Optional user identifier

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

    Additional parameters

Options Hash (params):

  • :temperature (Float)

    Controls randomness (0.0-1.0)

  • :max_tokens (Integer)

    Maximum tokens to generate

  • :top_p (Float)

    Top-p value for nucleus sampling (0.0-1.0)

  • :top_k (Integer)

    Top-k value for sampling

  • :stop_sequences (Array<String>)

    Stop sequences to end generation

  • :system_instruction (String)

    System instruction to guide model behavior



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/geminize/models/chat_request.rb', line 48

def initialize(content, model_name = nil, user_id = nil, params = {})
  @content = content
  @model_name = model_name || Geminize.configuration.default_model
  @user_id = user_id
  @timestamp = Time.now
  @temperature = params[:temperature]
  @max_tokens = params[:max_tokens]
  @top_p = params[:top_p]
  @top_k = params[:top_k]
  @stop_sequences = params[:stop_sequences]
  @system_instruction = params[:system_instruction]

  validate!
end

Instance Attribute Details

#contentString (readonly)

Returns The user's message content.

Returns:

  • (String)

    The user's message content



8
9
10
# File 'lib/geminize/models/chat_request.rb', line 8

def content
  @content
end

#max_tokensInteger

Returns Maximum tokens to generate.

Returns:

  • (Integer)

    Maximum tokens to generate



23
24
25
# File 'lib/geminize/models/chat_request.rb', line 23

def max_tokens
  @max_tokens
end

#model_nameString (readonly)

Returns The model name to use.

Returns:

  • (String)

    The model name to use



14
15
16
# File 'lib/geminize/models/chat_request.rb', line 14

def model_name
  @model_name
end

#stop_sequencesArray<String>

Returns Stop sequences to end generation.

Returns:

  • (Array<String>)

    Stop sequences to end generation



32
33
34
# File 'lib/geminize/models/chat_request.rb', line 32

def stop_sequences
  @stop_sequences
end

#system_instructionString?

Returns System instruction to guide model behavior.

Returns:

  • (String, nil)

    System instruction to guide model behavior



35
36
37
# File 'lib/geminize/models/chat_request.rb', line 35

def system_instruction
  @system_instruction
end

#temperatureFloat

Returns Temperature (controls randomness).

Returns:

  • (Float)

    Temperature (controls randomness)



20
21
22
# File 'lib/geminize/models/chat_request.rb', line 20

def temperature
  @temperature
end

#timestampTime (readonly)

Returns When the message was created.

Returns:

  • (Time)

    When the message was created



17
18
19
# File 'lib/geminize/models/chat_request.rb', line 17

def timestamp
  @timestamp
end

#top_kInteger

Returns Top-k value for sampling.

Returns:

  • (Integer)

    Top-k value for sampling



29
30
31
# File 'lib/geminize/models/chat_request.rb', line 29

def top_k
  @top_k
end

#top_pFloat

Returns Top-p value for nucleus sampling.

Returns:

  • (Float)

    Top-p value for nucleus sampling



26
27
28
# File 'lib/geminize/models/chat_request.rb', line 26

def top_p
  @top_p
end

#user_idString? (readonly)

Returns Optional user identifier.

Returns:

  • (String, nil)

    Optional user identifier



11
12
13
# File 'lib/geminize/models/chat_request.rb', line 11

def user_id
  @user_id
end

Instance Method Details

#to_h(history = []) ⇒ Hash

Alias for to_hash for consistency with Ruby conventions

Parameters:

  • history (Array<Hash>) (defaults to: [])

    Previous messages in the conversation

Returns:

  • (Hash)

    The request as a hash



116
117
118
# File 'lib/geminize/models/chat_request.rb', line 116

def to_h(history = [])
  to_hash(history)
end

#to_hash(history = []) ⇒ Hash

Convert the request to a hash suitable for the API

Parameters:

  • history (Array<Hash>) (defaults to: [])

    Previous messages in the conversation

Returns:

  • (Hash)

    The request as a hash



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/geminize/models/chat_request.rb', line 93

def to_hash(history = [])
  request = {
    contents: history + [to_message_hash],
    generationConfig: generation_config
  }.compact

  # Add system_instruction if provided
  if @system_instruction
    request[:systemInstruction] = {
      parts: [
        {
          text: @system_instruction
        }
      ]
    }
  end

  request
end

#to_message_hashHash

Convert the request to a hash for forming a single message

Returns:

  • (Hash)

    A hash representation of the user message



79
80
81
82
83
84
85
86
87
88
# File 'lib/geminize/models/chat_request.rb', line 79

def to_message_hash
  {
    role: "user",
    parts: [
      {
        text: @content
      }
    ]
  }
end

#validate!Boolean

Validate the request parameters

Returns:

  • (Boolean)

    true if all parameters are valid

Raises:



66
67
68
69
70
71
72
73
74
75
# File 'lib/geminize/models/chat_request.rb', line 66

def validate!
  validate_content!
  validate_temperature!
  validate_max_tokens!
  validate_top_p!
  validate_top_k!
  validate_stop_sequences!
  validate_system_instruction!
  true
end