Главная / Обучение / Claude с Vercel AI SDK: createAnthropic baseURL, потоковая передача и исправления
Vercel AI SDK. Сложенная треугольная конструкция из бумаги соединяет окно с кодом и струящуюся ленту символов, похожих на текст ответа, изображая потоковый вывод приложения.

Claude с Vercel AI SDK: baseURL в createAnthropic, потоковая передача и устранение проблем

Провайдер Anthropic в AI SDK, @ai-sdk/anthropic, обращается к Messages API. Его baseURL по умолчанию имеет значение https://api.anthropic.com/v1, поэтому для шлюза нужно заменить весь этот префикс, включая /v1. OpenCode, Kilo Code и многие агентные фреймворки используют этот же провайдер внутри, поэтому то же правило встречается и в их конфигурациях.

Установка

терминал
npm i ai @ai-sdk/anthropic

Создайте провайдер

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
});
Переменной окружения для базового URL нет в @ai-sdk/anthropic: передайте baseURL в коде. Обычный импорт anthropic всегда обращается к собственному эндпоинту Anthropic.

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

Оба вызова принимают maxRetries (по умолчанию 2) для временных сбоев, таких как 429 и 5xx.

Рассуждения и кеширование промптов

Параметры, специфичные для Anthropic, задаются в providerOptions.anthropic. Актуальные модели используют адаптивные рассуждения:

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.',
});

Кешируйте длинный, стабильный системный промпт с помощью cacheControl; чтения из кеша затем отображаются в usage.inputTokenDetails.cacheReadTokens. Промпты короче минимальной длины, установленной для модели, не кешируются.

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 },
  ],
});

Альтернатива, совместимая с OpenAI

Шлюз также поддерживает формат OpenAI Chat Completions, поэтому @ai-sdk/openai-compatible работает с тем же /v1 базовым URL. Этот вариант используется для моделей GPT с тем же ключом; для Claude нативный провайдер, описанный выше, сохраняет поддержку рассуждений и управления кешированием.

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

Устранение неполадок

Что вы видите Причина Решение
Ошибка разбора JSON, ответ начинается с <baseURL без /v1: запрос попал на веб-сайтbaseURL: 'https://aiprimetech.io/v1'
404 page not found/v1 дваждыРовно один /v1
Invalid API keyprocess.env имеет значение undefined в этой среде выполнения (у бессерверных и периферийных функций собственное окружение), поэтому SDK использовал значение по умолчанию ANTHROPIC_API_KEYЗадайте переменную в окружении развёртывания
Модель не поддерживаетсяУстаревший идентификатор модели или опечатка в нёмИспользуйте ID из таблицы ниже
Concurrency limit exceeded for userPromise.all для большого массиваОграничьте параллельные вызовы, например с помощью p-limit
No available accounts / 503Временная нехватка ресурсов у вышестоящего сервисаПовторная попытка выполняется автоматически; увеличьте maxRetries
Идентификатор модели Для каких задач
claude-sonnet-5Основной выбор для программирования и работы с агентами: быстрая, мощная, со средней стоимостью.
claude-opus-5-5Более сложные рассуждения, масштабный рефакторинг, длительная работа агентов.
claude-fable-5-1Самая мощная и дорогая; используйте её для наиболее сложных задач.
claude-haiku-4-5Недорогая и быстрая: заголовки, краткие изложения, классификация, небольшие шаги.

Часто задаваемые вопросы

Каково значение baseURL по умолчанию в @ai-sdk/anthropic?
https://api.anthropic.com/v1. Шлюз заменяет весь префикс, поэтому адрес должен заканчиваться на /v1, например https://aiprimetech.io/v1.
Есть ли переменная окружения для базового URL Anthropic в AI SDK?
Нет. Провайдер считывает ANTHROPIC_API_KEY (или ANTHROPIC_AUTH_TOKEN) из окружения, но базовый URL задаётся через createAnthropic({ baseURL }).
Почему при вызове Claude через AI SDK возникает ошибка разбора?
Обычно в 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 и названия связанных моделей — товарные знаки их соответствующих владельцев.

Другие руководства по Claude API

