Chuyển đến nội dung chính

Tổng quan

Loại: Framework hoặc PlatformĐường dẫn chính: Mặc định tương thích với OpenAIĐộ tin cậy hỗ trợ: Mô hình tích hợp được khuyến nghị
Đối với TokenLab, mặc định ổn định nhất trong Vercel AI SDK là provider tương thích với OpenAI. Nếu bạn đặc biệt cần hành vi Responses-native, bạn có thể chuyển sang provider OpenAI và giữ nguyên base URL của TokenLab. Hãy coi trang này là một mô hình tích hợp được khuyến nghị, không phải là sự đảm bảo rằng mọi helper trong Vercel AI SDK đều được TokenLab hỗ trợ.

Gói Provider TokenLab

TokenLab cũng duy trì một trình bao bọc (wrapper) provider nhẹ cho 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);

Mặc định được khuyến nghị: Provider tương thích với 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',
});

Tạo văn bản (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);

Truyền phát văn bản (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);
}

Gọi công cụ (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);

Đầu ra có cấu trúc (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);

Nếu bạn cần hành vi Responses-Native một cách rõ ràng

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.',
});
Sử dụng @ai-sdk/openai-compatible làm mặc định an toàn cho các tích hợp kiểu proxy. Chỉ chuyển sang @ai-sdk/openai khi bạn muốn một đường dẫn provider được xây dựng trên /v1/responses.

Biến môi trường (Environment Variables)

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

Các phương pháp tốt nhất (Best Practices)

Đối với các cổng kết nối (gateway) của bên thứ ba và backend proxy, @ai-sdk/openai-compatible thường là điểm khởi đầu ít gây bất ngờ nhất.
Nếu bạn cần hành vi provider gắn liền với /v1/responses, hãy chuyển đổi gói provider một cách có chủ đích thay vì trộn lẫn cả hai mô hình trong cùng một client.
Không bao giờ để lộ API key TokenLab của bạn trong mã phía client. Hãy đặt cấu hình provider trong các tệp server hoặc các API route.