Class: LlmConductor::PromptManager

Inherits:
Object
  • Object
show all
Defined in:
lib/llm_conductor/prompt_manager.rb

Overview

Manages registration and creation of prompt classes

Defined Under Namespace

Classes: InvalidPromptClassError, PromptNotFoundError

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.registryObject (readonly)

Returns the value of attribute registry.



12
13
14
# File 'lib/llm_conductor/prompt_manager.rb', line 12

def registry
  @registry
end

Class Method Details

.clear!Object

Clear all registrations (useful for testing)



42
43
44
# File 'lib/llm_conductor/prompt_manager.rb', line 42

def clear!
  @registry.clear
end

.create(type, data = {}) ⇒ Object

Create a prompt instance



47
48
49
50
# File 'lib/llm_conductor/prompt_manager.rb', line 47

def create(type, data = {})
  prompt_class = get(type)
  prompt_class.new(data)
end

.get(type) ⇒ Object

Get a registered prompt class



27
28
29
# File 'lib/llm_conductor/prompt_manager.rb', line 27

def get(type)
  @registry[type.to_sym] || raise(PromptNotFoundError, "Prompt type :#{type} not found")
end

.register(type, prompt_class) ⇒ Object

Register a prompt class with a given type



15
16
17
18
19
# File 'lib/llm_conductor/prompt_manager.rb', line 15

def register(type, prompt_class)
  validate_prompt_class!(prompt_class)

  @registry[type.to_sym] = prompt_class
end

.registered?(type) ⇒ Boolean

Check if a prompt type is registered

Returns:

  • (Boolean)


32
33
34
# File 'lib/llm_conductor/prompt_manager.rb', line 32

def registered?(type)
  @registry.key?(type.to_sym)
end

.render(type, data = {}) ⇒ Object

Create and render a prompt in one step



53
54
55
# File 'lib/llm_conductor/prompt_manager.rb', line 53

def render(type, data = {})
  create(type, data).render
end

.typesObject

List all registered prompt types



37
38
39
# File 'lib/llm_conductor/prompt_manager.rb', line 37

def types
  @registry.keys
end

.unregister(type) ⇒ Object

Unregister a prompt type (useful for testing)



22
23
24
# File 'lib/llm_conductor/prompt_manager.rb', line 22

def unregister(type)
  @registry.delete(type.to_sym)
end