Class: Tracebook::Interaction
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Tracebook::Interaction
- Defined in:
- app/models/tracebook/interaction.rb
Overview
ActiveRecord model for LLM interactions.
Stores all data related to an LLM API call including request/response payloads, usage metrics, cost, review state, and relationships.
Payload Fields
request_payload- Full request sent to provider (JSON)response_payload- Full response from provider (JSON)review_comment- Reviewer's comments
Note: Encryption is optional. See README for instructions on enabling ActiveRecord::Encryption for these fields.
Enums
status::success,:error,:canceledreview_state::pending,:approved,:flagged,:rejected
Associations
parent- Parent interaction for hierarchical chainsuser- Polymorphic association to user who triggered the callrequest_payload_blob- ActiveStorage blob for large requestsresponse_payload_blob- ActiveStorage blob for large responses
Instance Attribute Summary collapse
-
#parent ⇒ Tracebook::Interaction?
Parent interaction for hierarchical chains.
-
#request_payload_blob ⇒ ActiveStorage::Blob?
Blob for large request payloads.
-
#response_payload_blob ⇒ ActiveStorage::Blob?
Blob for large response payloads.
-
#review_state ⇒ Symbol
Review state (:pending, :approved, :flagged, :rejected).
-
#status ⇒ Symbol
Request status (:success, :error, :canceled).
-
#user ⇒ ActiveRecord::Base?
Polymorphic user who triggered this interaction.
Class Method Summary collapse
Instance Attribute Details
#parent ⇒ Tracebook::Interaction?
Returns Parent interaction for hierarchical chains.
46 |
# File 'app/models/tracebook/interaction.rb', line 46 belongs_to :parent, class_name: "Tracebook::Interaction", optional: true |
#request_payload_blob ⇒ ActiveStorage::Blob?
Returns Blob for large request payloads.
54 |
# File 'app/models/tracebook/interaction.rb', line 54 belongs_to :request_payload_blob, class_name: "ActiveStorage::Blob", optional: true |
#response_payload_blob ⇒ ActiveStorage::Blob?
Returns Blob for large response payloads.
58 |
# File 'app/models/tracebook/interaction.rb', line 58 belongs_to :response_payload_blob, class_name: "ActiveStorage::Blob", optional: true |
#review_state ⇒ Symbol
Returns Review state (:pending, :approved, :flagged, :rejected).
66 |
# File 'app/models/tracebook/interaction.rb', line 66 enum :review_state, { pending: 0, approved: 1, flagged: 2, rejected: 3 }, prefix: true |
#status ⇒ Symbol
Returns Request status (:success, :error, :canceled).
62 |
# File 'app/models/tracebook/interaction.rb', line 62 enum :status, { success: 0, error: 1, canceled: 2 }, prefix: true |
#user ⇒ ActiveRecord::Base?
Returns Polymorphic user who triggered this interaction.
50 |
# File 'app/models/tracebook/interaction.rb', line 50 belongs_to :user, polymorphic: true, optional: true |
Class Method Details
.filtered(params) ⇒ Object
91 92 93 94 95 96 97 98 99 |
# File 'app/models/tracebook/interaction.rb', line 91 def self.filtered(params) by_provider(params[:provider]) .by_model(params[:model]) .by_project(params[:project]) .by_status(params[:status]) .by_review_state(params[:review_state]) .tagged_with(params[:tag]) .between_dates(params[:from], params[:to]) end |