> ## 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

> Integre o TokenLab com o Vercel AI SDK usando provedores compatíveis com OpenAI ou nativos de Responses

## Visão Geral

<Note>
  **Tipo**: Framework ou Plataforma

  **Caminho Principal**: Padrão compatível com OpenAI

  **Nível de Confiança do Suporte**: Padrão de integração recomendado
</Note>

Para o TokenLab, o padrão mais estável no Vercel AI SDK é o **provedor compatível com OpenAI**.

Se você precisar especificamente do comportamento **nativo de Responses**, você pode alternar para o provedor OpenAI e manter a mesma URL base do TokenLab.

Trate esta página como um padrão de integração recomendado, não como uma garantia de que todos os helpers do Vercel AI SDK sejam suportados pelo TokenLab.

## Pacote do Provedor TokenLab

O TokenLab também mantém um wrapper de provedor leve para o 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);
```

## Padrão Recomendado: Provedor Compatível com 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',
});
```

## Gerar 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);
}
```

## Chamada de Ferramentas (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);
```

## Saída Estruturada

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

## Se você precisar explicitamente do comportamento 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>
  Use `@ai-sdk/openai-compatible` como o padrão seguro para integrações do tipo proxy. Mude para `@ai-sdk/openai` apenas quando você quiser explicitamente um caminho de provedor construído sobre `/v1/responses`.
</Note>

## Variáveis de Ambiente

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

## Melhores Práticas

<AccordionGroup>
  <Accordion title="Prefira openai-compatible primeiro">
    Para gateways de terceiros e backends de proxy, o `@ai-sdk/openai-compatible` geralmente é o ponto de partida menos propenso a erros.
  </Accordion>

  <Accordion title="Mude para Responses apenas quando necessário">
    Se você precisar de um comportamento de provedor vinculado a `/v1/responses`, altere o pacote do provedor deliberadamente em vez de misturar ambos os padrões em um único cliente.
  </Accordion>

  <Accordion title="Mantenha segredos no servidor">
    Nunca exponha sua chave de API do TokenLab em código do lado do cliente. Coloque a configuração do provedor em arquivos de servidor ou rotas de API.
  </Accordion>
</AccordionGroup>
