快速开始
快速开始
前提条件
第 1 步:设置环境
$ export JOY_TOKEN_API_KEY="jt_xxx" $ export JOY_TOKEN_API_BASE_URL="https://api-dev.joytokens.ai" $ export JOY_TOKEN_OPENAI_BASE_URL="https://api-dev.joytokens.ai/openai/v1"
第 2 步:安装 SDK
TypeScript:
$ npm install @joytoken/client-sdk-ts
Go:
$ go get github.com/joytoken/client-sdk-golang
第 3 步:发起调用
TypeScript:
1 import { JoyTokenClient } from "@joytoken/client-sdk-ts"; 2 3 const joytoken = new JoyTokenClient({ 4 apiKey: process.env.JOY_TOKEN_API_KEY, 5 apiBaseUrl: process.env.JOY_TOKEN_API_BASE_URL, 6 openAIBaseUrl: process.env.JOY_TOKEN_OPENAI_BASE_URL, 7 }); 8 9 const completion = await joytoken.chat.completions.create({ 10 model: "auto", 11 messages: [{ role: "user", content: "Reply with exactly: pong" }], 12 }); 13 14 console.log(completion.choices[0]?.message?.content);
Go:
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 ) 6 7 completion, err := client.CreateChatCompletion(ctx, joytoken.ChatCompletionRequest{ 8 Model: "auto", 9 Messages: []joytoken.ChatMessage{ 10 {Role: "user", Content: "Reply with exactly: pong"}, 11 }, 12 }) 13 if err != nil { 14 return err 15 } 16 fmt.Println(completion.Choices[0].Message.Content)
第 4 步:检查结果
| 位置 | 应看到 |
|---|---|
| 程序输出 | pong |
| JoyToken Logs | 请求路径是 /openai/v1/chat/completions |
| JoyToken Usage | 本次调用产生 tokens 和 credits |
常见错误
| 错误 | 处理方式 |
|---|---|
401 Unauthorized | 检查 JOY_TOKEN_API_KEY 是否存在且完整 |
403 Forbidden | 检查 API Key 策略是否允许 auto 或目标模型 |
402 insufficient_quota | 检查钱包余额和 Key 预算 |
| 请求超时 | 设置更大的 SDK timeout,或检查到所选环境的网络 |