Module: PromptCanary::Promptable::ClassMethods

Defined in:
lib/prompt_canary/promptable.rb

Instance Method Summary collapse

Instance Method Details

#call(context: {}, adapter: nil, recorder: nil, **args) ⇒ Object



39
40
41
42
# File 'lib/prompt_canary/promptable.rb', line 39

def call(context: {}, adapter: nil, recorder: nil, **args)
  PromptExecutor.new(prompt_class: self, adapter: adapter, recorder: recorder)
                .call(context: context, **args)
end

#primary_versionObject



25
26
27
28
29
30
31
32
33
# File 'lib/prompt_canary/promptable.rb', line 25

def primary_version
  raise NoPrimaryVersionError, "#{self} has no versions registered" if versions.empty?

  if @primary_override
    versions.find { |v| v.name == @primary_override } || versions.first
  else
    versions.first
  end
end

#promote_to_primary!(version_name) ⇒ Object



35
36
37
# File 'lib/prompt_canary/promptable.rb', line 35

def promote_to_primary!(version_name)
  @primary_override = version_name
end

#reset_registry!Object



44
45
46
47
# File 'lib/prompt_canary/promptable.rb', line 44

def reset_registry!
  @versions = []
  @primary_override = nil
end

#version(name, &block) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/prompt_canary/promptable.rb', line 11

def version(name, &block)
  if versions.any? { |v| v.name == name }
    raise DuplicateVersionError, "Version #{name.inspect} is already registered on #{self}"
  end

  builder = VersionBuilder.new(name)
  builder.instance_eval(&block)
  versions << builder.build
end

#versionsObject



21
22
23
# File 'lib/prompt_canary/promptable.rb', line 21

def versions
  @versions ||= []
end