Class: Braintrust::Contrib::OpenAI::Integration

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

Overview

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

Constant Summary collapse

MINIMUM_VERSION =
"0.1.0"
GEM_NAMES =
["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/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/openai/integration.rb', line 20

def self.integration_name
  :openai
end

.loaded?Boolean

Returns true if official openai gem is available.

Returns:

  • (Boolean)

    true if official openai gem is available



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

def self.loaded?
  # Check if the official openai gem is loaded (not ruby-openai).
  # The ruby-openai gem also uses "require 'openai'", so we need to distinguish them.

  # This module is defined ONLY in the official OpenAI gem
  defined?(::OpenAI::Internal) ? true : false
end

.minimum_versionString

Returns Minimum compatible version.

Returns:

  • (String)

    Minimum compatible version



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

def self.minimum_version
  MINIMUM_VERSION
end

.patchersClass

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

Returns:

  • (Class)

    The patcher class



51
52
53
54
# File 'lib/braintrust/contrib/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/openai/integration.rb', line 30

def self.require_paths
  REQUIRE_PATHS
end