Class: Tracebook::NormalizedInteraction
- Inherits:
-
Data
- Object
- Data
- Tracebook::NormalizedInteraction
- Defined in:
- lib/tracebook/normalized_interaction.rb
Overview
Normalized representation of an LLM interaction.
This immutable data structure provides a standard format for LLM interactions across different providers. Mappers convert provider-specific formats into this structure before persistence.
Instance Attribute Summary collapse
-
#error_class ⇒ String?
readonly
Exception class name on failure.
-
#error_message ⇒ String?
readonly
Exception message on failure.
-
#input_tokens ⇒ Integer?
readonly
Prompt token count.
-
#latency_ms ⇒ Integer?
readonly
Request duration in milliseconds.
-
#metadata ⇒ Hash
readonly
Custom metadata.
-
#model ⇒ String
readonly
Model identifier (e.g., "gpt-4o", "claude-3-5-sonnet").
-
#output_tokens ⇒ Integer?
readonly
Completion token count.
-
#parent_id ⇒ Integer?
readonly
Parent interaction ID for hierarchical chains.
-
#project ⇒ String?
readonly
Project name for filtering.
-
#provider ⇒ String
readonly
Provider name (e.g., "openai", "anthropic").
-
#request_payload ⇒ Hash
readonly
Full request sent to provider (will be encrypted).
-
#request_text ⇒ String?
readonly
Human-readable request summary.
-
#response_payload ⇒ Hash
readonly
Full response from provider (will be encrypted).
-
#response_text ⇒ String?
readonly
Human-readable response summary.
-
#session_id ⇒ String?
readonly
Session identifier for grouping related calls.
-
#status ⇒ Symbol, String
readonly
:success, :error, or :canceled.
-
#tags ⇒ Array<String>
readonly
Labels for filtering.
-
#user ⇒ ActiveRecord::Base?
readonly
Associated user (polymorphic).
Instance Method Summary collapse
-
#initialize(provider:, model:, project: nil, request_payload: {}, response_payload: {}, request_text: nil, response_text: nil, input_tokens: nil, output_tokens: nil, latency_ms: nil, status: "success", error_class: nil, error_message: nil, tags: [], metadata: {}, user: nil, parent_id: nil, session_id: nil) ⇒ NormalizedInteraction
constructor
A new instance of NormalizedInteraction.
Constructor Details
#initialize(provider:, model:, project: nil, request_payload: {}, response_payload: {}, request_text: nil, response_text: nil, input_tokens: nil, output_tokens: nil, latency_ms: nil, status: "success", error_class: nil, error_message: nil, tags: [], metadata: {}, user: nil, parent_id: nil, session_id: nil) ⇒ NormalizedInteraction
Returns a new instance of NormalizedInteraction.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/tracebook/normalized_interaction.rb', line 61 def initialize( provider:, model:, project: nil, request_payload: {}, response_payload: {}, request_text: nil, response_text: nil, input_tokens: nil, output_tokens: nil, latency_ms: nil, status: "success", error_class: nil, error_message: nil, tags: [], metadata: {}, user: nil, parent_id: nil, session_id: nil ) super end |
Instance Attribute Details
#error_class ⇒ String? (readonly)
Exception class name on failure
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def error_class @error_class end |
#error_message ⇒ String? (readonly)
Exception message on failure
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def end |
#input_tokens ⇒ Integer? (readonly)
Prompt token count
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def input_tokens @input_tokens end |
#latency_ms ⇒ Integer? (readonly)
Request duration in milliseconds
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def latency_ms @latency_ms end |
#metadata ⇒ Hash (readonly)
Custom metadata
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def end |
#model ⇒ String (readonly)
Model identifier (e.g., "gpt-4o", "claude-3-5-sonnet")
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def model @model end |
#output_tokens ⇒ Integer? (readonly)
Completion token count
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def output_tokens @output_tokens end |
#parent_id ⇒ Integer? (readonly)
Parent interaction ID for hierarchical chains
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def parent_id @parent_id end |
#project ⇒ String? (readonly)
Project name for filtering
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def project @project end |
#provider ⇒ String (readonly)
Provider name (e.g., "openai", "anthropic")
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def provider @provider end |
#request_payload ⇒ Hash (readonly)
Full request sent to provider (will be encrypted)
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def request_payload @request_payload end |
#request_text ⇒ String? (readonly)
Human-readable request summary
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def request_text @request_text end |
#response_payload ⇒ Hash (readonly)
Full response from provider (will be encrypted)
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def response_payload @response_payload end |
#response_text ⇒ String? (readonly)
Human-readable response summary
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def response_text @response_text end |
#session_id ⇒ String? (readonly)
Session identifier for grouping related calls
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def session_id @session_id end |
#status ⇒ Symbol, String (readonly)
:success, :error, or :canceled
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def status @status end |
#tags ⇒ Array<String> (readonly)
Labels for filtering
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def end |
#user ⇒ ActiveRecord::Base? (readonly)
Associated user (polymorphic)
41 42 43 |
# File 'lib/tracebook/normalized_interaction.rb', line 41 def user @user end |