Open-source Go SDK
AI SDK, the Go way.
One unified API across 22+ providers. Streaming, structured output, MCP support, minimal dependencies.
go get github.com/zendev-sh/goai@latestcopy 1 package main
2
3 import (
4 "context"
5 "fmt"
6
7 "github.com/zendev-sh/goai"
8 "github.com/zendev-sh/goai/provider/openai"
9 )
10
11 func main() {
12 result, _ := goai.GenerateText(
13 context.Background(),
14 openai.Chat("gpt-4o"),
15 goai.WithPrompt("Explain goroutines."),
16 )
17 fmt.Println(result.Text)
18 }What's new
result, _ := goai.GenerateText(ctx,
openai.Chat("gpt-4o"),
goai.WithPrompt("Hello."),
)
fmt.Println(result.Text)stream, _ := goai.StreamText(ctx,
anthropic.Chat("claude-sonnet-4-6"),
goai.WithMessages(msgs...),
)
for chunk := range stream.TextStream() {
fmt.Print(chunk)
}type Recipe struct {
Name string `json:"name"`
Steps []string `json:"steps"`
}
recipe, _ := goai.GenerateObject[Recipe](ctx,
google.Chat("gemini-2.5-flash"),
goai.WithPrompt("Pho recipe"),
)calc := goai.Tool{
Name: "calc",
Execute: evalMath,
}
result, _ := goai.GenerateText(ctx, model,
goai.WithTools(calc),
goai.WithMaxSteps(5), // auto loop
goai.WithPrompt("127 * 43?"),
)// Any MCP server → GoAI tools
c := mcp.NewClient("app", "1.0",
mcp.WithTransport(
mcp.NewStdioTransport(
"npx", serverArgs),
),
)
c.Connect(ctx)
r, _ := c.ListTools(ctx, nil)
mcp.ConvertTools(c, r.Tools)// Auto-refresh OAuth tokens
ts := provider.CachedTokenSource(
func(ctx) (*provider.Token, error) {
tok, _ := oauth.Exchange(ctx, code)
return &provider.Token{
Value: tok.AccessToken,
}, nil
},
)
openai.Chat("gpt-4o",
openai.WithTokenSource(ts))v0.6.0 — OpenTelemetry tracing + metrics, context propagation via RequestInfo.Ctx, Langfuse data race fix. Changelog →
v0.5.8 — RunPod provider (serverless vLLM), Bedrock embeddings, and docs accuracy improvements. Changelog →
GoAI SDK is an open-source Go library for building AI applications. It provides one unified API across 22+ LLM providers — OpenAI, Anthropic, Google Gemini, AWS Bedrock, Azure OpenAI, Groq, Mistral, Cohere, DeepSeek, Ollama, vLLM, and more.
Inspired by the Vercel AI SDK, GoAI is designed idiomatically for Go with generics, interfaces, and channels.
MaxSteps)golang.org/x/oauth2; optional OTel integration in separate submodulepackage main
import (
"context"
"fmt"
"github.com/zendev-sh/goai"
"github.com/zendev-sh/goai/provider/openai"
)
func main() {
result, _ := goai.GenerateText(context.Background(),
openai.Chat("gpt-4o"),
goai.WithPrompt("Explain Go interfaces in one sentence."),
)
fmt.Println(result.Text)
}Connect to any MCP server and use its tools with GoAI:
transport := mcp.NewStdioTransport("npx", []string{"-y", "@modelcontextprotocol/server-github"})
client := mcp.NewClient("my-app", "1.0", mcp.WithTransport(transport))
_ = client.Connect(ctx)
defer client.Close()
tools, _ := client.ListTools(ctx, nil)
goaiTools := mcp.ConvertTools(client, tools.Tools)
result, _ := goai.GenerateText(ctx, model,
goai.WithTools(goaiTools...),
goai.WithPrompt("Search for popular Go repositories"),
goai.WithMaxSteps(5),
)3 transports (stdio, HTTP, SSE), tools/prompts/resources, pagination, notifications. Learn more →
OpenAI, Anthropic, Google Gemini, AWS Bedrock, Azure OpenAI, Vertex AI, Cohere, Mistral, xAI (Grok), Groq, DeepSeek, Fireworks, Together AI, DeepInfra, OpenRouter, Perplexity, Cerebras, Ollama, vLLM, RunPod, and any OpenAI-compatible endpoint.