Class: Layered::Assistant::Conversation
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- ApplicationRecord
- Layered::Assistant::Conversation
- Defined in:
- app/models/layered/assistant/conversation.rb
Class Method Summary collapse
Instance Method Summary collapse
- #responding? ⇒ Boolean
- #stop_response! ⇒ Object
- #to_param ⇒ Object
- #update_name_from_content!(content) ⇒ Object
-
#update_token_totals! ⇒ Object
Name.
Class Method Details
.default_name ⇒ Object
34 35 36 |
# File 'app/models/layered/assistant/conversation.rb', line 34 def self.default_name "New conversation" end |
Instance Method Details
#responding? ⇒ Boolean
38 39 40 |
# File 'app/models/layered/assistant/conversation.rb', line 38 def responding? .where(role: :assistant, stopped: false, output_tokens: nil).exists? end |
#stop_response! ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/models/layered/assistant/conversation.rb', line 42 def stop_response! with_lock do = .where(role: :assistant, stopped: false).order(created_at: :desc).first return false unless attrs = { stopped: true, output_tokens: TokenEstimator.estimate(.content) || 0, tokens_estimated: true } if .input_tokens.nil? prior_content = .where("created_at < ?", .created_at).pluck(:content).compact.join(" ") attrs[:input_tokens] = TokenEstimator.estimate(prior_content) || 0 end .update!(attrs) update_token_totals! .reload .broadcast_updated .broadcast_response_complete end true end |
#to_param ⇒ Object
23 24 25 |
# File 'app/models/layered/assistant/conversation.rb', line 23 def to_param uid end |
#update_name_from_content!(content) ⇒ Object
68 69 70 71 72 73 74 75 |
# File 'app/models/layered/assistant/conversation.rb', line 68 def update_name_from_content!(content) return unless name == self.class.default_name return if content.blank? old_name = name update!(name: content.truncate(60)) broadcast_name_updated(old_name) end |
#update_token_totals! ⇒ Object
Name
28 29 30 31 32 |
# File 'app/models/layered/assistant/conversation.rb', line 28 def update_token_totals! input = .sum(:input_tokens) output = .sum(:output_tokens) update!(input_tokens: input, output_tokens: output, token_estimate: input + output) end |