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

> Intégrez TokenLab avec le Vercel AI SDK en utilisant des fournisseurs compatibles OpenAI ou natifs Responses

## Aperçu

<Note>
  **Type** : Framework ou Plateforme

  **Chemin principal** : Compatible OpenAI par défaut

  **Niveau de confiance du support** : Modèle d'intégration recommandé
</Note>

Pour TokenLab, le défaut le plus stable dans le Vercel AI SDK est le **fournisseur compatible OpenAI**.

Si vous avez spécifiquement besoin d'un comportement **natif Responses**, vous pouvez passer au fournisseur OpenAI tout en conservant la même URL de base TokenLab.

Considérez cette page comme un modèle d'intégration recommandé, et non comme une garantie que chaque assistant du Vercel AI SDK est pris en charge par TokenLab.

## Package du fournisseur TokenLab

TokenLab maintient également un wrapper de fournisseur léger pour le 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);
```

## Recommandation par défaut : Fournisseur compatible 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',
});
```

## Générer du texte

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

## Diffuser du texte (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);
}
```

## Appel d'outils (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);
```

## Sortie structurée

```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 vous avez explicitement besoin d'un comportement natif 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>
  Utilisez `@ai-sdk/openai-compatible` comme valeur par défaut sécurisée pour les intégrations de type proxy. Ne passez à `@ai-sdk/openai` que si vous souhaitez explicitement un chemin de fournisseur basé sur `/v1/responses`.
</Note>

## Variables d'environnement

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

## Bonnes pratiques

<AccordionGroup>
  <Accordion title="Privilégiez openai-compatible en premier">
    Pour les passerelles tierces et les backends proxy, `@ai-sdk/openai-compatible` est généralement le point de départ le plus simple et le plus prévisible.
  </Accordion>

  <Accordion title="Passez à Responses uniquement si nécessaire">
    Si vous avez besoin d'un comportement de fournisseur lié à `/v1/responses`, changez délibérément de package de fournisseur au lieu de mélanger les deux modèles dans un même client.
  </Accordion>

  <Accordion title="Gardez les secrets sur le serveur">
    N'exposez jamais votre clé API TokenLab dans le code côté client. Placez la configuration du fournisseur dans des fichiers serveur ou des routes API.
  </Accordion>
</AccordionGroup>
