Class: Langsmith::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/langsmith/configuration.rb

Overview

Configuration settings for the Langsmith SDK.

Examples:

Configure via block

Langsmith.configure do |config|
  config.api_key = "ls_..."
  config.tracing_enabled = true
  config.project = "my-project"
end

Configure via environment variables

# LANGSMITH_API_KEY=ls_...
# LANGSMITH_TRACING=true
# LANGSMITH_PROJECT=my-project

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/langsmith/configuration.rb', line 48

def initialize
  @api_key = ENV.fetch("LANGSMITH_API_KEY", nil)
  @endpoint = ENV.fetch("LANGSMITH_ENDPOINT", "https://api.smith.langchain.com")
  @project = ENV.fetch("LANGSMITH_PROJECT", "default")
  @tracing_enabled = env_boolean("LANGSMITH_TRACING", false)
  @batch_size = ENV.fetch("LANGSMITH_BATCH_SIZE", 100).to_i
  @flush_interval = ENV.fetch("LANGSMITH_FLUSH_INTERVAL", 1.0).to_f
  @timeout = ENV.fetch("LANGSMITH_TIMEOUT", 10).to_i
  @max_retries = ENV.fetch("LANGSMITH_MAX_RETRIES", 3).to_i
  @tenant_id = ENV.fetch("LANGSMITH_TENANT_ID", nil)
  @max_pending_entries = ENV.fetch("LANGSMITH_MAX_PENDING_ENTRIES", nil)&.to_i
end

Instance Attribute Details

#api_keyString?

Returns LangSmith API key (required for tracing).

Returns:

  • (String, nil)

    LangSmith API key (required for tracing)



19
20
21
# File 'lib/langsmith/configuration.rb', line 19

def api_key
  @api_key
end

#batch_sizeInteger

Returns Batch size for sending traces.

Returns:

  • (Integer)

    Batch size for sending traces



31
32
33
# File 'lib/langsmith/configuration.rb', line 31

def batch_size
  @batch_size
end

#endpointString

Returns LangSmith API endpoint.

Returns:

  • (String)

    LangSmith API endpoint



22
23
24
# File 'lib/langsmith/configuration.rb', line 22

def endpoint
  @endpoint
end

#flush_intervalFloat

Returns Flush interval in seconds.

Returns:

  • (Float)

    Flush interval in seconds



34
35
36
# File 'lib/langsmith/configuration.rb', line 34

def flush_interval
  @flush_interval
end

#max_pending_entriesInteger?

Returns Maximum buffered run entries (queue + pending); nil means unlimited.

Returns:

  • (Integer, nil)

    Maximum buffered run entries (queue + pending); nil means unlimited



46
47
48
# File 'lib/langsmith/configuration.rb', line 46

def max_pending_entries
  @max_pending_entries
end

#max_retriesInteger

Returns Maximum retry attempts for failed requests.

Returns:

  • (Integer)

    Maximum retry attempts for failed requests



40
41
42
# File 'lib/langsmith/configuration.rb', line 40

def max_retries
  @max_retries
end

#projectString

Returns Project name for organizing traces.

Returns:

  • (String)

    Project name for organizing traces



25
26
27
# File 'lib/langsmith/configuration.rb', line 25

def project
  @project
end

#tenant_idString?

Returns Tenant ID for multi-tenant scenarios.

Returns:

  • (String, nil)

    Tenant ID for multi-tenant scenarios



43
44
45
# File 'lib/langsmith/configuration.rb', line 43

def tenant_id
  @tenant_id
end

#timeoutInteger

Returns Request timeout in seconds.

Returns:

  • (Integer)

    Request timeout in seconds



37
38
39
# File 'lib/langsmith/configuration.rb', line 37

def timeout
  @timeout
end

#tracing_enabledBoolean

Returns Enable/disable tracing.

Returns:

  • (Boolean)

    Enable/disable tracing



28
29
30
# File 'lib/langsmith/configuration.rb', line 28

def tracing_enabled
  @tracing_enabled
end

Instance Method Details

#api_key_present?Boolean

Returns whether an API key is configured.

Returns:

  • (Boolean)


78
79
80
# File 'lib/langsmith/configuration.rb', line 78

def api_key_present?
  !@api_key.nil? && !@api_key.empty?
end

#tracing_enabled?Boolean

Returns whether tracing is enabled in configuration. Note: This only checks the configuration flag, not whether tracing can actually occur.

Returns:

  • (Boolean)

See Also:



65
66
67
# File 'lib/langsmith/configuration.rb', line 65

def tracing_enabled?
  @tracing_enabled
end

#tracing_possible?Boolean

Returns whether tracing can actually occur (enabled AND has API key). Use this to check if traces will be sent.

Returns:

  • (Boolean)


72
73
74
# File 'lib/langsmith/configuration.rb', line 72

def tracing_possible?
  @tracing_enabled && api_key_present?
end

#validate!void

This method returns an undefined value.

Validates the configuration, raising an error if invalid.

Raises:



85
86
87
88
89
# File 'lib/langsmith/configuration.rb', line 85

def validate!
  return unless @tracing_enabled

  raise ConfigurationError, "LANGSMITH_API_KEY is required when tracing is enabled" unless api_key_present?
end