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-provider
import { 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 zod
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',
});

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/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.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

Mejores prácticas

En esta página