Class: CompletionKit::Prompt
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- CompletionKit::Prompt
- Defined in:
- app/models/completion_kit/prompt.rb
Class Method Summary collapse
Instance Method Summary collapse
- #as_json(options = {}) ⇒ Object
- #clone_as_new_version(overrides = {}) ⇒ Object
- #display_name ⇒ Object
- #family_versions ⇒ Object
- #publish! ⇒ Object
- #slug ⇒ Object
- #variables ⇒ Object
- #version_label ⇒ Object
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( = {}) { 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.extract_variables(self) end |
#version_label ⇒ Object
37 38 39 |
# File 'app/models/completion_kit/prompt.rb', line 37 def version_label "v#{version_number}" end |