Class: LLM::OpenAI::Images
- Inherits:
-
Object
- Object
- LLM::OpenAI::Images
- Defined in:
- lib/llm/providers/openai/images.rb
Overview
The LLM::OpenAI::Images class provides an interface for OpenAI's images API. OpenAI supports multiple response formats: temporary URLs, or binary strings encoded in base64. The default is to return base64-encoded image data.
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(provider)
⇒ LLM::OpenAI::Responses constructor
Returns a new Images object.
-
#create(prompt:,
model: "dall-e-3", response_format: "b64_json", **params) ⇒
LLM::Response
Create an image.
-
#create_variation(image:,
model: "dall-e-2", response_format: "b64_json", **params) ⇒
LLM::Response
Create image variations.
-
#edit(image:,
prompt:, model: "dall-e-2", response_format: "b64_json", **params) ⇒
LLM::Response
Edit an image.
Constructor Details
#initialize(provider) ⇒ LLM::OpenAI::Responses
Returns a new Images object
35 36 37 |
# File 'lib/llm/providers/openai/images.rb', line 35 def initialize(provider) @provider = provider end |
Instance Method Details
#create(prompt:, model: "dall-e-3", response_format: "b64_json", **params) ⇒ LLM::Response
Create an image
52 53 54 55 56 57 58 59 |
# File 'lib/llm/providers/openai/images.rb', line 52 def create(prompt:, model: "dall-e-3", response_format: "b64_json", **params) req = Net::HTTP::Post.new("/v1/images/generations", headers) req.body = LLM.json.dump({prompt:, n: 1, model:, response_format:}.merge!(params)) res, span, tracer = execute(request: req, operation: "request") res = ResponseAdapter.adapt(res, type: :image) tracer.on_request_finish(operation: "request", model:, res:, span:) res end |
#create_variation(image:, model: "dall-e-2", response_format: "b64_json", **params) ⇒ LLM::Response
Create image variations
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/llm/providers/openai/images.rb', line 76 def create_variation(image:, model: "dall-e-2", response_format: "b64_json", **params) image = LLM.File(image) multi = LLM::Multipart.new(params.merge!(image:, model:, response_format:)) req = Net::HTTP::Post.new("/v1/images/variations", headers) req["content-type"] = multi.content_type set_body_stream(req, multi.body) res, span, tracer = execute(request: req, operation: "request") res = ResponseAdapter.adapt(res, type: :image) tracer.on_request_finish(operation: "request", model:, res:, span:) res end |
#edit(image:, prompt:, model: "dall-e-2", response_format: "b64_json", **params) ⇒ LLM::Response
Edit an image
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/llm/providers/openai/images.rb', line 102 def edit(image:, prompt:, model: "dall-e-2", response_format: "b64_json", **params) image = LLM.File(image) multi = LLM::Multipart.new(params.merge!(image:, prompt:, model:, response_format:)) req = Net::HTTP::Post.new("/v1/images/edits", headers) req["content-type"] = multi.content_type set_body_stream(req, multi.body) res, span, tracer = execute(request: req, operation: "request") res = ResponseAdapter.adapt(res, type: :image) tracer.on_request_finish(operation: "request", model:, res:, span:) res end |