Assisters API
SDKs

Go SDK

Install and use the Assisters Go SDK

Installation

go get github.com/assisters-dev/assisters-go

Quick Start

package main

import (
	"context"
	"fmt"
	"log"
	"os"

	assisters "github.com/assisters-dev/assisters-go"
)

func main() {
	client := assisters.NewClient(os.Getenv("ASSISTERS_API_KEY"))

	resp, err := client.Chat.Completions.Create(context.Background(), assisters.ChatCompletionRequest{
		Model: "assisters-chat-v1",
		Messages: []assisters.Message{
			{Role: "user", Content: "Hello, world!"},
		},
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(resp.Choices[0].Message.Content)
}

Available Methods

MethodDescription
client.Chat.Completions.Create(ctx, req)Create a chat completion (set Stream: true for streaming)
client.Chat.Completions.CreateStream(ctx, req)Create a streaming chat completion, returns *Stream[ChatCompletionChunk]
client.Embeddings.Create(ctx, req)Generate embeddings for one or more inputs
client.Moderations.Create(ctx, req)Run content moderation on text
client.Rerank.Create(ctx, req)Rerank a list of documents against a query
client.Models.List(ctx)List all available models
client.Audio.Transcriptions.Create(ctx, req)Transcribe audio to text

Key Types

// ChatCompletionRequest
type ChatCompletionRequest struct {
	Model       string    `json:"model"`
	Messages    []Message `json:"messages"`
	Temperature float64   `json:"temperature,omitempty"`
	MaxTokens   int       `json:"max_tokens,omitempty"`
	Stream      bool      `json:"stream,omitempty"`
}

// EmbeddingRequest
type EmbeddingRequest struct {
	Model string   `json:"model"`
	Input []string `json:"input"`
}

// RerankRequest
type RerankRequest struct {
	Model     string   `json:"model"`
	Query     string   `json:"query"`
	Documents []string `json:"documents"`
	TopN      int      `json:"top_n,omitempty"`
}

// TranscriptionRequest
type TranscriptionRequest struct {
	File     io.Reader `json:"-"`
	Filename string    `json:"-"`
	Model    string    `json:"model"`
	Language string    `json:"language,omitempty"`
}

Streaming

stream, err := client.Chat.Completions.CreateStream(ctx, assisters.ChatCompletionRequest{
	Model:    "assisters-chat-v1",
	Messages: []assisters.Message{{Role: "user", Content: "Tell me a story"}},
	Stream:   true,
})
if err != nil {
	log.Fatal(err)
}
defer stream.Close()

for {
	chunk, err := stream.Recv()
	if errors.Is(err, io.EOF) {
		break
	}
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(chunk.Choices[0].Delta.Content)
}

Error Handling

resp, err := client.Chat.Completions.Create(ctx, req)
if err != nil {
	var apiErr *assisters.APIError
	if errors.As(err, &apiErr) {
		fmt.Printf("API error %d: %s\n", apiErr.StatusCode, apiErr.Message)
	} else {
		fmt.Printf("Network error: %v\n", err)
	}
	return
}