Class: OxAiWorkers::Models::OpenaiGptImage

Inherits:
ImagesBase
  • Object
show all
Defined in:
lib/oxaiworkers/models/openai_gpt_image.rb

Instance Attribute Summary

Attributes inherited from ImagesBase

#client, #options, #qualities, #result, #sizes

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, options: {}) ⇒ OpenaiGptImage

Returns a new instance of OpenaiGptImage.



4
5
6
7
8
9
10
11
# File 'lib/oxaiworkers/models/openai_gpt_image.rb', line 4

def initialize(api_key: nil, options: {})
  @sizes = %w[auto 1024x1024 1536x1024 1024x1536]
  @qualities = %w[auto low medium high]
  api_key ||= OxAiWorkers.configuration.access_token_openai

  @client = OpenAI::Client.new(access_token: api_key)
  super(options:)
end

Instance Method Details

#generate(prompt:, size: nil, quality: nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/oxaiworkers/models/openai_gpt_image.rb', line 13

def generate(prompt:, size: nil, quality: nil)
  puts "OpenaiGptImage: #{prompt}"

  size ||= @sizes.first
  quality ||= @qualities.first

  options = {
    prompt:,
    model: 'gpt-image-1',
    size:,
    quality:
  }
  options.merge!(@options)

  response = @client.images.generate(
    parameters: options
  )

  b64_json = response.dig('data', 0, 'b64_json')

  Base64.decode64(b64_json)
end