Class: PhaseoSdk::TelemetryRecorder

Inherits:
Object
  • Object
show all
Defined in:
lib/index.rb

Instance Method Summary collapse

Constructor Details

#initialize(config = nil, sdk_version = "2.1.0") ⇒ TelemetryRecorder

Returns a new instance of TelemetryRecorder.



733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
# File 'lib/index.rb', line 733

def initialize(config = nil, sdk_version = "2.1.0")
  config ||= {}
  enabled = config.fetch(:enabled, false)
  directory = config.fetch(:directory, ".phaseo-devtools")
  directory = ".phaseo-devtools" if directory.to_s.strip.empty?

  env_enabled = ENV["PHASEO_DEVTOOLS"] || ENV["PHASEO_DEVTOOLS"]
  unless env_enabled.to_s.strip.empty?
    enabled = %w[1 true yes on].include?(env_enabled.to_s.strip.downcase)
  end

  env_directory = ENV["PHASEO_DEVTOOLS_DIR"] || ENV["PHASEO_DEVTOOLS_DIR"]
  directory = env_directory.to_s.strip unless env_directory.to_s.strip.empty?

  @enabled = enabled
  @directory = directory
  @capture_headers = config.fetch(:capture_headers, false)
  @save_assets = config.fetch(:save_assets, true)
  @sdk_version = sdk_version

  return unless @enabled
  ensure_layout
  
end

Instance Method Details

#capture_error(endpoint:, request:, error:, duration_ms:) ⇒ Object



788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
# File 'lib/index.rb', line 788

def capture_error(endpoint:, request:, error:, duration_ms:)
  return unless @enabled

  error_response = extract_error_response(error)
  model, provider = extract_model_provider(nil, request)
   = {
    sdk: "ruby",
    sdk_version: @sdk_version,
    stream: false
  }
  [:model] = model if model
  [:provider] = provider if provider
  (, error_response)

  entry = {
    id: new_entry_id,
    type: endpoint,
    timestamp: (Time.now.to_f * 1000).to_i,
    duration_ms: duration_ms,
    request: normalize_json_value(request),
    response: normalize_json_value(error_response),
    error: {
      message: error.message,
      status_code: extract_error_status_code(error)
    }.compact,
    metadata: 
  }
  append_entry(entry)
end

#capture_success(endpoint:, request:, response:, duration_ms:) ⇒ Object



758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
# File 'lib/index.rb', line 758

def capture_success(endpoint:, request:, response:, duration_ms:)
  return unless @enabled

   = {
    sdk: "ruby",
    sdk_version: @sdk_version,
    stream: false
  }
  usage = extract_usage(response)
  [:usage] = usage if usage

  model, provider = extract_model_provider(response, request)
  [:model] = model if model
  [:provider] = provider if provider
  (, normalize_hash(response))
  .delete(:headers) unless @capture_headers

  entry = {
    id: new_entry_id,
    type: endpoint,
    timestamp: (Time.now.to_f * 1000).to_i,
    duration_ms: duration_ms,
    request: normalize_json_value(request),
    response: normalize_json_value(response),
    error: nil,
    metadata: 
  }
  append_entry(entry)
end