Как получить ключ Claude APIКак устроены цены Claude APIСамый дешевый способ использования API ClaudeБезлимитный Cursor с API ClaudeБезлимитный доступ к Claude CodeШлюз API Claude и прямой доступ к Anthropic: сравнениеИспользование Claude через API, совместимый с OpenAIОбъяснение моделей Claude: сравнение Claude Opus, Sonnet, Haiku и Fable — все модели Claude API, названия моделей Anthropic и цены (2026)Оплата API Claude криптовалютойДоступ к API Claude без листа ожиданияКак сократить расход токенов ClaudeБезлимитный Cline с API ClaudeБезлимитный Roo Code с API ClaudeБезлимитный Claude в IDE JetBrainsAider без ограничений с Claude APIБезлимитный Claude в VS CodeКонфигурация OpenCode для Claude: настройка opencode.json, модели и распространённые ошибкиЗапуск агента Hermes без ограничений на ClaudeЗапуск OpenClaw с Claude без ограниченийЧто означает API, совместимый с AnthropicКлюч API Claude Code — ANTHROPIC_API_KEY: как получить, настроить и когда вместо него использовать claude setup-tokenРасходы на API Claude Code — цены и способы их снизитьОбъяснение ошибок API Claude: ошибка сервера 500, перегрузка 529, лимит запросов 429, некорректный запрос 400 — и исправление каждой из нихКак купить кредиты Claude API — и почему кредиты Claude лучше любого предложения «купить аккаунт Claude»Бесплатный API Claude: существует ли бесплатный ключ API Claude и что действительно бесплатно в 2026?API Claude или подписка Claude Pro/Max — что выбратьЗапуск Codex CLI на ClaudeПодключение Claude к n8nМаршрутизация LiteLLM к ClaudeИспользование Claude в Kilo CodeПодключение Claude к GitHub CopilotПодключите Zed к Claude через шлюзПодключите Cherry Studio к ClaudeChatAnthropic в LangChain: импорт, base_url, потоковая передача, инструменты и ошибкиAnthropic Python SDK: установка, настройка base_url, потоковая передача и обработка ошибокИспользуйте Factory Droid с ClaudeКак устроен API Claude CodeИнтеграция API Claude в ваше приложениеКак пользоваться Claude без ограничений — и почему «взломанного Claude Code» не существует

Другие гайды по Claude API

Что означает API, совместимый с AnthropicAnthropic Python SDK: установка, настройка base_url, потоковая передача и обработка ошибокКак купить кредиты API ClaudeСамый дешевый способ использования API ClaudeОбъяснение ошибок API Claude: ошибка сервера 500, перегрузка 529, лимит запросов 429, некорректный запрос 400 — и исправление каждой из нихБесплатный API Claude: существует ли бесплатный ключ API Claude и что действительно бесплатно в 2026?Интеграция API Claude в ваше приложениеОбъяснение моделей Claude: сравнение Claude Opus, Sonnet, Haiku и Fable — все модели Claude API, названия моделей Anthropic и цены (2026)Как устроены цены Claude APIШлюз API Claude и прямой доступ к Anthropic: сравнениеAPI Claude или подписка Claude Pro/Max — что выбратьОплата API Claude криптовалютойДоступ к API Claude без листа ожиданияКак устроен API Claude CodeРасходы на API Claude Code — цены и способы их снизитьКлюч API Claude Code — ANTHROPIC_API_KEY: как получить, настроить и когда вместо него использовать claude setup-tokenКак получить безлимитный доступ к ClaudeКак получить ключ Claude APIКак сократить расход токенов ClaudeИспользуйте Claude с OpenAI SDK: совместимая с OpenAI конечная точка, потоковая передача, инструменты и ограниченияHermes Agent с Claude через шлюз: настройка пользовательского провайдера, контроль расходов и исправленияЗапуск OpenClaw с Claude без ограниченийЧто означает безлимитный доступ к API ClaudeКак получить безлимитный ключ API ClaudeБезлимитное использование Claude Code — без ограничений на токеныБезлимитный доступ к Claude Opus 4.8Безлимитное использование Claude — тарифы и ценыAider с Claude через шлюз: ANTHROPIC_API_BASE, файлы конфигурации, режим архитектора и исправленияПодключите Cherry Studio к ClaudeБезлимитный доступ к Claude CodeБезлимитный Cline с API ClaudeCodex CLI с пользовательским провайдером: config.toml, модели GPT и Claude, расширение для IDE и исправленияРабота в Cursor с безлимитным доступом к ClaudeИспользуйте Factory Droid с ClaudeGitHub Copilot Chat с Claude через шлюз: настройка Custom Endpoint, режим агента и исправленияБезлимитный Claude в IDE JetBrainsИспользование Claude в Kilo CodeChatAnthropic в LangChain: импорт, base_url, потоковая передача, инструменты и ошибкиМаршрутизация LiteLLM к ClaudeПодключение Claude к n8nКонфигурация OpenCode для Claude: настройка opencode.json, модели и распространённые ошибкиБезлимитный Roo Code с API ClaudeБезлимитный Claude в VS CodeПодключите Zed к Claude через шлюз