Class: Observ::Generation
- Inherits:
-
Observation
- Object
- ActiveRecord::Base
- ApplicationRecord
- Observation
- Observ::Generation
- Defined in:
- app/models/observ/generation.rb
Instance Method Summary collapse
- #finalize(output:, usage: {}, cost_usd: 0.0, status_message: nil, finish_reason: nil, completion_start_time: nil, provider_metadata: {}, messages: nil, raw_response: nil) ⇒ Object
- #input_tokens ⇒ Object
- #output_tokens ⇒ Object
- #set_input(input, messages: nil) ⇒ Object
- #set_messages(messages) ⇒ Object
- #set_tools(tools, tool_choice: nil) ⇒ Object
- #time_to_first_token_ms ⇒ Object
- #total_tokens ⇒ Object
Methods inherited from Observation
Instance Method Details
#finalize(output:, usage: {}, cost_usd: 0.0, status_message: nil, finish_reason: nil, completion_start_time: nil, provider_metadata: {}, messages: nil, raw_response: nil) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'app/models/observ/generation.rb', line 20 def finalize(output:, usage: {}, cost_usd: 0.0, status_message: nil, finish_reason: nil, completion_start_time: nil, provider_metadata: {}, messages: nil, raw_response: nil) merged_usage = (self.usage || {}).merge(usage.stringify_keys) = (self. || {}).merge(.stringify_keys) update!( output: output.is_a?(String) ? output : output.to_json, usage: merged_usage, cost_usd: cost_usd, finish_reason: finish_reason, completion_start_time: completion_start_time, provider_metadata: , messages: || self., raw_response: raw_response, end_time: Time.current, status_message: ) end |
#input_tokens ⇒ Object
48 49 50 |
# File 'app/models/observ/generation.rb', line 48 def input_tokens usage&.dig("input_tokens") || 0 end |
#output_tokens ⇒ Object
52 53 54 |
# File 'app/models/observ/generation.rb', line 52 def output_tokens usage&.dig("output_tokens") || 0 end |
#set_input(input, messages: nil) ⇒ Object
5 6 7 8 9 10 |
# File 'app/models/observ/generation.rb', line 5 def set_input(input, messages: nil) update!( input: input.is_a?(String) ? input : input.to_json, messages: || self. ) end |
#set_messages(messages) ⇒ Object
12 13 14 |
# File 'app/models/observ/generation.rb', line 12 def () update!(messages: ) end |
#set_tools(tools, tool_choice: nil) ⇒ Object
16 17 18 |
# File 'app/models/observ/generation.rb', line 16 def set_tools(tools, tool_choice: nil) update!(tools: tools, tool_choice: tool_choice) end |
#time_to_first_token_ms ⇒ Object
39 40 41 42 |
# File 'app/models/observ/generation.rb', line 39 def time_to_first_token_ms return nil unless completion_start_time && start_time ((completion_start_time - start_time) * 1000).round(2) end |
#total_tokens ⇒ Object
44 45 46 |
# File 'app/models/observ/generation.rb', line 44 def total_tokens usage&.dig("total_tokens") || 0 end |