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
20
21
22
|
# File 'app/models/completion_kit/prompt.rb', line 20
def self.available_models(provider: nil)
ApiConfig.available_models(provider: provider)
end
|
.current_for(identifier) ⇒ Object
24
25
26
27
28
29
|
# File 'app/models/completion_kit/prompt.rb', line 24
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
78
79
80
81
82
83
84
85
|
# File 'app/models/completion_kit/prompt.rb', line 78
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'app/models/completion_kit/prompt.rb', line 55
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
43
44
45
|
# File 'app/models/completion_kit/prompt.rb', line 43
def display_name
"#{name} — #{version_label}"
end
|
#family_versions ⇒ Object
51
52
53
|
# File 'app/models/completion_kit/prompt.rb', line 51
def family_versions
self.class.where(family_key: family_key).order(version_number: :desc, created_at: :desc)
end
|
#llm_model_provider ⇒ Object
#publish! ⇒ Object
70
71
72
73
74
75
76
|
# File 'app/models/completion_kit/prompt.rb', line 70
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
31
32
33
|
# File 'app/models/completion_kit/prompt.rb', line 31
def slug
name.to_s.downcase.strip.gsub(/[^a-z0-9]+/, "-").gsub(/\A-|-\z/, "")
end
|
#variables ⇒ Object
35
36
37
|
# File 'app/models/completion_kit/prompt.rb', line 35
def variables
CsvProcessor.(self)
end
|
#version_label ⇒ Object
39
40
41
|
# File 'app/models/completion_kit/prompt.rb', line 39
def version_label
"v#{version_number}"
end
|