Class: CompletionKit::Prompt
Constant Summary
ApplicationRecord::TenantScopedUniquenessValidator
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Taggable
#tag_names, #tag_names=
Class Method Details
.available_models(provider: nil) ⇒ Object
21
22
23
|
# File 'app/models/completion_kit/prompt.rb', line 21
def self.available_models(provider: nil)
ApiConfig.available_models(provider: provider)
end
|
.current_for(identifier) ⇒ Object
25
26
27
28
29
30
|
# File 'app/models/completion_kit/prompt.rb', line 25
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
79
80
81
82
83
84
85
86
|
# File 'app/models/completion_kit/prompt.rb', line 79
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,
tags: tags.as_json
}
end
|
#clone_as_new_version(overrides = {}) ⇒ Object
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'app/models/completion_kit/prompt.rb', line 56
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
44
45
46
|
# File 'app/models/completion_kit/prompt.rb', line 44
def display_name
"#{name} — #{version_label}"
end
|
#family_versions ⇒ Object
52
53
54
|
# File 'app/models/completion_kit/prompt.rb', line 52
def family_versions
self.class.where(family_key: family_key).order(version_number: :desc, created_at: :desc)
end
|
#llm_model_provider ⇒ Object
#publish! ⇒ Object
71
72
73
74
75
76
77
|
# File 'app/models/completion_kit/prompt.rb', line 71
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
32
33
34
|
# File 'app/models/completion_kit/prompt.rb', line 32
def slug
name.to_s.downcase.strip.gsub(/[^a-z0-9]+/, "-").gsub(/\A-|-\z/, "")
end
|
#variables ⇒ Object
36
37
38
|
# File 'app/models/completion_kit/prompt.rb', line 36
def variables
CsvProcessor.(self)
end
|
#version_label ⇒ Object
40
41
42
|
# File 'app/models/completion_kit/prompt.rb', line 40
def version_label
"v#{version_number}"
end
|