Class: LLM::XAI::Images

Inherits:
OpenAI::Images
  • Object
show all
Defined in:
lib/llm/providers/xai/images.rb

Overview

The LLM::XAI::Images class provides an interface for xAI's images API. xAI returns base64-encoded image data.

Examples:

#!/usr/bin/env ruby
require "llm"

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

Instance Method Summary collapse

Instance Method Details

#create(prompt:, model: "grok-imagine-image-quality", **params) ⇒ LLM::Response

Create an image

Examples:

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

Parameters:

  • prompt (String)

    The prompt

  • model (String) (defaults to: "grok-imagine-image-quality")

    The model to use

  • params (Hash)

    Other parameters (see xAI docs)

Returns:

See Also:



34
35
36
37
38
39
40
41
# File 'lib/llm/providers/xai/images.rb', line 34

def create(prompt:, model: "grok-imagine-image-quality", **params)
  req = LLM::Transport::Request.post(path("/images/generations"), headers)
  req.body = LLM.json.dump({prompt:, n: 1, model:, response_format: "b64_json"}.merge!(params))
  res, span, tracer = execute(request: req, operation: "request")
  res = LLM::OpenAI::ResponseAdapter.adapt(res, type: :image)
  tracer.on_request_finish(operation: "request", model:, res:, span:)
  res
end

#edit(image:, prompt:, model: "grok-imagine-image-quality", **params) ⇒ LLM::Response

Edit an image

Examples:

llm = LLM.xai(key: ENV["KEY"])
res = llm.images.edit(image: "/images/book.png", prompt: "The book is floating in the clouds")
IO.copy_stream res.images[0], "floating-book.png"

Parameters:

  • image (String, LLM::File, File)

    The image to edit

  • prompt (String)

    The prompt

  • model (String) (defaults to: "grok-imagine-image-quality")

    The model to use

  • params (Hash)

    Other parameters (see xAI docs)

Returns:

See Also:



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/llm/providers/xai/images.rb', line 56

def edit(image:, prompt:, model: "grok-imagine-image-quality", **params)
  req = LLM::Transport::Request.post(path("/images/edits"), headers)
  req.body = LLM.json.dump({
    prompt:,
    model:,
    image: image_url(image),
    response_format: "b64_json"
  }.merge!(params))
  res, span, tracer = execute(request: req, operation: "request")
  res = LLM::OpenAI::ResponseAdapter.adapt(res, type: :image)
  tracer.on_request_finish(operation: "request", model:, res:, span:)
  res
end