
通过 Vercel AI SDK 使用 Claude:createAnthropic baseURL、流式传输和问题修复
AI SDK 的 Anthropic 提供商, @ai-sdk/anthropic,与 Messages API 通信。其 baseURL 默认值为 https://api.anthropic.com/v1,因此使用网关时,需要替换整个前缀,包括 /v1。OpenCode、Kilo Code 和许多智能体框架底层都使用同一个提供商,因此它们的配置中也会出现相同的规则。
安装
npm i ai @ai-sdk/anthropic创建提供商
import { createAnthropic } from '@ai-sdk/anthropic';
export const anthropic = createAnthropic({
baseURL: 'https://aiprimetech.io/v1', // replaces https://api.anthropic.com/v1
apiKey: process.env.AIPRIME_API_KEY, // sent as x-api-key; defaults to ANTHROPIC_API_KEY
});以下包中没有用于设置基础 URL 的环境变量:
@ai-sdk/anthropic:请传入 baseURL ,在代码中设置。直接使用 anthropic 导入时,始终指向 Anthropic 自己的端点。generateText 和 streamText
import { generateText } from 'ai';
import { anthropic } from './lib/anthropic';
const { text, usage } = await generateText({
model: anthropic('claude-sonnet-5'),
prompt: 'Explain idempotency keys in two sentences.',
});
console.log(text, usage);import { streamText } from 'ai';
import { anthropic } from './lib/anthropic';
const result = streamText({
model: anthropic('claude-sonnet-5'),
prompt: 'Write a haiku about load balancers.',
});
for await (const chunk of result.textStream) process.stdout.write(chunk);这两个调用都接受 maxRetries (默认值为 2),用于处理 429 和 5xx 等暂时性故障。
思考与提示词缓存
Anthropic 专用选项应放在 providerOptions.anthropic中。当前模型使用自适应思考:
const { text } = await generateText({
model: anthropic('claude-sonnet-5'),
providerOptions: { anthropic: { thinking: { type: 'adaptive' } } },
prompt: 'Plan a zero-downtime database migration in five steps.',
});使用以下选项缓存较长且稳定的系统提示词: cacheControl;随后,缓存读取用量会显示在 usage.inputTokenDetails.cacheReadTokens中。长度低于模型最低要求的提示词不会被缓存。
const result = await generateText({
model: anthropic('claude-sonnet-5'),
messages: [
{
role: 'system',
content: longStableInstructions,
providerOptions: { anthropic: { cacheControl: { type: 'ephemeral' } } },
},
{ role: 'user', content: question },
],
});OpenAI 兼容替代方案
网关也支持 OpenAI Chat Completions 格式,因此 @ai-sdk/openai-compatible 可以使用相同的 /v1 基础 URL。这是在同一个密钥下使用 GPT 模型的接入方式;对于 Claude,上述原生提供商可以保留思考和缓存控制功能。
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
const gateway = createOpenAICompatible({
name: 'aiprime',
baseURL: 'https://aiprimetech.io/v1',
apiKey: process.env.AIPRIME_API_KEY,
});
// gateway('claude-sonnet-5') or a GPT model ID故障排查
| 你会看到什么 | 原因 | 解决方法 |
|---|---|---|
JSON 解析错误,响应以 < | baseURL 不带 /v1:请求访问了网站 | baseURL: 'https://aiprimetech.io/v1' |
404 page not found | /v1 两次 | 恰好一个 /v1 |
Invalid API key | process.env 的值在该运行环境中未定义(无服务器函数和边缘函数有各自的环境变量),因此 SDK 回退到 ANTHROPIC_API_KEY | 在部署环境中设置该变量 |
| 模型不受支持 | 模型 ID 已过时或拼写错误 | 使用下表中的 ID |
Concurrency limit exceeded for user | Promise.all 用于大型数组 | 限制并行调用,例如使用 p-limit |
No available accounts / 503 | 上游容量暂时不足 | 会自动重试;请提高 maxRetries |
| 模型 ID | 适用场景 |
|---|---|
claude-sonnet-5 | 编程和智能体任务的默认选择:速度快、能力强、价格适中。 |
claude-opus-5-5 | 更复杂的推理、大规模重构、长时间运行的智能体任务。 |
claude-fable-5-1 | 能力最强,价格也最高;留给最困难的任务使用。 |
claude-haiku-4-5 | 价格低、速度快:标题、摘要、分类和小步骤。 |
常见问题
@ai-sdk/anthropic 的默认 baseURL 是什么?
https://api.anthropic.com/v1. 网关会替换整个前缀,因此必须以 /v1 结尾,例如 https://aiprimetech.io/v1.
是否有环境变量可设置 AI SDK Anthropic 的基础 URL?
没有。提供商会从环境变量中读取 ANTHROPIC_API_KEY(或 ANTHROPIC_AUTH_TOKEN),但基础 URL 需要通过 createAnthropic({ baseURL }) 设置。
为什么 AI SDK 调用 Claude 时会出现解析错误?
通常是因为 baseURL 缺少 /v1,导致请求访问了网站,返回 HTML 而不是 JSON。
使用 Claude 时应该选择 @ai-sdk/anthropic 还是 @ai-sdk/openai-compatible?
@ai-sdk/anthropic:它使用原生 Messages API,因此支持思考和提示词缓存。对于 GPT 模型,请使用 OpenAI 兼容提供商。
几分钟内开始使用 Claude
获取 API 密钥,无需 Anthropic 账户,也无需加入候补名单。
获取你的 API 密钥AI Prime Tech 是独立的 API 网关,与 Anthropic 无关联,未获得其背书,也不是其经销商。Claude 及相关模型名称是其各自所有者的商标。