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_names ⇒ Array<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_name ⇒ Symbol

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_version ⇒ String

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

.patchers ⇒ Class

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_paths ⇒ Array<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