在 Vercel AI SDK 中使用 BigModel.io

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

本页目录
  1. 安装
  2. OpenAI 兼容 provider
  3. Anthropic provider
  4. 流式输出
  5. 工具调用
  6. 验证配置
  7. 常见问题排查
  8. 相关文档

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 从模型目录复制,能否调用取决于 Key 所在分组。代码请在服务端运行(路由处理器、Server Action、脚本),不要放在浏览器里,以免泄露 Key。

bash
export BIGMODEL_API_KEY="sk-..."

#安装

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

#OpenAI 兼容 provider

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 前先看结构化输出。

#Anthropic provider

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

#流式输出

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 的原生格式发送并转给模型。模型是否调用工具取决于模型本身。

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 正确。用量页面应出现端点为 /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 的分组里。从模型目录复制 ID。

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

403 INSUFFICIENT_BALANCE 或 429。 到充值页面充值;429 见限额与速率。

#相关文档

更新于 · 以 Markdown 查看