Module: RubyLLM::Instrumentation
- Defined in:
- lib/ruby_llm/instrumentation.rb
Overview
Emits structured RubyLLM events without requiring a specific observability backend. Rails apps can use ActiveSupport::Notifications as the instrumenter.
Class Method Summary collapse
- .build_payload(payload, attributes) ⇒ Object
- .instrument(name, payload = nil, config: nil, **attributes) ⇒ Object
- .instrumenter_for(config) ⇒ Object
Class Method Details
.build_payload(payload, attributes) ⇒ Object
27 28 29 30 |
# File 'lib/ruby_llm/instrumentation.rb', line 27 def build_payload(payload, attributes) payload ||= {} attributes.empty? ? payload : payload.merge(attributes) end |
.instrument(name, payload = nil, config: nil, **attributes) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 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 |