Saltar al contenido principal

Descripción general

Tipo: Framework o plataformaRuta principal: Predeterminada compatible con OpenAINivel de confianza del soporte: Patrón de integración recomendado
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.4'),
  prompt: 'Explain TokenLab in one sentence.',
});

console.log(text);

Recomendación predeterminada: Proveedor compatible con 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',
});

Generar texto

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);

Transmitir texto (Stream)

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);
}

Llamada a herramientas (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);

Salida estructurada

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);

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.4'),
  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

Para gateways de terceros y backends proxy, @ai-sdk/openai-compatible suele ser el punto de partida menos propenso a errores.
Si necesitas un comportamiento de proveedor vinculado a /v1/responses, cambia el paquete del proveedor de forma deliberada en lugar de mezclar ambos patrones en un mismo cliente.
Nunca expongas tu API key de TokenLab en código del lado del cliente. Coloca la configuración del proveedor en archivos de servidor o rutas de API.