App öffnen
Moonborn — Developers

Go

Das offizielle Go-SDK für Moonborn. Idiomatischer kontextbewusster Client; ein Release-Lag hinter der API.

Das Go-SDK lebt unter github.com/moon-born/sdk-go. Aus der kanonischen OpenAPI-Spec generiert, idiomatisch für Go: Context- first-Methoden, typisierte Errors, unter der Haube Standard net/http.

Release-Kadenz: versendet innerhalb einer Woche jedes API- Releases. Pinne deinen go.mod auf die API-Version, die du anvisierst.

Installieren

go get github.com/moon-born/sdk-go

Erster Call

package main
 
import (
    "context"
    "fmt"
    "os"
 
    "github.com/moon-born/sdk-go/moonborn"
)
 
func main() {
    client := moonborn.NewClient(moonborn.Options{
        ApiKey: os.Getenv("MOONBORN_API_KEY"),
    })
 
    ctx := context.Background()
    persona, err := client.Personas.CreatePersona(ctx, moonborn.CreatePersonaInput{
        Intent:      "Ein 34-jähriger Gründer aus Istanbul. Brillant, aber rastlos.",
        WorkspaceID: "ws_...",
    })
    if err != nil {
        panic(err)
    }
    fmt.Println(persona.ID, persona.Status)
}

Streaming-Chat

stream, err := client.Chat.StreamMessage(ctx, moonborn.StreamMessageInput{
    SessionID: session.ID,
    Content:   "Erzähl mir eine stille Wahrheit.",
})
if err != nil { /* ... */ }
defer stream.Close()
 
for chunk := range stream.Events() {
    switch chunk.Type {
    case moonborn.ChunkTypeToken:
        fmt.Print(chunk.Delta)
    case moonborn.ChunkTypeCompleted:
        fmt.Printf("\ndrift: %.2f\n", chunk.DriftScore)
    }
}

Error-Handling

_, err := client.Personas.GetPersona(ctx, moonborn.GetPersonaInput{ID: "persona_..."})
if apiErr, ok := err.(*moonborn.APIError); ok {
    switch apiErr.Code {
    case "rate_limited":
        // retry nach apiErr.RetryAfter
    case "not_found":
        // ...
    }
}

Der Client retry't 5xx + 429 automatisch mit Exponential Backoff (bei 30s gekappt). Konfiguriere via Options.RetryConfig.

Idempotency

Write-Methoden (Create*, Fork*, Refine*) auto-generieren per Default einen Idempotency-Key. Überschreibe via Per-Call-Options:

persona, err := client.Personas.CreatePersona(ctx, input, moonborn.WithIdempotencyKey("my-key-123"))

Tarif

Jedes Go-SDK funktioniert auf jedem Tier — Feature-Gates werden serverseitig durchgesetzt.

Weiter