Braintrust.Config (Braintrust v0.3.0)
View SourceConfiguration management for the Braintrust SDK.
Configuration Sources (in order of precedence)
- Runtime options passed to functions
- Process dictionary (via
Braintrust.configure/1) - Application config (via
config :braintrust, ...) - Environment variables
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
:api_key | string | BRAINTRUST_API_KEY env | API key for authentication |
:base_url | string | BRAINTRUST_API_URL env or https://api.braintrust.dev | Base URL for API |
:timeout | integer | 60_000 | Request timeout in ms |
:max_retries | integer | 2 | Maximum retry attempts |
Examples
Environment Variable
export BRAINTRUST_API_KEY="sk-your-api-key"Application Config
# config/config.exs
config :braintrust,
api_key: System.get_env("BRAINTRUST_API_KEY"),
timeout: 30_000Runtime Config
# Configure for current process
Braintrust.configure(api_key: "sk-...")
# Or pass options directly to functions
Braintrust.Project.list(api_key: "sk-...")
Summary
Functions
Gets the API key, raising if not configured.
Clears runtime configuration for the current process.
Sets runtime configuration for the current process.
Gets a configuration value.
Validates an API key format.
Types
@type config_key() :: :api_key | :base_url | :timeout | :max_retries
@type config_value() :: String.t() | pos_integer()
Functions
Gets the API key, raising if not configured.
Examples
iex> Braintrust.Config.api_key!(api_key: "sk-test123")
"sk-test123"Raises
ArgumentErrorif no API key is configured
@spec clear() :: :ok
Clears runtime configuration for the current process.
Examples
iex> Braintrust.Config.configure(api_key: "sk-test")
:ok
iex> Braintrust.Config.clear()
:ok
iex> Braintrust.Config.get(:api_key)
nil
@spec configure(keyword()) :: :ok
Sets runtime configuration for the current process.
Configuration set this way takes precedence over application config and environment variables, but is overridden by options passed directly to functions.
Examples
iex> Braintrust.Config.configure(api_key: "sk-test", timeout: 30_000)
:ok
iex> Braintrust.Config.get(:api_key)
"sk-test"
iex> Braintrust.Config.get(:timeout)
30000
@spec get( config_key(), keyword() ) :: config_value() | nil
Gets a configuration value.
Looks up configuration in order:
- Runtime options (if provided)
- Process dictionary
- Application config
- Environment variable (for
:api_keyand:base_url) - Default value
Examples
iex> Braintrust.Config.get(:base_url)
"https://api.braintrust.dev"
iex> Braintrust.Config.get(:timeout)
60000
iex> Braintrust.Config.get(:base_url, base_url: "https://custom.api.com")
"https://custom.api.com"
Validates an API key format.
Braintrust API keys use two prefixes:
sk-for user API keysbt-st-for service tokens
Examples
iex> Braintrust.Config.valid_api_key?("sk-abc123")
true
iex> Braintrust.Config.valid_api_key?("bt-st-xyz789")
true
iex> Braintrust.Config.valid_api_key?("invalid-key")
false
iex> Braintrust.Config.valid_api_key?(nil)
false