module RubyLLM::Instrumentation
Emits structured RubyLLM events without requiring a specific observability backend. Rails apps can use ActiveSupport::Notifications as the instrumenter.
Public Instance Methods
# File lib/ruby_llm/instrumentation.rb, line 27 def build_payload(payload, attributes) payload ||= {} attributes.empty? ? payload : payload.merge(attributes) end
# File lib/ruby_llm/instrumentation.rb, line 9 def instrument(name, payload = nil, config: nil, **attributes) payload = build_payload(payload, attributes) instrumenter = instrumenter_for(config) return yield(payload) if block_given? && !instrumenter unless instrumenter.respond_to?(:instrument) return yield(payload) if block_given? return end if block_given? instrumenter.instrument(name, payload) { yield(payload) } else instrumenter.instrument(name, payload) end end
Source
# File lib/ruby_llm/instrumentation.rb, line 32 def instrumenter_for(config) (config || RubyLLM.config).instrumenter end