# 在 Vercel AI SDK 中使用 BigModel.io

> 在 Vercel AI SDK 中通过 @ai-sdk/openai-compatible 或 @ai-sdk/anthropic 调用 BigModel.io，两者的 baseURL 都是 https://bigmodel.io/v1，含 generateText、streamText 和工具调用。

网页版: https://bigmodel.io/zh-cn/docs/vercel-ai-sdk · 更新于 2026-10-18

Vercel AI SDK 可以通过两个 provider 调用 BigModel.io。`@ai-sdk/openai-compatible` 适用于任何 Key；`@ai-sdk/anthropic` 要求 Key 所在分组提供 `/v1/messages`。

| Provider | `baseURL` | 实际调用的接口 |
|---|---|---|
| `@ai-sdk/openai-compatible` | `https://bigmodel.io/v1` | `/v1/chat/completions` |
| `@ai-sdk/anthropic` | `https://bigmodel.io/v1` | `/v1/messages` |

> 和 Anthropic SDK 不同，`@ai-sdk/anthropic` 的默认 `baseURL` 已经包含 `/v1`，所以这里要填 `https://bigmodel.io/v1`，而不是根地址。

模型 ID 从[模型目录](https://bigmodel.io/zh-cn/models)复制，能否调用取决于 Key 所在分组。代码请在服务端运行（路由处理器、Server Action、脚本），不要放在浏览器里，以免泄露 Key。

```bash
export BIGMODEL_API_KEY="sk-..."
```

## 安装

```bash
npm install ai @ai-sdk/openai-compatible @ai-sdk/anthropic zod
```

## OpenAI 兼容 provider

```ts [TypeScript]
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { generateText } from "ai";

const bigmodel = createOpenAICompatible({
  name: "bigmodel",
  baseURL: "https://bigmodel.io/v1",
  apiKey: process.env.BIGMODEL_API_KEY,
  includeUsage: true,
});

const { text, usage } = await generateText({
  model: bigmodel("glm-5.3"),
  prompt: "用三句话解释什么是向量数据库。",
});
console.log(text, usage);
```

`includeUsage: true` 让流式响应也返回 token 用量。如果依赖 JSON Schema 输出，设置 `supportsStructuredOutputs` 前先看[结构化输出](https://bigmodel.io/zh-cn/docs/structured-output)。

## Anthropic provider

```ts [TypeScript]
import { createAnthropic } from "@ai-sdk/anthropic";
import { generateText } from "ai";

const bigmodelAnthropic = createAnthropic({
  baseURL: "https://bigmodel.io/v1",
  apiKey: process.env.BIGMODEL_API_KEY, // 以 x-api-key 发送；想用 Bearer 就改用 authToken
});

const { text } = await generateText({
  model: bigmodelAnthropic("glm-5.3"),
  prompt: "用三句话解释什么是向量数据库。",
});
console.log(text);
```

## 流式输出

```ts [TypeScript]
import { streamText } from "ai";

const result = streamText({
  model: bigmodel("glm-5.3"),
  prompt: "写一首关于延迟的俳句。",
});
for await (const delta of result.textStream) {
  process.stdout.write(delta);
}
```

在 Next.js 路由处理器里，直接返回 `result.toTextStreamResponse()` 即可。

## 工具调用

工具按 provider 的原生格式发送并转给模型。模型是否调用工具取决于模型本身。

```ts [TypeScript]
import { generateText, tool } from "ai";
import { z } from "zod";

const result = await generateText({
  model: bigmodel("glm-5.3"),
  prompt: "杭州现在天气怎么样？",
  tools: {
    getWeather: tool({
      description: "查询城市当前天气",
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => `${city}晴`,
    }),
  },
});
console.log(result.toolCalls, result.toolResults);
```

`inputSchema` 是 AI SDK 5 的写法，4.x 版本叫 `parameters`。

## 验证配置

运行 `generateText` 示例。返回回答且 `usage` 不为 0，就说明 Base URL 和 Key 正确。[用量](https://bigmodel.io/usage)页面应出现端点为 `/v1/chat/completions`（Anthropic provider 为 `/v1/messages`）的记录。

## 常见问题排查

**`@ai-sdk/anthropic` 返回 404。** 要么 `baseURL` 填了根地址 `https://bigmodel.io`，SDK 实际请求的是 `/messages`；要么 Key 的分组只支持 Chat Completions（`... platform only supports /v1/chat/completions`）。改成 `https://bigmodel.io/v1`，或换用 `@ai-sdk/openai-compatible`。

**`@ai-sdk/openai-compatible` 返回 404。** `baseURL` 少了 `/v1`。

**401 `INVALID_API_KEY` 或 `API_KEY_REQUIRED`。** 服务端运行环境里没有设置 `BIGMODEL_API_KEY`（检查托管平台的环境变量）。

**503 `No available accounts: no available accounts supporting model: ...`。** 模型 ID 写错或不在 Key 的分组里。从[模型目录](https://bigmodel.io/zh-cn/models)复制 ID。

**流式时 `usage` 为空。** 在 `createOpenAICompatible` 中设置 `includeUsage: true`。

**403 `INSUFFICIENT_BALANCE` 或 429。** 到[充值](https://bigmodel.io/purchase)页面充值；429 见[限额与速率](https://bigmodel.io/zh-cn/docs/rate-limits)。

## 相关文档

- [OpenAI SDK](https://bigmodel.io/zh-cn/docs/openai-sdk-langchain) 和 [Anthropic SDK](https://bigmodel.io/zh-cn/docs/anthropic-sdk)
- [OpenCode](https://bigmodel.io/zh-cn/docs/opencode) 底层使用的就是 `@ai-sdk/openai-compatible`
- [流式输出](https://bigmodel.io/zh-cn/docs/streaming)和[工具调用](https://bigmodel.io/zh-cn/docs/tool-calling)
