Go SDK
前提条件
第 1 步:安装
$ go get github.com/joytoken/client-sdk-golang
第 2 步:创建客户端
1 client := 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 步:聊天补全
1 completion, err := client.CreateChatCompletion(ctx, joytoken.ChatCompletionRequest{ 2 Model: "auto", 3 Messages: []joytoken.ChatMessage{ 4 {Role: "user", Content: "Reply with exactly: pong"}, 5 }, 6 }) 7 if err != nil { 8 return err 9 } 10 fmt.Println(completion.Choices[0].Message.Content)
第 4 步:流式响应
1 stream, err := client.StreamChatCompletion(ctx, joytoken.ChatCompletionRequest{ 2 Model: "auto", 3 Messages: []joytoken.ChatMessage{ 4 {Role: "user", Content: "Count from 1 to 5."}, 5 }, 6 }) 7 if err != nil { 8 return err 9 } 10 defer stream.Close() 11 12 for { 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 步:模型列表
1 models, err := client.ListModels(ctx) 2 if err != nil { 3 return err 4 } 5 for _, model := range models.Data { 6 fmt.Println(model.ID) 7 }
常见错误
| 错误 | 处理方式 |
|---|---|
*joytoken.APIError | 读取 StatusCode、RequestID、Body |
401 Unauthorized | 检查 JOY_TOKEN_API_KEY |
| 流式响应中断 | 关闭 stream,并重试幂等请求 |