在 Vercel AI SDK 里调用 TeamoRouter

Vercel AI SDK(ai 包)通过它的 OpenAI 兼容 provider 接 TeamoRouter:把 Base URL 换成 TeamoRouter、填 TeamoRouter 的 API Key、模型 ID 用我们目录里的就行,generateText、streamText 和工具调用的代码都不用改。Claude 模型改用 Anthropic 原生 provider(见第 4 节)。

新账号余额为 0,先充值再调用。 第一次请求前先充值,$5 起。如果请求返回 402(OpenAI 格式为 400)、提示「钱包余额不足」,说明余额为 0,不是 Base URL 或 Key 配错了,充值后重试即可。

没有海外卡?也可以用 USDT 充值:在充值弹窗点「Crypto支付」,用 USDT、USDC 或 ETH,从币安、OKX 等交易所 App 转账即可——收银台会按金额显示可用网络(BEP20 从 $5 起就能用),不用装钱包插件(教程)。

1. 安装和配置

在 TeamoRouter 控制台 创建 API Key,放进环境变量:

bash
npm install ai @ai-sdk/openai-compatible zod
export TEAMOROUTER_API_KEY=sk-teamo-...

provider 建一次,到处复用:

ts
// teamorouter.ts
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';

export const teamorouter = createOpenAICompatible({
  name: 'teamorouter',
  baseURL: 'https://api.teamorouter.com/v1',
  apiKey: process.env.TEAMOROUTER_API_KEY,
  includeUsage: true, // 流式输出时也返回用量
});
配置项 填什么
Base URL https://api.teamorouter.com/v1
API Key sk-teamo-...,以 Authorization: Bearer 发送
模型 ID 我们目录里的 ID,不带 厂商/ 前缀,例如 deepseek-flash

可用的模型 ID:

可用模型 ID37 个模型

OpenAIGPT9

  • gpt-6.1-sol
  • gpt-6-astra
  • gpt-6-sol
  • gpt-6-luna
  • gpt-5.6-sol
  • gpt-5.6-terra
  • gpt-5.6-luna
  • gpt-5.5
  • gpt-5.4

ClaudeClaude12

  • claude-opus-5-5
  • claude-sonnet-5-5
  • claude-haiku-5-5
  • claude-fable-5-1
  • claude-opus-5
  • claude-fable-5
  • claude-sonnet-5
  • claude-opus-4-8
  • claude-opus-4-7
  • claude-opus-4-6
  • claude-sonnet-4-6
  • claude-haiku-4-5

GeminiGemini5

  • gemini-3.8-flash
  • gemini-3.7-flash
  • gemini-3.6-flash
  • gemini-3.5-flash-lite
  • gemini-3.1-pro-preview

DeepSeekDeepSeek6

  • deepseek-flash
  • deepseek-flash-free
  • deepseek-v4-flash-vision-exp
  • deepseek-v4-pro
  • deepseek-v4-flash
  • deepseek-v4-flash-free

ZhipuGLM4

  • glm-5.3-flash
  • glm-5.3-flash-free
  • glm-5.3
  • glm-5.2

GrokGrok1

  • grok-4.6

2. generateText 和 streamText

ts
import { generateText, streamText } from 'ai';
import { teamorouter } from './teamorouter';

const { text, usage } = await generateText({
  model: teamorouter('deepseek-flash'),
  prompt: '用一句话解释 API 网关是做什么的。',
});
console.log(text, usage);

const result = streamText({
  model: teamorouter('deepseek-flash'),
  prompt: '写一首关于延迟的俳句。',
});
for await (const chunk of result.textStream) {
  process.stdout.write(chunk);
}

3. 工具调用

ts
import { generateText, tool, stepCountIs } from 'ai';
import { z } from 'zod';
import { teamorouter } from './teamorouter';

const { text } = await generateText({
  model: teamorouter('deepseek-flash'),
  tools: {
    getWeather: tool({
      description: '查询某个城市当前的气温',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => ({ city, temperatureC: 22 }),
    }),
  },
  stopWhen: stepCountIs(3), // 先让模型调用工具,再给出回答
  prompt: '上海现在天气怎么样?',
});
console.log(text);

4. Claude:用 Anthropic provider

Claude 走 Anthropic 原生协议。用 @ai-sdk/anthropic,Base URL 指向 TeamoRouter;通过 OpenAI 兼容 provider 调 Claude,可能丢掉提示缓存和思考(thinking)。

bash
npm install @ai-sdk/anthropic
ts
import { createAnthropic } from '@ai-sdk/anthropic';
import { generateText } from 'ai';

const anthropic = createAnthropic({
  baseURL: 'https://api.teamorouter.com/v1', // 请求会发到 /v1/messages
  apiKey: process.env.TEAMOROUTER_API_KEY,  // 以 x-api-key 发送
});

const { text } = await generateText({
  model: anthropic('claude-sonnet-5-5'),
  prompt: '帮我检查这个函数有没有 bug:...',
});

streamText、工具调用,以及 Anthropic 专有的 providerOptions(提示缓存、思考)用法和直连 Anthropic 官方一样。模型 ID 用 claude-opus-5-5、claude-sonnet-5-5、claude-haiku-5-5 这类。

GPT 模型继续用上面的 OpenAI 兼容 provider 即可。

可能遇到的报错

状态码 含义 怎么办
401 没带 API Key 或 Key 不对 检查 TEAMOROUTER_API_KEY,Key 应以 sk-teamo- 开头
402(OpenAI 格式为 400),提示「钱包余额不足」 余额为 0 充值后重试
400 model_not_available 模型 ID 不在目录里,或带了 厂商/ 前缀 用上面列表里的 ID,去掉前缀

原始 HTTP 接口、流式和缓存的细节见 API 接入指南。

准备好了?三步即可开始登录控制台 · 购买额度 · 创建 API Key
DiscordGet community help instantly