跳轉到主要內容

概覽

類型: 框架或平台主要路徑: OpenAI 相容預設值支援信心: 推薦的整合模式
對於 TokenLab 而言,Vercel AI SDK 中最穩定的預設選擇是 OpenAI 相容提供者 (OpenAI-compatible provider) 如果您明確需要 Responses-native 行為,您可以切換至 OpenAI 提供者並保留相同的 TokenLab base URL。 請將此頁面視為推薦的整合模式,而非保證 Vercel AI SDK 中的每個輔助功能都由 TokenLab 支援。

TokenLab 提供者套件

TokenLab 也為 Vercel AI SDK 維護了一個輕量級的提供者封裝:
npm install ai @tokenlabai/ai-sdk-provider
import { generateText } from 'ai';
import { tokenlab } from '@tokenlabai/ai-sdk-provider';

const { text } = await generateText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'Explain TokenLab in one sentence.',
});

console.log(text);

推薦預設:OpenAI 相容提供者

npm install ai @ai-sdk/openai-compatible
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

export const tokenlab = createOpenAICompatible({
  name: 'tokenlab',
  apiKey: process.env.TOKENLAB_API_KEY,
  baseURL: 'https://api.tokenlab.sh/v1',
});

生成文字 (Generate Text)

import { generateText } from 'ai';
import { tokenlab } from './tokenlab';

const { text } = await generateText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'Explain TokenLab in one sentence.',
});

console.log(text);

串流文字 (Stream Text)

import { streamText } from 'ai';
import { tokenlab } from './tokenlab';

const result = await streamText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'Write a short poem about coding.',
});

for await (const textPart of result.textStream) {
  process.stdout.write(textPart);
}

工具呼叫 (Tool Calling)

import { generateText, tool } from 'ai';
import { z } from 'zod';
import { tokenlab } from './tokenlab';

const result = await generateText({
  model: tokenlab.chatModel('gpt-5.4'),
  prompt: 'What is the weather in San Francisco?',
  tools: {
    weather: tool({
      description: 'Get weather in a location',
      parameters: z.object({
        location: z.string(),
      }),
      execute: async ({ location }) => ({
        location,
        temperature: 72,
        condition: 'sunny',
      }),
    }),
  },
});

console.log(result.text);

結構化輸出 (Structured Output)

import { generateObject } from 'ai';
import { z } from 'zod';
import { tokenlab } from './tokenlab';

const { object } = await generateObject({
  model: tokenlab.chatModel('gpt-5.4'),
  schema: z.object({
    name: z.string(),
    role: z.string(),
  }),
  prompt: 'Generate a fake developer profile.',
});

console.log(object);

如果您明確需要 Responses-native 行為

npm install ai @ai-sdk/openai
import { createOpenAI } from '@ai-sdk/openai';

export const tokenlabResponses = createOpenAI({
  apiKey: process.env.TOKENLAB_API_KEY,
  baseURL: 'https://api.tokenlab.sh/v1',
});
import { generateText } from 'ai';
import { tokenlabResponses } from './tokenlab-responses';

const { text } = await generateText({
  model: tokenlabResponses('gpt-5.4'),
  prompt: 'Explain TokenLab in one sentence.',
});
請使用 @ai-sdk/openai-compatible 作為代理風格整合的安全預設值。僅在您明確需要建立在 /v1/responses 之上的提供者路徑時,才切換至 @ai-sdk/openai

環境變數

# .env.local
TOKENLAB_API_KEY=sk-your-tokenlab-key

最佳實踐

對於第三方閘道和代理後端,@ai-sdk/openai-compatible 通常是最不容易出錯的起點。
如果您需要與 /v1/responses 綁定的提供者行為,請謹慎切換提供者套件,而不是在同一個客戶端中混合使用這兩種模式。
切勿在客戶端程式碼中暴露您的 TokenLab API 金鑰。請將提供者設定放在伺服器檔案或 API 路由中。