框架與平台
Vercel AI SDK
使用 OpenAI 相容或 Responses-native 提供者將 TokenLab 整合至 Vercel AI SDK
概覽
類型: 框架或平台
主要路徑: 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-providerimport { generateText } from 'ai';
import { tokenlab } from '@tokenlabai/ai-sdk-provider';
const { text } = await generateText({
model: tokenlab.chatModel('gpt-5.6-terra'),
prompt: 'Explain TokenLab in one sentence.',
});
console.log(text);推薦預設:OpenAI 相容提供者
npm install ai @ai-sdk/openai-compatible zodimport { 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.6-terra'),
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.6-terra'),
prompt: 'Write a short poem about coding.',
});
for await (const textPart of result.textStream) {
process.stdout.write(textPart);
}工具呼叫 (Tool Calling)
import { generateText, stepCountIs, tool } from 'ai';
import { z } from 'zod';
import { tokenlab } from './tokenlab';
const result = await generateText({
model: tokenlab.chatModel('gpt-5.6-terra'),
prompt: 'What is the weather in San Francisco?',
stopWhen: stepCountIs(2),
tools: {
weather: tool({
description: 'Get weather in a location',
inputSchema: 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.6-terra'),
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/openaiimport { 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.6-terra'),
prompt: 'Explain TokenLab in one sentence.',
});請使用 @ai-sdk/openai-compatible 作為代理風格整合的安全預設值。僅在您明確需要建立在 /v1/responses 之上的提供者路徑時,才切換至 @ai-sdk/openai。
環境變數
# .env.local
TOKENLAB_API_KEY=sk-your-tokenlab-key