> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Vercel AI SDK

> Integra TokenLab con Vercel AI SDK utilizando proveedores compatibles con OpenAI o nativos de Responses

## Descripción general

<Note>
  **Tipo**: Framework o plataforma

  **Ruta principal**: Predeterminada compatible con OpenAI

  **Nivel de confianza del soporte**: Patrón de integración recomendado
</Note>

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:

```bash theme={null}
npm install ai @tokenlabai/ai-sdk-provider
```

```typescript theme={null}
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

```bash theme={null}
npm install ai @ai-sdk/openai-compatible
```

```typescript theme={null}
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

```typescript theme={null}
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)

```typescript theme={null}
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)

```typescript theme={null}
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

```typescript theme={null}
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

```bash theme={null}
npm install ai @ai-sdk/openai
```

```typescript theme={null}
import { createOpenAI } from '@ai-sdk/openai';

export const tokenlabResponses = createOpenAI({
  apiKey: process.env.TOKENLAB_API_KEY,
  baseURL: 'https://api.tokenlab.sh/v1',
});
```

```typescript theme={null}
import { generateText } from 'ai';
import { tokenlabResponses } from './tokenlab-responses';

const { text } = await generateText({
  model: tokenlabResponses('gpt-5.4'),
  prompt: 'Explain TokenLab in one sentence.',
});
```

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

## Variables de entorno

```bash theme={null}
# .env.local
TOKENLAB_API_KEY=sk-your-tokenlab-key
```

## Mejores prácticas

<AccordionGroup>
  <Accordion title="Prefiere openai-compatible primero">
    Para gateways de terceros y backends proxy, `@ai-sdk/openai-compatible` suele ser el punto de partida menos propenso a errores.
  </Accordion>

  <Accordion title="Cambia a Responses solo cuando sea necesario">
    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.
  </Accordion>

  <Accordion title="Mantén los secretos en el servidor">
    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.
  </Accordion>
</AccordionGroup>
