Nothing Special   »   [go: up one dir, main page]

Skip to content

This is a Ruby Gem that allows the easy integration of Leonardo.ai's API into a Ruby project.

License

Notifications You must be signed in to change notification settings

RWKotulski/LeoAndRuby

Repository files navigation

LeoAndRuby

LeoAndRuby is a Ruby gem for generating images using the Leonardo.ai API. With this gem, you can easily integrate Leonardo.ai's powerful image generation capabilities into your Ruby and Rails applications.

Gem Version


Features

  • Generate images using Leonardo.ai's models.
  • Retrieve the status and result of a generated image.
  • List available models on the Leonardo.ai platform.
  • Webhook support to handle asynchronous image generation results.
  • Rails generator for setting up webhook integration effortlessly.
  • Simple and intuitive Ruby interface for interacting with the Leonardo.ai API.

Installation

Add this line to your application's Gemfile:

gem 'leoandruby'

Then, run:

bundle install

Or install it yourself with:

gem install leoandruby

Setup

To use LeoAndRuby, you need an API key from Leonardo.ai. You can obtain it by signing up for an account and navigating to the API key section in your dashboard.

For Rails users, you can generate a webhook controller and route using the built-in generator.


Usage

1. Initialize the Client

Start by creating a client instance with your Leonardo.ai API key:

require 'leoandruby'

api_key = 'YOUR_API_KEY'
client = LeoAndRuby::Client.new(api_key)

2. Generate an Image

You can generate an image by providing the prompt, model ID, width, height, and optionally the number of images:

generation_response = client.generate_image(
  prompt: 'An oil painting of a cat',
  model_id: '6bef9f1b-29cb-40c7-b9df-32b51c1f67d3',
  width: 512,
  height: 512,
  num_images: 1 # Optional, defaults to 1 if not specified
)

generation_id = generation_response['sdGenerationJob']['generationId']

3. List Available Models

You can fetch a list of all available platform models using the list_models method:

models_response = client.list_models
puts models_response

4. Retrieve the Generated Image

Wait a few seconds for the image to be generated, then retrieve it using the generation ID:

sleep(5)

image_response = client.get_generation(generation_id)
puts image_response

Webhook Integration (Rails)

LeoAndRuby supports asynchronous image generation through Leonardo.ai’s webhook feature. This allows your application to automatically process results when the image generation is complete.

Generate a Webhook Controller

Run the following command to generate a controller, route, and initializer for webhook integration:

rails generate leoandruby:webhook

This will:

  • Create app/controllers/leonardo_controller.rb.
  • Add a route to config/routes.rb:
    post '/leonardo_webhook', to: 'leonardo#webhook'
  • Add a configuration file to config/initializers/leoandruby.rb for managing the webhook token:
    LeoAndRuby.config = {
      webhook_token: ENV.fetch('LEONARDO_WEBHOOK_TOKEN', 'your_default_token_here')
    }

Webhook Security

The webhook controller verifies requests using an API token provided in the Authorization header. Configure your webhook token in an environment variable or directly in the initializer.

Webhook requests without a valid token will be rejected with a 401 Unauthorized status.


Example Script

Here's a full example script for generating an image and retrieving it:

require 'leoandruby'

api_key = 'YOUR_API_KEY'
client = LeoAndRuby::Client.new(api_key)

# Generate an image
generation_response = client.generate_image(
  prompt: 'A futuristic cityscape at sunset',
  model_id: '6bef9f1b-29cb-40c7-b9df-32b51c1f67d3',
  width: 1024,
  height: 768,
  num_images: 1 # Optional, defaults to 1 if not specified
)

generation_id = generation_response['sdGenerationJob']['generationId']

# Wait for a few seconds
sleep(5)

# Retrieve the generated image
image_response = client.get_generation(generation_id)
puts image_response

Configuration

API Key

You can store your API key in an environment variable for security:

export LEOANDRUBY_API_KEY=your_api_key

Then, retrieve it in your code:

api_key = ENV['LEOANDRUBY_API_KEY']
client = LeoAndRuby::Client.new(api_key)

Webhook Token

To secure webhook requests, configure the LEONARDO_WEBHOOK_TOKEN environment variable:

export LEONARDO_WEBHOOK_TOKEN=your_webhook_token

Supported Ruby Versions

LeoAndRuby is tested with the latest Ruby versions. Ensure your environment is up to date to avoid compatibility issues.


Contributing

Bug reports and pull requests are welcome on GitHub. This project is intended to be a safe, welcoming space for collaboration.


License

The gem is available as open source under the terms of the MIT License.


References


Acknowledgments

Special thanks to Leonardo.ai for providing such an amazing image generation API.


About

This is a Ruby Gem that allows the easy integration of Leonardo.ai's API into a Ruby project.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published