Trang chủ / Tìm hiểu / Claude với Vercel AI SDK: baseURL của createAnthropic, truyền luồng và cách khắc phục
Vercel AI SDK. Một cấu trúc giấy gấp hình tam giác nối cửa sổ mã với một dải các nét giống văn bản phản hồi đang tuôn chảy, thể hiện đầu ra dạng luồng của ứng dụng.

Claude với Vercel AI SDK: baseURL của createAnthropic, truyền dữ liệu dạng luồng và cách khắc phục lỗi

Nhà cung cấp Anthropic của AI SDK, @ai-sdk/anthropic, giao tiếp với Messages API. Giá trị baseURL mặc định là https://api.anthropic.com/v1, vì vậy khi sử dụng cổng, bạn thay thế toàn bộ tiền tố đó, bao gồm /v1. OpenCode, Kilo Code và nhiều framework tác nhân sử dụng cùng nhà cung cấp này bên dưới, nên quy tắc tương tự cũng xuất hiện trong cấu hình của chúng.

Cài đặt

cửa sổ dòng lệnh
npm i ai @ai-sdk/anthropic

Tạo nhà cung cấp

lib/anthropic.ts
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
});
Không có biến môi trường cho URL cơ sở trong @ai-sdk/anthropic: truyền baseURL trong mã. Lệnh import anthropic thông thường luôn trỏ đến endpoint riêng của Anthropic.

generateText và streamText

generate.ts
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);
stream.ts
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);

Cả hai lệnh gọi đều chấp nhận maxRetries (mặc định là 2) cho các lỗi tạm thời như 429 và 5xx.

Suy nghĩ và lưu lời nhắc vào bộ nhớ đệm

Các tùy chọn dành riêng cho Anthropic được đặt trong providerOptions.anthropic. Các mô hình hiện hành sử dụng cơ chế suy nghĩ thích ứng:

thinking.ts
const { text } = await generateText({
  model: anthropic('claude-sonnet-5'),
  providerOptions: { anthropic: { thinking: { type: 'adaptive' } } },
  prompt: 'Plan a zero-downtime database migration in five steps.',
});

Lưu một lời nhắc hệ thống dài, ổn định vào bộ nhớ đệm bằng cacheControl; sau đó, các lần đọc bộ nhớ đệm sẽ xuất hiện trong usage.inputTokenDetails.cacheReadTokens. Những lời nhắc ngắn hơn độ dài tối thiểu của mô hình sẽ không được lưu vào bộ nhớ đệm.

cache.ts
const result = await generateText({
  model: anthropic('claude-sonnet-5'),
  messages: [
    {
      role: 'system',
      content: longStableInstructions,
      providerOptions: { anthropic: { cacheControl: { type: 'ephemeral' } } },
    },
    { role: 'user', content: question },
  ],
});

Phương án thay thế tương thích OpenAI

Cổng cũng hỗ trợ định dạng OpenAI Chat Completions, vì vậy @ai-sdk/openai-compatible hoạt động với cùng URL cơ sở /v1 . Đây là phương thức kết nối cho các mô hình GPT dùng cùng khóa; với Claude, nhà cung cấp gốc ở trên giữ lại khả năng suy nghĩ và kiểm soát bộ nhớ đệm.

lib/gateway.ts
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

Khắc phục sự cố

Những gì bạn thấy Nguyên nhân Cách khắc phục
Lỗi phân tích cú pháp JSON, phản hồi bắt đầu bằng <baseURL không có /v1: yêu cầu đã đến trang webbaseURL: 'https://aiprimetech.io/v1'
404 page not found/v1 hai lầnChính xác một /v1
Invalid API keyprocess.env có giá trị undefined trong môi trường thực thi đó (các hàm serverless và edge có môi trường riêng), nên SDK đã dùng giá trị dự phòng ANTHROPIC_API_KEYĐặt biến trong môi trường triển khai
Mô hình không được hỗ trợMã định danh mô hình cũ hoặc viết saiSử dụng ID trong bảng bên dưới
Concurrency limit exceeded for userPromise.all trên một mảng lớnGiới hạn các lệnh gọi song song, ví dụ bằng p-limit
No available accounts / 503Năng lực xử lý tạm thời của hệ thống phía trênĐược tự động thử lại; tăng maxRetries
ID mô hình Dùng cho
claude-sonnet-5Lựa chọn mặc định cho lập trình và tác vụ của tác nhân: nhanh, mạnh, giá tầm trung.
claude-opus-5-5Suy luận khó hơn, tái cấu trúc mã quy mô lớn, tác nhân chạy trong thời gian dài.
claude-fable-5-1Năng lực cao nhất và đắt nhất; dành cho các tác vụ khó nhất.
claude-haiku-4-5Rẻ và nhanh: tiêu đề, tóm tắt, phân loại, các bước nhỏ.

