Documentation
¶
Overview ¶
Package braintrust provides the core Braintrust SDK for Go.
Braintrust is a platform for building reliable AI applications. This SDK provides tools for evaluation, experimentation, and observability of AI systems.
Main Packages ¶
For AI model evaluations, see the eval package.
For distributed tracing and observability, see the trace package.
Configuration ¶
The SDK reads configuration from environment variables. See [GetConfig] for a complete list of supported environment variables.
Learn More ¶
- Examples: https://github.com/braintrustdata/braintrust-sdk-go/tree/main/examples
- Documentation: https://www.braintrust.dev/docs
Index ¶
- func NewEvaluator[I, R any](client *Client) *eval.Evaluator[I, R]
- type Client
- type Option
- func WithAPIKey(apiKey string) Option
- func WithAPIURL(apiURL string) Option
- func WithAppURL(appURL string) Option
- func WithBlockingLogin(enabled bool) Option
- func WithExporter(exporter trace.SpanExporter) Option
- func WithFilterAISpans(enabled bool) Option
- func WithLogger(l logger.Logger) Option
- func WithOrgName(orgName string) Option
- func WithProject(projectName string) Option
- func WithProjectID(projectID string) Option
- func WithSpanFilterFuncs(filterFuncs ...config.SpanFilterFunc) Option
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewEvaluator ¶
NewEvaluator creates a new evaluator for running multiple evaluations with the same input and output types.
Example:
client, _ := braintrust.New(tp, braintrust.WithProject("my-project"))
// Create an evaluator for string → string evaluations
evaluator := braintrust.NewEvaluator[string, string](client)
// Run multiple evaluations
result1, _ := evaluator.Run(ctx, eval.Opts[string, string]{
Experiment: "test-1",
Cases: cases1,
Task: task1,
Scorers: scorers,
})
result2, _ := evaluator.Run(ctx, eval.Opts[string, string]{
Experiment: "test-2",
Cases: cases2,
Task: task2,
Scorers: scorers,
})
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is the main Braintrust SDK client
func New ¶
func New(tp *trace.TracerProvider, opts ...Option) (*Client, error)
New creates a new Braintrust client with the provided TracerProvider.
The TracerProvider is required and should be managed by the caller. The client will NOT shut down the provider - you must do this yourself.
Configuration is loaded from environment variables first, then explicit options are applied (options take precedence).
Login happens asynchronously in the background by default.
Example:
tp := trace.NewTracerProvider()
bt, err := braintrust.New(tp,
braintrust.WithAPIKey("your-api-key"),
braintrust.WithProject("my-project"),
)
if err != nil {
log.Fatal(err)
}
defer tp.Shutdown(context.Background())
func (*Client) API ¶
API returns an API client for making direct calls to the Braintrust API. This provides low-level access to projects, datasets, experiments, and other resources.
Example:
client, _ := braintrust.New(tp, braintrust.WithAPIKey("your-key"))
// Create a dataset
apiClient := client.API()
project, _ := apiClient.Projects().Register(ctx, "my-project")
dataset, _ := apiClient.Datasets().Create(ctx, api.DatasetRequest{
ProjectID: project.ID,
Name: "my-dataset",
Description: "My test dataset",
})
func (*Client) Permalink ¶
Permalink returns a URL to the span in the Braintrust UI. If the permalink cannot be generated, it returns an empty string and logs a warning.
Example:
client, _ := braintrust.New(tp, braintrust.WithAPIKey("your-key"))
tracer := client.Tracer("my-app")
ctx, span := tracer.Start(ctx, "my-operation")
defer span.End()
// Get the permalink
link := client.Permalink(span)
fmt.Println("View trace:", link)
func (*Client) Tracer ¶
Tracer returns an OpenTelemetry Tracer with the given name. This is a convenience method equivalent to calling TracerProvider().Tracer(name, opts...).
Example:
tracer := client.Tracer("my-app")
ctx, span := tracer.Start(ctx, "my-operation")
defer span.End()
func (*Client) TracerProvider ¶
func (c *Client) TracerProvider() *trace.TracerProvider
TracerProvider returns the OpenTelemetry TracerProvider used by this client. This can be used to create tracers or access the provider for advanced use cases.
type Option ¶
Option is a functional option for configuring a Braintrust client
func WithAPIKey ¶
WithAPIKey sets the API key (overrides BRAINTRUST_API_KEY)
func WithAPIURL ¶
WithAPIURL sets the API URL (overrides BRAINTRUST_API_URL)
func WithAppURL ¶
WithAppURL sets the app URL (overrides BRAINTRUST_APP_URL)
func WithBlockingLogin ¶
WithBlockingLogin enables synchronous login By default, login happens asynchronously in the background Set to true for tests or scripts where you need login to complete before proceeding
func WithExporter ¶
func WithExporter(exporter trace.SpanExporter) Option
WithExporter injects a custom OpenTelemetry SpanExporter If not provided, an OTLP HTTP exporter will be created automatically This is primarily useful for testing with a memory exporter
func WithFilterAISpans ¶
WithFilterAISpans enables filtering to keep only AI-related spans When enabled, only spans with AI-related names or attributes will be sent
func WithLogger ¶
WithLogger sets a custom logger for the SDK If not provided, a default logger will be used
func WithOrgName ¶
WithOrgName sets the organization name (overrides BRAINTRUST_ORG_NAME)
func WithProject ¶
WithProject sets the default project name (overrides BRAINTRUST_DEFAULT_PROJECT)
func WithProjectID ¶
WithProjectID sets the default project ID (overrides BRAINTRUST_DEFAULT_PROJECT_ID)
func WithSpanFilterFuncs ¶
func WithSpanFilterFuncs(filterFuncs ...config.SpanFilterFunc) Option
WithSpanFilterFuncs adds custom span filter functions Filters are evaluated in order. Return >0 to keep, <0 to drop, 0 to continue
Directories
¶
| Path | Synopsis |
|---|---|
|
Package api provides a client for interacting with the Braintrust API.
|
Package api provides a client for interacting with the Braintrust API. |
|
datasets
Package datasets provides operations for managing Braintrust datasets.
|
Package datasets provides operations for managing Braintrust datasets. |
|
experiments
Package experiments provides operations for managing Braintrust experiments.
|
Package experiments provides operations for managing Braintrust experiments. |
|
functions
Package functions provides operations for managing Braintrust functions (prompts, tools, scorers).
|
Package functions provides operations for managing Braintrust functions (prompts, tools, scorers). |
|
projects
Package projects provides operations for managing Braintrust projects.
|
Package projects provides operations for managing Braintrust projects. |
|
btx
module
|
|
|
Package config provides configuration management for the Braintrust SDK.
|
Package config provides configuration management for the Braintrust SDK. |
|
Package eval provides evaluation functionality for the Braintrust SDK.
|
Package eval provides evaluation functionality for the Braintrust SDK. |
|
examples
module
|
|
|
anthropic
command
This example demonstrates basic Anthropic tracing with Braintrust.
|
This example demonstrates basic Anthropic tracing with Braintrust. |
|
attachments
command
Package main demonstrates manual attachment usage in Braintrust traces.
|
Package main demonstrates manual attachment usage in Braintrust traces. |
|
dataset-api
command
|
|
|
datasets
command
|
|
|
distributed-tracing
command
Package main demonstrates distributed tracing using W3C baggage propagation.
|
Package main demonstrates distributed tracing using W3C baggage propagation. |
|
evals
command
|
|
|
genai
command
This example demonstrates basic Google Gemini tracing with Braintrust.
|
This example demonstrates basic Google Gemini tracing with Braintrust. |
|
internal/anthropic
command
Anthropic kitchen sink - tests all the Anthropic features with minimal code
|
Anthropic kitchen sink - tests all the Anthropic features with minimal code |
|
internal/email-evals
command
This is a realistic eval example.
|
This is a realistic eval example. |
|
internal/eval-updates
command
This example demonstrates using the Update option to append results to an existing experiment.
|
This example demonstrates using the Update option to append results to an existing experiment. |
|
internal/rewrite
command
|
|
|
manual-llm-logging
command
|
|
|
openai
command
This example demonstrates basic OpenAI tracing with Braintrust.
|
This example demonstrates basic OpenAI tracing with Braintrust. |
|
otel
command
|
|
|
prompts
command
This example demonstrates using a Braintrust prompt in an evaluation.
|
This example demonstrates using a Braintrust prompt in an evaluation. |
|
scorers
command
|
|
|
internal
|
|
|
auth
Package auth provides authentication functionality for the Braintrust SDK.
|
Package auth provides authentication functionality for the Braintrust SDK. |
|
https
Package https provides a unified HTTP client for making API requests with centralized auth, error handling, and debug logging.
|
Package https provides a unified HTTP client for making API requests with centralized auth, error handling, and debug logging. |
|
logger
Package logger provides internal logging utilities.
|
Package logger provides internal logging utilities. |
|
oteltest
Package oteltest provides testing utilities for OpenTelemetry tracing.
|
Package oteltest provides testing utilities for OpenTelemetry tracing. |
|
tests
Package tests provides test utilities for creating test sessions and other test helpers.
|
Package tests provides test utilities for creating test sessions and other test helpers. |
|
Package logger provides logging interfaces and implementations for the Braintrust SDK.
|
Package logger provides logging interfaces and implementations for the Braintrust SDK. |
|
Package trace provides distributed tracing functionality for Braintrust experiments.
|
Package trace provides distributed tracing functionality for Braintrust experiments. |
|
attachment
Package attachment provides utilities for creating and managing attachments in Braintrust traces.
|
Package attachment provides utilities for creating and managing attachments in Braintrust traces. |
|
contrib/anthropic
Package anthropic provides OpenTelemetry middleware for tracing Anthropic API calls.
|
Package anthropic provides OpenTelemetry middleware for tracing Anthropic API calls. |
|
contrib/genai
Package genai provides OpenTelemetry tracing for Google Gemini API calls.
|
Package genai provides OpenTelemetry tracing for Google Gemini API calls. |
|
contrib/langchaingo
Package langchaingo provides OpenTelemetry tracing for LangChainGo applications.
|
Package langchaingo provides OpenTelemetry tracing for LangChainGo applications. |
|
contrib/openai
Package openai provides OpenTelemetry middleware for tracing OpenAI API calls.
|
Package openai provides OpenTelemetry middleware for tracing OpenAI API calls. |
|
internal
Package internal provides shared middleware functionality for OpenTelemetry tracers.
|
Package internal provides shared middleware functionality for OpenTelemetry tracers. |
|
contrib/a2a
module
|
|
|
contrib/adk
module
|
|
|
contrib/all
module
|
|
|
contrib/bedrockruntime
module
|
|
|
contrib/cloudwego/eino
module
|
|
|
contrib/genkit
module
|
|