Class: LLM::OpenAI::Images

Inherits:
Object
  • Object
show all
Defined in:
lib/llm/providers/openai/images.rb

Overview

The LLM::OpenAI::Images class provides an images object for interacting with OpenAI’s images API. OpenAI supports multiple response formats: temporary URLs, or binary strings encoded in base64. The default is to return temporary URLs.

Examples:

#!/usr/bin/env ruby
require "llm"
require "open-uri"
require "fileutils"

llm = LLM.openai(ENV["KEY"])
res = llm.images.create prompt: "A dog on a rocket to the moon"
FileUtils.mv OpenURI.open_uri(res.urls[0]).path,
             "rocket.png"
#!/usr/bin/env ruby
require "llm"

llm = LLM.openai(ENV["KEY"])
res = llm.images.create prompt: "A dog on a rocket to the moon",
                        response_format: "b64_json"
IO.copy_stream res.images[0], "rocket.png"

Instance Method Summary collapse

Constructor Details

#initialize(provider) ⇒ LLM::OpenAI::Responses

Returns a new Images object

Parameters:



33
34
35
# File 'lib/llm/providers/openai/images.rb', line 33

def initialize(provider)
  @provider = provider
end

Instance Method Details

#create(prompt:, model: "dall-e-3", **params) ⇒ LLM::Response::Image

Create an image

Examples:

llm = LLM.openai(ENV["KEY"])
res = llm.images.create prompt: "A dog on a rocket to the moon"
p res.urls

Parameters:

  • prompt (String)

    The prompt

  • model (String) (defaults to: "dall-e-3")

    The model to use

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

Raises:

See Also:



49
50
51
52
53
54
# File 'lib/llm/providers/openai/images.rb', line 49

def create(prompt:, model: "dall-e-3", **params)
  req = Net::HTTP::Post.new("/v1/images/generations", headers)
  req.body = JSON.dump({prompt:, n: 1, model:}.merge!(params))
  res = request(http, req)
  LLM::Response::Image.new(res).extend(response_parser)
end

#create_variation(image:, model: "dall-e-2", **params) ⇒ LLM::Response::Image

Create image variations

Examples:

llm = LLM.openai(ENV["KEY"])
res = llm.images.create_variation(image: "/images/hat.png", n: 5)
p res.urls

Parameters:

  • image (File)

    The image to create variations from

  • model (String) (defaults to: "dall-e-2")

    The model to use

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

Raises:

See Also:



68
69
70
71
72
73
74
75
76
# File 'lib/llm/providers/openai/images.rb', line 68

def create_variation(image:, model: "dall-e-2", **params)
  image = LLM.File(image)
  multi = LLM::Multipart.new(params.merge!(image:, model:))
  req = Net::HTTP::Post.new("/v1/images/variations", headers)
  req["content-type"] = multi.content_type
  set_body_stream(req, multi.body)
  res = request(http, req)
  LLM::Response::Image.new(res).extend(response_parser)
end

#edit(image:, prompt:, model: "dall-e-2", **params) ⇒ LLM::Response::Image

Edit an image

Examples:

llm = LLM.openai(ENV["KEY"])
res = llm.images.edit(image: "/images/hat.png", prompt: "A cat wearing this hat")
p res.urls

Parameters:

  • image (File)

    The image to edit

  • prompt (String)

    The prompt

  • model (String) (defaults to: "dall-e-2")

    The model to use

  • params (Hash)

    Other parameters (see OpenAI docs)

Returns:

Raises:

See Also:



91
92
93
94
95
96
97
98
99
# File 'lib/llm/providers/openai/images.rb', line 91

def edit(image:, prompt:, model: "dall-e-2", **params)
  image = LLM.File(image)
  multi = LLM::Multipart.new(params.merge!(image:, prompt:, model:))
  req = Net::HTTP::Post.new("/v1/images/edits", headers)
  req["content-type"] = multi.content_type
  set_body_stream(req, multi.body)
  res = request(http, req)
  LLM::Response::Image.new(res).extend(response_parser)
end