Go SDK
SDKMAX 完全兼容 OpenAI 接口协议,Go 项目可直接使用 OpenAI 官方 Go SDK(github.com/openai/openai-go),通过自定义 BaseURL 接入 SDKMAX。
安装
bash
go get github.com/openai/openai-go/v2初始化客户端
go
package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v2"
"github.com/openai/openai-go/v2/option"
)
func main() {
client := openai.NewClient(
option.WithAPIKey("sk-你的密钥"),
option.WithBaseURL("https://api.sdkmax.com/v1"),
)
resp, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: "gpt-4o",
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("介绍一下 SDKMAX 的核心能力"),
},
})
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}也可以通过环境变量配置:
bash
export OPENAI_API_KEY="sk-你的密钥"
export OPENAI_BASE_URL="https://api.sdkmax.com/v1"go
client := openai.NewClient() // 自动读取上面两个环境变量流式输出
go
stream := client.Chat.Completions.NewStreaming(context.Background(), openai.ChatCompletionNewParams{
Model: "gpt-4o",
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("写一首关于 AI 网关的短诗"),
},
})
for stream.Next() {
chunk := stream.Current()
if len(chunk.Choices) > 0 {
fmt.Print(chunk.Choices[0].Delta.Content)
}
}
if err := stream.Err(); err != nil {
panic(err)
}切换模型
go
models := []string{"gpt-4o", "claude-opus-4-8", "deepseek-chat"}
for _, model := range models {
resp, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
Model: model,
Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage("1+1等于几?")},
})
if err != nil {
fmt.Println(model, "error:", err)
continue
}
fmt.Println(model, "->", resp.Choices[0].Message.Content)
}错误处理
go
resp, err := client.Chat.Completions.New(context.Background(), params)
if err != nil {
var apiErr *openai.Error
if errors.As(err, &apiErr) {
// apiErr.StatusCode == 429 时表示额度耗尽或触发限流,建议退避重试
fmt.Println(apiErr.StatusCode, apiErr.Message)
}
return
}完整错误码含义见 错误码。
不使用官方 SDK?
标准库 net/http 也可以直接调用,只需设置 Authorization: Bearer sk-xxx 请求头并按 API 调用方法 拼装 JSON Body。
