Frameworks y plataformas
Vercel AI SDK
Integra TokenLab con Vercel AI SDK utilizando proveedores compatibles con OpenAI o nativos de Responses
Descripción general
Para TokenLab, la opción predeterminada más estable en Vercel AI SDK es el proveedor compatible con OpenAI.
Si necesitas específicamente un comportamiento nativo de Responses, puedes cambiar al proveedor de OpenAI y mantener la misma URL base de TokenLab.
Considera esta página como un patrón de integración recomendado, no como una garantía de que todos los asistentes de Vercel AI SDK sean compatibles con TokenLab.
Paquete del proveedor de TokenLab
TokenLab también mantiene un wrapper de proveedor ligero para 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);Recomendación predeterminada: Proveedor compatible con 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',
});Generar texto
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);Transmitir texto (Stream)
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);
}Llamada a herramientas (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);Salida estructurada
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);Si necesitas explícitamente un comportamiento nativo de Responses
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.',
});Utiliza @ai-sdk/openai-compatible como la opción predeterminada segura para integraciones de tipo proxy. Cambia a @ai-sdk/openai solo cuando necesites explícitamente una ruta de proveedor basada en /v1/responses.
Variables de entorno
# .env.local
TOKENLAB_API_KEY=sk-your-tokenlab-key