Câu hỏi thường gặp

baseURL mặc định của @ai-sdk/anthropic là gì?
https://api.anthropic.com/v1. Cổng thay thế toàn bộ tiền tố, vì vậy URL phải kết thúc bằng /v1, ví dụ https://aiprimetech.io/v1.
Có biến môi trường cho URL cơ sở Anthropic của AI SDK không?
Không. Nhà cung cấp đọc ANTHROPIC_API_KEY (hoặc ANTHROPIC_AUTH_TOKEN) từ môi trường, nhưng URL cơ sở được đặt bằng createAnthropic({ baseURL }).
Tại sao AI SDK gặp lỗi phân tích cú pháp khi gọi Claude?
Thông thường, baseURL thiếu /v1, nên yêu cầu đến một trang web và nhận lại HTML thay vì JSON.
Tôi nên dùng @ai-sdk/anthropic hay @ai-sdk/openai-compatible cho Claude?
@ai-sdk/anthropic: gói này giao tiếp bằng Messages API gốc, nên khả năng suy nghĩ và lưu lời nhắc vào bộ nhớ đệm hoạt động. Sử dụng nhà cung cấp tương thích OpenAI cho các mô hình GPT.
Bắt đầu sử dụng Claude chỉ trong vài phút

Lấy khóa API — không cần tài khoản Anthropic hay đăng ký danh sách chờ.

Lấy khóa API của bạn

AI Prime Tech là một cổng API độc lập. AI Prime Tech không liên kết với, không được Anthropic chứng thực và không phải là đại lý bán lại của Anthropic. Claude và các tên mô hình liên quan là nhãn hiệu của chủ sở hữu tương ứng.

Các hướng dẫn khác về Claude API

Cách lấy khóa Claude APIGiải thích giá API ClaudeCách tiết kiệm nhất để sử dụng Claude APICursor không giới hạn với Claude APITruy cập Claude Code không giới hạnCổng Claude API so với truy cập trực tiếp AnthropicSử dụng Claude qua API tương thích với OpenAIGiải thích các mô hình Claude: so sánh Claude Opus, Sonnet, Haiku và Fable — tất cả mô hình API Claude, tên mô hình Anthropic và giá (2026)Thanh toán Claude API bằng tiền mã hóaTruy cập Claude API không cần vào danh sách chờCách giảm lượng token sử dụng với ClaudeCline không giới hạn với Claude APIRoo Code không giới hạn với Claude APIClaude không giới hạn trong các IDE JetBrainsSử dụng Aider không giới hạn với Claude APIClaude không giới hạn trong VS CodeCấu hình OpenCode cho Claude: thiết lập opencode.json, mô hình và các lỗi thường gặpChạy tác nhân Hermes không giới hạn trên ClaudeChạy OpenClaw không giới hạn trên ClaudeAPI tương thích với Anthropic có nghĩa là gìKhóa API Claude Code — ANTHROPIC_API_KEY: cách lấy, thiết lập và khi nào nên dùng claude setup-token thay thếChi phí API Claude Code — Giá và cách cắt giảmGiải thích các lỗi API Claude: lỗi máy chủ 500, quá tải 529, giới hạn tốc độ 429, yêu cầu không hợp lệ 400 — và cách khắc phục từng lỗiCách mua tín dụng Claude API — và vì sao tín dụng Claude tốt hơn mọi lời chào mời "mua tài khoản Claude"API Claude miễn phí: có khóa API Claude miễn phí không, và điều gì thực sự miễn phí trong 2026?Claude API so với gói thuê bao Claude Pro/Max — Nên chọn loại nàoChạy Codex CLI trên ClaudeKết nối Claude với n8nĐịnh tuyến LiteLLM tới ClaudeSử dụng Claude trong Kilo CodeTích hợp Claude vào GitHub CopilotKết nối Zed với Claude qua cổng APIKết nối Cherry Studio với ClaudeChatAnthropic trong LangChain: nhập, base_url, truyền dữ liệu dạng luồng, công cụ và lỗiSDK Python của Anthropic: cài đặt, thiết lập base_url, truyền dữ liệu dạng luồng và xử lý lỗiChạy Factory Droid với ClaudeGiải thích API của Claude CodeTích hợp API Claude vào ứng dụng của bạnCách sử dụng Claude không giới hạn — và vì sao không có "Claude Code bẻ khóa"