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

> 使用 OpenAI 兼容或 Responses 原生提供程序将 TokenLab 集成到 Vercel AI SDK 中

## 概述

<Note>
  **类型**: 框架或平台

  **主要路径**: OpenAI 兼容默认值

  **支持置信度**: 推荐的集成模式
</Note>

对于 TokenLab 而言，Vercel AI SDK 中最稳定的默认选择是 **OpenAI 兼容提供程序 (OpenAI-compatible provider)**。

如果您明确需要 **Responses 原生 (Responses-native)** 行为，可以切换到 OpenAI 提供程序并保持相同的 TokenLab 基础 URL。

请将此页面视为推荐的集成模式，而非保证 Vercel AI SDK 中的每个辅助功能都受 TokenLab 支持。

## TokenLab 提供程序包

TokenLab 还为 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);
```

## 推荐默认值：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',
});
```

## 生成文本

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

## 流式文本

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

## 工具调用

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

## 结构化输出

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

## 如果您明确需要 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>
  对于代理式集成，请使用 `@ai-sdk/openai-compatible` 作为安全默认值。仅当您明确需要基于 `/v1/responses` 构建的提供程序路径时，才切换到 `@ai-sdk/openai`。
</Note>

## 环境变量

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

## 最佳实践

<AccordionGroup>
  <Accordion title="优先选择 openai-compatible">
    对于第三方网关和代理后端，`@ai-sdk/openai-compatible` 通常是最稳妥的起点。
  </Accordion>

  <Accordion title="仅在需要时切换到 Responses">
    如果您需要绑定到 `/v1/responses` 的提供程序行为，请谨慎切换提供程序包，而不是在同一个客户端中混合使用两种模式。
  </Accordion>

  <Accordion title="在服务器端保留密钥">
    切勿在客户端代码中暴露您的 TokenLab API 密钥。请将提供程序设置放在服务器文件或 API 路由中。
  </Accordion>
</AccordionGroup>
