Class: CompletionKit::Prompt
Constant Summary
ApplicationRecord::TenantScopedUniquenessValidator
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.available_models(provider: nil) ⇒ Object
18
19
20
|
# File 'app/models/completion_kit/prompt.rb', line 18
def self.available_models(provider: nil)
ApiConfig.available_models(provider: provider)
end
|
.current_for(identifier) ⇒ Object
22
23
24
25
26
27
|
# File 'app/models/completion_kit/prompt.rb', line 22
def self.current_for(identifier)
current_versions.find_by(family_key: identifier) ||
current_versions.find_by(name: identifier) ||
current_versions.find { |p| p.slug == identifier.to_s } ||
raise(ActiveRecord::RecordNotFound)
end
|
Instance Method Details
#as_json(options = {}) ⇒ Object
72
73
74
75
76
77
78
|
# File 'app/models/completion_kit/prompt.rb', line 72
def as_json(options = {})
{
id: id, name: name, description: description, template: template,
llm_model: llm_model, family_key: family_key, version_number: version_number,
current: current, created_at: created_at, updated_at: updated_at
}
end
|
#clone_as_new_version(overrides = {}) ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'app/models/completion_kit/prompt.rb', line 49
def clone_as_new_version(overrides = {})
self.class.create!(
{
name: name,
description: description,
template: template,
llm_model: llm_model,
family_key: family_key,
version_number: next_version_number,
current: false,
published_at: nil
}.merge(overrides.compact)
)
end
|
#display_name ⇒ Object
41
42
43
|
# File 'app/models/completion_kit/prompt.rb', line 41
def display_name
"#{name} — #{version_label}"
end
|
#family_versions ⇒ Object
45
46
47
|
# File 'app/models/completion_kit/prompt.rb', line 45
def family_versions
self.class.where(family_key: family_key).order(version_number: :desc, created_at: :desc)
end
|
#publish! ⇒ Object
64
65
66
67
68
69
70
|
# File 'app/models/completion_kit/prompt.rb', line 64
def publish!
transaction do
self.class.where(family_key: family_key).where.not(id: id).update_all(current: false)
reload
update!(current: true, published_at: Time.current)
end
end
|
#slug ⇒ Object
29
30
31
|
# File 'app/models/completion_kit/prompt.rb', line 29
def slug
name.to_s.downcase.strip.gsub(/[^a-z0-9]+/, "-").gsub(/\A-|-\z/, "")
end
|
#variables ⇒ Object
33
34
35
|
# File 'app/models/completion_kit/prompt.rb', line 33
def variables
CsvProcessor.(self)
end
|
#version_label ⇒ Object
37
38
39
|
# File 'app/models/completion_kit/prompt.rb', line 37
def version_label
"v#{version_number}"
end
|