Uygulamayı aç
Moonborn — Developers

Go

Moonborn'un resmi Go SDK'sı. Idiomatic, context-aware client; API'nin bir release gerisinde.

Go SDK github.com/moon-born/sdk-go'da yaşar. Kanonik OpenAPI spec'inden generate edilir, Go için idiomatic: context-first method'lar, tipli error'lar, kaputun altında standart net/http.

Release cadence: her API release'inden bir hafta içinde gönderir. go.mod'unu hedeflediğin API version'una pin'le.

Kur

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

İlk çağrı

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:      "İstanbul'dan 34 yaşında bir kurucu. Parlak ama huzursuz.",
        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:   "Sessiz bir gerçek söyle.",
})
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":
        // apiErr.RetryAfter'dan sonra retry
    case "not_found":
        // ...
    }
}

Client 5xx + 429'da exponential backoff'la auto-retry yapar (30s'de cap'li). Options.RetryConfig üzerinden konfigüre et.

Idempotency

Write metodları (Create*, Fork*, Refine*) default'ta bir idempotency key auto-generate eder. Çağrı başı opsiyonlardan override:

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

Tarif

Her Go SDK her tier'da çalışır — feature gate'leri sunucu tarafında enforce edilir.

Sonraki