Go SDK

前提条件

项目
模块github.com/joytoken/client-sdk-golang
Go1.22+
API KeyJOY_TOKEN_API_KEY
API Base URL环境 选择 JOY_TOKEN_API_BASE_URL
OpenAI Base URL环境 选择 JOY_TOKEN_OPENAI_BASE_URL

第 1 步:安装

$go get github.com/joytoken/client-sdk-golang

第 2 步:创建客户端

1client := joytoken.NewClient(
2 joytoken.WithAPIKey(os.Getenv("JOY_TOKEN_API_KEY")),
3 joytoken.WithAPIBaseURL(os.Getenv("JOY_TOKEN_API_BASE_URL")),
4 joytoken.WithOpenAIBaseURL(os.Getenv("JOY_TOKEN_OPENAI_BASE_URL")),
5)

第 3 步:聊天补全

1completion, err := client.CreateChatCompletion(ctx, joytoken.ChatCompletionRequest{
2 Model: "auto",
3 Messages: []joytoken.ChatMessage{
4 {Role: "user", Content: "Reply with exactly: pong"},
5 },
6})
7if err != nil {
8 return err
9}
10fmt.Println(completion.Choices[0].Message.Content)

第 4 步:流式响应

1stream, err := client.StreamChatCompletion(ctx, joytoken.ChatCompletionRequest{
2 Model: "auto",
3 Messages: []joytoken.ChatMessage{
4 {Role: "user", Content: "Count from 1 to 5."},
5 },
6})
7if err != nil {
8 return err
9}
10defer stream.Close()
11
12for {
13 chunk, err := stream.Recv()
14 if errors.Is(err, io.EOF) {
15 break
16 }
17 if err != nil {
18 return err
19 }
20 fmt.Print(chunk.Choices[0].Delta.Content)
21}

第 5 步:模型列表

1models, err := client.ListModels(ctx)
2if err != nil {
3 return err
4}
5for _, model := range models.Data {
6 fmt.Println(model.ID)
7}

常见错误

错误处理方式
*joytoken.APIError读取 StatusCodeRequestIDBody
401 Unauthorized检查 JOY_TOKEN_API_KEY
流式响应中断关闭 stream,并重试幂等请求