Sha256: de142af9d9bf69d16e4bf28df3194caf75b51ce77c273e30b865435303c01d65

Contents?: true

Size: 1.71 KB

Versions: 1

Compression:

Stored size: 1.71 KB

Contents

module OpenAI
  class Images
    include HTTParty
    base_uri "https://api.openai.com"

    def initialize(access_token: nil, organization_id: nil)
      @access_token = access_token || ENV.fetch("OPENAI_ACCESS_TOKEN")
      @organization_id = organization_id || ENV.fetch("OPENAI_ORGANIZATION_ID", nil)
    end

    def generate(version: default_version, parameters: {})
      self.class.post(
        "/#{version}/images/generations",
        headers: {
          "Content-Type" => "application/json",
          "Authorization" => "Bearer #{@access_token}",
          "OpenAI-Organization" => @organization_id
        },
        body: parameters.to_json
      )
    end

    def edit(version: default_version, parameters: {})
      parameters = open_files(parameters)

      self.class.post(
        "/#{version}/images/edits",
        headers: {
          "Content-Type" => "application/json",
          "Authorization" => "Bearer #{@access_token}",
          "OpenAI-Organization" => @organization_id
        },
        body: parameters
      )
    end

    def variations(version: default_version, parameters: {})
      parameters = open_files(parameters)

      self.class.post(
        "/#{version}/images/variations",
        headers: {
          "Content-Type" => "application/json",
          "Authorization" => "Bearer #{@access_token}",
          "OpenAI-Organization" => @organization_id
        },
        body: parameters
      )
    end

    private

    def default_version
      "v1".freeze
    end

    def open_files(parameters)
      parameters = parameters.merge(image: File.open(parameters[:image]))
      parameters = parameters.merge(mask: File.open(parameters[:mask])) if parameters[:mask]
      parameters
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruby-openai-2.3.0 lib/ruby/openai/images.rb