Class: NitroIntelligence::ImageGeneration

Inherits:
Object
  • Object
show all
Defined in:
lib/nitro_intelligence/media/image_generation.rb

Defined Under Namespace

Classes: Config

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message: "", target_image: nil, reference_images: []) {|@config| ... } ⇒ ImageGeneration

Returns a new instance of ImageGeneration.

Yields:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/nitro_intelligence/media/image_generation.rb', line 28

def initialize(
  message: "",
  target_image: nil,
  reference_images: []
)
  @config = Config.new
  @generated_image = nil
  @model = NitroIntelligence.model_catalog.lookup_by_name(@config.model)
  @reference_images = reference_images.map { |img| Image.new(img) }
  @trace_id = nil

  # Overrides
  yield(@config) if block_given?
  validate_config!

  if target_image
    @target_image = Image.new(target_image)
    configure_aspect_ratio
  end

  build_messages(message, @target_image, @reference_images)
end

Instance Attribute Details

#byte_stringObject (readonly)

Returns the value of attribute byte_string.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def byte_string
  @byte_string
end

#configObject (readonly)

Returns the value of attribute config.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def config
  @config
end

#file_extensionObject (readonly)

Returns the value of attribute file_extension.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def file_extension
  @file_extension
end

#file_typeObject (readonly)

Returns the value of attribute file_type.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def file_type
  @file_type
end

#generated_imageObject (readonly)

Returns the value of attribute generated_image.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def generated_image
  @generated_image
end

#messagesObject (readonly)

Returns the value of attribute messages.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def messages
  @messages
end

#reference_imagesObject (readonly)

Returns the value of attribute reference_images.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def reference_images
  @reference_images
end

#target_imageObject (readonly)

Returns the value of attribute target_image.



24
25
26
# File 'lib/nitro_intelligence/media/image_generation.rb', line 24

def target_image
  @target_image
end

#trace_idObject

Returns the value of attribute trace_id.



26
27
28
# File 'lib/nitro_intelligence/media/image_generation.rb', line 26

def trace_id
  @trace_id
end

Instance Method Details

#filesObject



51
52
53
# File 'lib/nitro_intelligence/media/image_generation.rb', line 51

def files
  [target_image, reference_images, generated_image].flatten.compact
end

#parse_file(chat_completion) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/nitro_intelligence/media/image_generation.rb', line 55

def parse_file(chat_completion)
  base64_string = chat_completion.choices.first&.message.to_h.fetch(:images, {})&.first&.dig(:image_url, :url)

  return unless base64_string

  @generated_image = Image.from_base64(base64_string)
  @generated_image.direction = "output"
  @generated_image
rescue ArgumentError
  NitroIntelligence.logger.info("Skipping image parse due to invalid base64; likely already parsed.")
  nil
end