Class: Braintrust::Contrib::RubyOpenAI::Integration

Inherits:
Object
  • Object
show all
Includes:
Integration
Defined in:
lib/braintrust/contrib/ruby_openai/integration.rb

Overview

RubyOpenAI integration for automatic instrumentation. Instruments the alexrudall ruby-openai gem (not the official openai gem).

Constant Summary collapse

MINIMUM_VERSION =
"7.0.0"
GEM_NAMES =
["ruby-openai"].freeze
REQUIRE_PATHS =
["openai"].freeze

Class Method Summary collapse

Methods included from Integration

included

Class Method Details

.gem_namesArray<String>

Returns Gem names this integration supports.

Returns:

  • (Array<String>)

    Gem names this integration supports



25
26
27
# File 'lib/braintrust/contrib/ruby_openai/integration.rb', line 25

def self.gem_names
  GEM_NAMES
end

.integration_nameSymbol

Returns Unique identifier for this integration.

Returns:

  • (Symbol)

    Unique identifier for this integration



20
21
22
# File 'lib/braintrust/contrib/ruby_openai/integration.rb', line 20

def self.integration_name
  :ruby_openai
end

.loaded?Boolean

Returns true if ruby-openai gem is available (not official openai gem).

Returns:

  • (Boolean)

    true if ruby-openai gem is available (not official openai gem)



40
41
42
43
44
45
46
# File 'lib/braintrust/contrib/ruby_openai/integration.rb', line 40

def self.loaded?
  # Check if ruby-openai gem is loaded (not the official openai gem).
  # Both gems use "require 'openai'", so we need to distinguish them.
  #
  # OpenAI::Internal is defined ONLY in the official OpenAI gem
  (defined?(::OpenAI::Client) && !defined?(::OpenAI::Internal)) ? true : false
end

.minimum_versionString

Returns Minimum compatible version.

Returns:

  • (String)

    Minimum compatible version



35
36
37
# File 'lib/braintrust/contrib/ruby_openai/integration.rb', line 35

def self.minimum_version
  MINIMUM_VERSION
end

.patchersArray<Class>

Lazy-load the patcher only when actually patching. This keeps the integration stub lightweight.

Returns:

  • (Array<Class>)

    The patcher classes



51
52
53
54
# File 'lib/braintrust/contrib/ruby_openai/integration.rb', line 51

def self.patchers
  require_relative "patcher"
  [ChatPatcher, ResponsesPatcher, ModerationsPatcher]
end

.require_pathsArray<String>

Returns Require paths for auto-instrument detection.

Returns:

  • (Array<String>)

    Require paths for auto-instrument detection



30
31
32
# File 'lib/braintrust/contrib/ruby_openai/integration.rb', line 30

def self.require_paths
  REQUIRE_PATHS
end