Class: NitroIntelligence::Client::Handlers::ChatHandler

Inherits:
BaseHandler
  • Object
show all
Defined in:
lib/nitro_intelligence/client/handlers/chat_handler.rb

Constant Summary collapse

ALLOWED_EXTRA_PARAMETERS =
OpenAI::Models::Chat::CompletionCreateParams.fields.keys.uniq.freeze

Constants inherited from BaseHandler

BaseHandler::MODALITY_HEADER, BaseHandler::REQUESTED_MODEL_HEADER

Instance Method Summary collapse

Methods inherited from BaseHandler

#initialize

Constructor Details

This class inherits a constructor from NitroIntelligence::Client::Handlers::BaseHandler

Instance Method Details

#create(message: "", parameters: {}) ⇒ Object



10
11
12
13
# File 'lib/nitro_intelligence/client/handlers/chat_handler.rb', line 10

def create(message: "", parameters: {})
  validate_and_resolve!(parameters, message)
  perform_request(parameters:)
end

#perform_request(parameters: {}) ⇒ Object



15
16
17
18
# File 'lib/nitro_intelligence/client/handlers/chat_handler.rb', line 15

def perform_request(parameters: {})
  add_request_headers(parameters, REQUESTED_MODEL_HEADER => parameters[:model])
  @client.chat.completions.create(**parameters.slice(*ALLOWED_EXTRA_PARAMETERS))
end

#validate_and_resolve!(parameters, message) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/nitro_intelligence/client/handlers/chat_handler.rb', line 20

def validate_and_resolve!(parameters, message)
  if parameters[:messages].blank? && message.present?
    parameters[:messages] ||= [{ role: "user",
                                 content: message }]
  end

  default_parameters = {
    metadata: {},
    messages: [],
    model: NitroIntelligence.model_catalog.default_text_model&.name,
  }

  parameters.replace(default_parameters.merge(parameters))
  Client.validate_model(parameters[:model])
end