Module: Braintrust::Contrib
- Defined in:
- lib/braintrust/contrib.rb,
lib/braintrust/contrib/setup.rb,
lib/braintrust/contrib/context.rb,
lib/braintrust/contrib/patcher.rb,
lib/braintrust/contrib/registry.rb,
lib/braintrust/contrib/integration.rb,
lib/braintrust/contrib/support/otel.rb,
lib/braintrust/contrib/rails/railtie.rb,
lib/braintrust/contrib/openai/patcher.rb,
lib/braintrust/contrib/support/openai.rb,
lib/braintrust/contrib/ruby_llm/patcher.rb,
lib/braintrust/contrib/anthropic/patcher.rb,
lib/braintrust/contrib/openai/integration.rb,
lib/braintrust/contrib/rails/server/engine.rb,
lib/braintrust/contrib/ruby_openai/patcher.rb,
lib/braintrust/contrib/ruby_llm/integration.rb,
lib/braintrust/contrib/anthropic/integration.rb,
lib/braintrust/contrib/rails/server/generator.rb,
lib/braintrust/contrib/ruby_openai/integration.rb,
lib/braintrust/contrib/openai/instrumentation/chat.rb,
lib/braintrust/contrib/rails/server/eval_controller.rb,
lib/braintrust/contrib/rails/server/list_controller.rb,
lib/braintrust/contrib/openai/instrumentation/common.rb,
lib/braintrust/contrib/ruby_llm/instrumentation/chat.rb,
lib/braintrust/contrib/rails/server/health_controller.rb,
lib/braintrust/contrib/ruby_llm/instrumentation/common.rb,
lib/braintrust/contrib/anthropic/instrumentation/common.rb,
lib/braintrust/contrib/openai/instrumentation/responses.rb,
lib/braintrust/contrib/ruby_openai/instrumentation/chat.rb,
lib/braintrust/contrib/anthropic/instrumentation/messages.rb,
lib/braintrust/contrib/openai/instrumentation/moderations.rb,
lib/braintrust/contrib/ruby_openai/instrumentation/common.rb,
lib/braintrust/contrib/rails/server/application_controller.rb,
lib/braintrust/contrib/ruby_openai/instrumentation/responses.rb,
lib/braintrust/contrib/anthropic/instrumentation/beta_messages.rb,
lib/braintrust/contrib/ruby_openai/instrumentation/moderations.rb
Overview
Contrib framework for auto-instrumentation integrations. Provides a consistent interface for all integrations and enables reliable auto-instrumentation in later milestones.
Defined Under Namespace
Modules: Anthropic, Integration, OpenAI, Rails, RequireHook, RubyLLM, RubyOpenAI, Setup, Support Classes: Context, Patcher, Registry
Class Method Summary collapse
-
.auto_instrument!(only: nil, except: nil) ⇒ Array<Symbol>
Auto-instrument available integrations.
-
.context_for(target) ⇒ Context?
Get the context for a target object.
-
.default_tracer_provider ⇒ OpenTelemetry::Trace::TracerProvider
Get the default tracer provider, falling back to OpenTelemetry global.
-
.init(tracer_provider: nil) ⇒ void
Initialize the contrib framework with optional configuration.
-
.instrument!(name, **options) ⇒ Boolean
Instrument a registered integration by name.
-
.registry ⇒ Registry
Get the global registry instance.
-
.tracer_for(target, name: "braintrust") ⇒ OpenTelemetry::Trace::Tracer
Get a tracer for a target, using its context’s tracer_provider if available.
-
.tracer_provider_for(target) ⇒ OpenTelemetry::Trace::TracerProvider
Get the tracer provider for a target.
Class Method Details
.auto_instrument!(only: nil, except: nil) ⇒ Array<Symbol>
Auto-instrument available integrations. Discovers which integrations have their target libraries loaded and instruments them automatically.
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/braintrust/contrib.rb', line 118 def auto_instrument!(only: nil, except: nil) if only || except Braintrust::Log.debug("auto_instrument! called (only: #{only.inspect}, except: #{except.inspect})") else Braintrust::Log.debug("auto_instrument! called") end targets = registry.available Braintrust::Log.debug("auto_instrument! available: #{targets.map(&:integration_name).inspect}") targets = targets.select { |i| only.include?(i.integration_name) } if only targets = targets.reject { |i| except.include?(i.integration_name) } if except results = targets.each_with_object([]) do |integration, instrumented| result = instrument!(integration.integration_name) # Note: false means skipped (not applicable) or failed (error logged at lower level) Braintrust::Log.debug("auto_instrument! :#{integration.integration_name} #{result ? "instrumented" : "skipped"}") instrumented << integration.integration_name if result end Braintrust::Log.debug("auto_instrument! complete: #{results.inspect}") results end |
.context_for(target) ⇒ Context?
Get the context for a target object.
172 173 174 |
# File 'lib/braintrust/contrib.rb', line 172 def context_for(target) Context.from(target) end |
.default_tracer_provider ⇒ OpenTelemetry::Trace::TracerProvider
Get the default tracer provider, falling back to OpenTelemetry global.
165 166 167 |
# File 'lib/braintrust/contrib.rb', line 165 def default_tracer_provider @default_tracer_provider || ::OpenTelemetry.tracer_provider end |
.init(tracer_provider: nil) ⇒ void
This method returns an undefined value.
Initialize the contrib framework with optional configuration.
98 99 100 |
# File 'lib/braintrust/contrib.rb', line 98 def init(tracer_provider: nil) @default_tracer_provider = tracer_provider end |
.instrument!(name, **options) ⇒ Boolean
Instrument a registered integration by name.
154 155 156 157 158 159 160 161 |
# File 'lib/braintrust/contrib.rb', line 154 def instrument!(name, **) if (integration = registry[name]) integration.instrument!(**) else Braintrust::Log.error("No integration for '#{name}' is defined!") false end end |
.registry ⇒ Registry
Get the global registry instance.
91 92 93 |
# File 'lib/braintrust/contrib.rb', line 91 def registry Registry.instance end |
.tracer_for(target, name: "braintrust") ⇒ OpenTelemetry::Trace::Tracer
Get a tracer for a target, using its context’s tracer_provider if available.
188 189 190 |
# File 'lib/braintrust/contrib.rb', line 188 def tracer_for(target, name: "braintrust") tracer_provider_for(target).tracer(name) end |
.tracer_provider_for(target) ⇒ OpenTelemetry::Trace::TracerProvider
Get the tracer provider for a target. Checks target’s context first, then falls back to contrib default.
180 181 182 |
# File 'lib/braintrust/contrib.rb', line 180 def tracer_provider_for(target) context_for(target)&.[](:tracer_provider) || default_tracer_provider end |