Class: NitroIntelligence::Client::Handlers::ImageHandler
- Inherits:
-
Object
- Object
- NitroIntelligence::Client::Handlers::ImageHandler
- Defined in:
- lib/nitro_intelligence/client/handlers/image_handler.rb
Constant Summary collapse
- ALLOWED_EXTRA_PARAMETERS =
OpenAI::Models::Chat::CompletionCreateParams.fields.keys.uniq.freeze
Instance Method Summary collapse
- #create(message: "", target_image: nil, reference_images: [], parameters: {}) ⇒ Object
-
#initialize(client:) ⇒ ImageHandler
constructor
A new instance of ImageHandler.
- #perform_request(parameters: {}) ⇒ Object
- #validate_and_resolve!(parameters, image_generation) ⇒ Object
Constructor Details
#initialize(client:) ⇒ ImageHandler
Returns a new instance of ImageHandler.
10 11 12 |
# File 'lib/nitro_intelligence/client/handlers/image_handler.rb', line 10 def initialize(client:) @client = client end |
Instance Method Details
#create(message: "", target_image: nil, reference_images: [], parameters: {}) ⇒ Object
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/nitro_intelligence/client/handlers/image_handler.rb', line 14 def create(message: "", target_image: nil, reference_images: [], parameters: {}) image_generation = build_image_generation(message:, target_image:, reference_images:, parameters:) validate_and_resolve!(parameters, image_generation) chat_completion = perform_request(parameters:) image_generation.parse_file(chat_completion) image_generation end |
#perform_request(parameters: {}) ⇒ Object
25 26 27 |
# File 'lib/nitro_intelligence/client/handlers/image_handler.rb', line 25 def perform_request(parameters: {}) @client.chat.completions.create(**parameters.slice(*ALLOWED_EXTRA_PARAMETERS)) end |
#validate_and_resolve!(parameters, image_generation) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/nitro_intelligence/client/handlers/image_handler.rb', line 29 def validate_and_resolve!(parameters, image_generation) default_parameters = { image_generation:, metadata: {}, messages: image_generation., model: image_generation.config.model, extra_headers: { "Prefer" => "wait" }, request_options: { extra_body: { image_config: { aspect_ratio: image_generation.config.aspect_ratio, image_size: image_generation.config.resolution, }, }, }, } parameters.replace(default_parameters.merge(parameters)) Client.validate_model(parameters[:model]) end |