There are a few backwards incompatible changes in v0.0.12. Here's a guide to quickly resolving the issues.
The simplest migration is to use eval.Run() instead of eval.New(). eval.Run() exists in both v0.0.11 and v0.0.12 and is unaffected by the changes.
func main() {
teardown, _ := trace.Quickstart()
defer teardown()
result, err := eval.Run(context.Background(), eval.Opts[int, int]{
Project: "my-project",
Experiment: "my-experiment",
Cases: cases,
Task: task,
Scorers: scorers,
})
if err != nil {
log.Fatal(err)
}
fmt.Println(result.String()) // Prints results with permalink
}Benefits:
- Automatic project/experiment resolution
- Console reports
- Less boilerplate
If you want to keep using eval.New, here's a more detailed look at the changes.
Before:
myEval := eval.New(..)
err := myEval.Run(ctx)After:
myEval := eval.New(..)
_, err := myEval.Run(ctx)
fmt.Println(_.String()) // Includes permalink to UIIf you want to keep using eval.New, you'll need to slightly change how you resolve the experiment before running it.
Before:
myEval := eval.New(experimentID, cases, task, scorers)After:
key := eval.ResolveKey("my-project-name", "my-experiment")
myEval := eval.New(key, cases, task, scorers)Before:
experimentID, err := eval.ResolveExperimentID("my-experiment", projectID)After:
experimentID, experimentName, err := eval.ResolveExperimentID("my-experiment", projectID)This didn't have much use for tracing and evals so it is now private.
- ✅ Use
eval.Run()instead of manually creating evals - ✅ Update
Eval.Run()calls to handleResultreturn value - ✅ If using
eval.New(), update to useeval.Key
For questions: https://github.com/braintrustdata/braintrust-x-go/issues