SDKs
Go SDK
Install and use the Assisters Go SDK
Installation
go get github.com/assisters-dev/assisters-goQuick 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
| Method | Description |
|---|---|
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
}