Class: Smith::Trace::OpenTelemetry
- Inherits:
-
Object
- Object
- Smith::Trace::OpenTelemetry
- Defined in:
- lib/smith/trace/open_telemetry.rb
Constant Summary collapse
- CONFIG_MAP =
{ transition: :trace_transitions, tool_call: :trace_tool_calls, token_usage: :trace_token_usage, cost: :trace_cost }.freeze
- CONTENT_KEYS =
%i[content prompt response args result].freeze
Instance Method Summary collapse
-
#initialize ⇒ OpenTelemetry
constructor
A new instance of OpenTelemetry.
- #record(type:, data:) ⇒ Object
Constructor Details
#initialize ⇒ OpenTelemetry
Returns a new instance of OpenTelemetry.
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/smith/trace/open_telemetry.rb', line 15 def initialize require "opentelemetry-api" @tracer = ::OpenTelemetry.tracer_provider.tracer("smith", Smith::VERSION) rescue LoadError @tracer = nil Smith.config.logger&.warn( "Smith::Trace::OpenTelemetry requires the opentelemetry-api gem. " \ "Add it to your Gemfile to enable OpenTelemetry tracing." ) end |
Instance Method Details
#record(type:, data:) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/smith/trace/open_telemetry.rb', line 26 def record(type:, data:) return unless @tracer return unless type_enabled?(type) filtered = filter_content(data) @tracer.in_span("smith.#{type}") do |span| filtered.each { |key, value| span.set_attribute("smith.#{key}", value.to_s) } end end |