package main
import (
"context"
"fmt"
"log"
"time"
chucky "github.com/chucky-cloud/chucky-sdk-go"
)
func main() {
// Create token
token, err := chucky.CreateToken(chucky.CreateTokenOptions{
UserID: "user-123",
ProjectID: "your-project-id",
Secret: "hk_live_your_secret_key",
Budget: chucky.CreateBudget(chucky.CreateBudgetOptions{
AIDollars: 1.0,
ComputeHours: 0.5,
Window: chucky.BudgetWindowHour,
WindowStart: time.Now(),
}),
})
if err != nil {
log.Fatal(err)
}
// Create client
client := chucky.NewClient(chucky.ClientOptions{
Token: token,
Debug: true,
})
defer client.Close()
// Create session
session := client.CreateSession(&chucky.SessionOptions{
BaseOptions: chucky.BaseOptions{
Model: chucky.ModelClaudeSonnet,
MaxTurns: 5,
},
})
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
defer cancel()
// Send message
if err := session.Send(ctx, "What is 2 + 2?"); err != nil {
log.Fatal(err)
}
// Stream response
for msg := range session.Stream(ctx) {
switch m := msg.(type) {
case *chucky.SDKAssistantMessage:
text := chucky.GetAssistantText(m)
if text != "" {
fmt.Println("Assistant:", text)
}
case *chucky.SDKResultMessage:
fmt.Println("Result:", m.Result)
fmt.Printf("Cost: $%.6f\n", m.TotalCostUsd)
}
}
session.Close()
}