-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmain.go
More file actions
55 lines (46 loc) · 1.3 KB
/
main.go
File metadata and controls
55 lines (46 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// This example demonstrates basic Genkit tracing with Braintrust.
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/firebase/genkit/go/ai"
"github.com/firebase/genkit/go/genkit"
"github.com/firebase/genkit/go/plugins/googlegenai"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/sdk/trace"
"github.com/braintrustdata/braintrust-sdk-go"
tracegenkit "github.com/braintrustdata/braintrust-sdk-go/trace/contrib/genkit"
)
func main() {
tp := trace.NewTracerProvider()
defer tp.Shutdown(context.Background()) //nolint:errcheck
otel.SetTracerProvider(tp)
bt, err := braintrust.New(tp,
braintrust.WithProject("go-sdk-examples"),
braintrust.WithBlockingLogin(true),
)
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
g := genkit.Init(ctx,
genkit.WithPlugins(&googlegenai.GoogleAI{
APIKey: os.Getenv("GOOGLE_API_KEY"),
}),
genkit.WithDefaultModel("googleai/gemini-2.5-flash"),
)
tracer := otel.Tracer("genkit-example")
ctx, span := tracer.Start(ctx, "examples/genkit/main.go")
defer span.End()
resp, err := genkit.Generate(ctx, g,
ai.WithPrompt("What is the capital of France?"),
ai.WithMiddleware(tracegenkit.NewMiddleware()),
)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Response: %s\n", resp.Text())
fmt.Printf("View trace: %s\n", bt.Permalink(span))
}