Class: ActiveModel::Validations::AI::MockGPT

Inherits:
Object
  • Object
show all
Defined in:
lib/active_model/validations/ai.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_timeout:, **response) ⇒ MockGPT

Returns a new instance of MockGPT.



39
40
41
# File 'lib/active_model/validations/ai.rb', line 39

def initialize(request_timeout:, **response)
  @request_timeout, @response = request_timeout, response
end

Instance Attribute Details

#request_timeoutObject (readonly)

Returns the value of attribute request_timeout.



42
43
44
# File 'lib/active_model/validations/ai.rb', line 42

def request_timeout
  @request_timeout
end

Class Method Details

.set(**response) ⇒ Object



32
33
34
35
36
37
# File 'lib/active_model/validations/ai.rb', line 32

def self.set(**response)
  old_response, @response = @response, response
  yield
ensure
  @response = old_response
end

Instance Method Details

#chat(parameters:) ⇒ Object

Raises:

  • (Faraday::Error)


44
45
46
47
48
49
50
# File 'lib/active_model/validations/ai.rb', line 44

def chat(parameters:)
  raise Faraday::Error if request_timeout&.zero?
  # parameters => { model:, messages: [{content:}] } # TODO: Replace with this pattern matching on Ruby 3.0+.
  parameters.dig(:model) or raise ArgumentError
  parameters.dig(:messages, 0, :content) or raise ArgumentError
  { "choices" => [{ "message" => { "content" => response.to_json } }] }
end