Class: RubyLlmAgents::EmbedderGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/ruby_llm_agents/embedder_generator.rb

Overview

Embedder generator for creating new embedders

Usage:

rails generate ruby_llm_agents:embedder Document
rails generate ruby_llm_agents:embedder Document --model text-embedding-3-large
rails generate ruby_llm_agents:embedder Document --dimensions 512

This will create:

- app/agents/embedders/document_embedder.rb

Instance Method Summary collapse

Instance Method Details

#create_embedder_fileObject



47
48
49
50
51
# File 'lib/generators/ruby_llm_agents/embedder_generator.rb', line 47

def create_embedder_file
  # Support nested paths: "search/document" -> "app/agents/embedders/search/document_embedder.rb"
  embedder_path = name.underscore
  template "embedder.rb.tt", "app/agents/embedders/#{embedder_path}_embedder.rb"
end

#ensure_base_class_and_skill_fileObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/generators/ruby_llm_agents/embedder_generator.rb', line 28

def ensure_base_class_and_skill_file
  embedders_dir = "app/agents/embedders"

  # Create directory if needed
  empty_directory embedders_dir

  # Create base class if it doesn't exist
  base_class_path = "#{embedders_dir}/application_embedder.rb"
  unless File.exist?(File.join(destination_root, base_class_path))
    template "application_embedder.rb.tt", base_class_path
  end

  # Create skill file if it doesn't exist
  skill_file_path = "#{embedders_dir}/EMBEDDERS.md"
  unless File.exist?(File.join(destination_root, skill_file_path))
    template "skills/EMBEDDERS.md.tt", skill_file_path
  end
end

#show_usageObject



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/generators/ruby_llm_agents/embedder_generator.rb', line 53

def show_usage
  # Build full class name from path
  embedder_class_name = name.split("/").map(&:camelize).join("::")
  full_class_name = "Embedders::#{embedder_class_name}Embedder"
  say ""
  say "Embedder #{full_class_name} created!", :green
  say ""
  say "Usage:"
  say "  # Single text"
  say "  #{full_class_name}.call(text: \"Hello world\")"
  say ""
  say "  # Multiple texts (batch)"
  say "  #{full_class_name}.call(texts: [\"Hello\", \"World\"])"
  say ""
  say "  # With progress tracking"
  say "  #{full_class_name}.call(texts: large_array) do |batch, idx|"
  say "    puts \"Processed batch \#{idx}\""
  say "  end"
  say ""
end