You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: embedding.rb
    path of file: ./repos/llama_cpp.rb/examples
    
    the code of the file until where you have to start completion: #!/usr/bin/env ruby
# frozen_string_literal: true

# embedding.rb extracts embedding from prompt.
# It is created with reference to embedding.cpp in llama.cpp examples:
# - https://github.com/ggerganov/llama.cpp/blob/master/examples/embedding/embedding.cpp

require 'llama_cpp'
require 'thor'
require 'etc'

class Embedding < Thor # rubocop:disable Style/Documentation
  default_command :main
  desc 'main', 'Extract embedding fr
    
  def main # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
    mdl_params = LLaMACpp::ModelParams.new
    mdl_params.n_gpu_layers = options[:n_gpu_layers]
    model = LLaMACpp::Model.new(model_path: options[:model], params: mdl_params)
    ctx_params = LLaMACpp::ContextParams.new
    ctx_params.embedding = true
    ctx_params.seed = options[:seed] if options[:seed] != -1
    ctx_params.n_threads = options[:n_threads]
    ctx_params.n_threads_batch = options[:n_threads]
    context = LLaMACpp::Context.new(model: model, params: ctx_params)

    embd_input = context.model.tokenize(text: options[:prompt], add_bos: true)

    return unless embd_input.size.positive?

    context.decode(LLaMACpp::Batch.get_one(tokens: embd_input, n_tokens: embd_input.size, pos_zero: 0, seq_id: 0))

    context.embeddings.each { |val| print("#{val} ") }
    print("\n")
  end