Source: https://aiprimetech.io/ru/learn/use-claude-api-with-vercel-ai-sdk/ [Главная](/ru/) / [Обучение](/ru/learn/) / Claude с Vercel AI SDK: createAnthropic baseURL, потоковая передача и исправления # 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 key | process.env имеет значение undefined в этой среде выполнения (у бессерверных и периферийных функций собственное окружение), поэтому SDK использовал значение по умолчанию ANTHROPIC_API_KEY | Задайте переменную в окружении развёртывания | Модель не поддерживается | Устаревший идентификатор модели или опечатка в нём | Используйте ID из таблицы ниже | Concurrency limit exceeded for user | Promise.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](/register) AI Prime Tech — независимый API-шлюз. Он не связан с Anthropic, не одобрен этой компанией и не является её реселлером. Claude и названия связанных моделей — товарные знаки их соответствующих владельцев. ## Другие руководства по Claude API [Как получить ключ Claude API](/ru/learn/how-to-get-a-claude-api-key/)[Как устроены цены Claude API](/ru/learn/claude-api-pricing-explained/)[Самый дешевый способ использования API Claude](/ru/learn/cheapest-way-to-use-claude-api/)[Безлимитный Cursor с API Claude](/learn/use-claude-api-with-cursor/)[Безлимитный доступ к Claude Code](/ru/learn/use-claude-api-with-claude-code/)[Шлюз API Claude и прямой доступ к Anthropic: сравнение](/ru/learn/claude-api-vs-anthropic-direct/)[Использование Claude через API, совместимый с OpenAI](/ru/learn/openai-compatible-claude-api/)[Объяснение моделей Claude: сравнение Claude Opus, Sonnet, Haiku и Fable — все модели Claude API, названия моделей Anthropic и цены (2026)](/ru/learn/claude-api-models-compared/)[Оплата API Claude криптовалютой](/ru/learn/claude-api-with-crypto-payment/)[Доступ к API Claude без листа ожидания](/ru/learn/claude-api-without-waitlist/)[Как сократить расход токенов Claude](/ru/learn/how-to-reduce-claude-token-usage/)[Безлимитный Cline с API Claude](/ru/learn/use-claude-api-with-cline/)[Безлимитный Roo Code с API Claude](/ru/learn/use-claude-api-with-roo-code/)[Безлимитный Claude в IDE JetBrains](/ru/learn/use-claude-api-with-jetbrains/)[Aider без ограничений с Claude API](/ru/learn/use-claude-api-with-aider/)[Безлимитный Claude в VS Code](/ru/learn/use-claude-api-with-vscode/)[Конфигурация OpenCode для Claude: настройка opencode.json, модели и распространённые ошибки](/ru/learn/use-claude-api-with-opencode/)[Запуск агента Hermes без ограничений на Claude](/ru/learn/run-hermes-agent-with-claude-api/)[Запуск OpenClaw с Claude без ограничений](/ru/learn/run-openclaw-with-claude-api/)[Что означает API, совместимый с Anthropic](/ru/learn/anthropic-compatible-api/)[Ключ API Claude Code — ANTHROPIC_API_KEY: как получить, настроить и когда вместо него использовать claude setup-token](/ru/learn/claude-code-api-key-setup/)[Расходы на API Claude Code — цены и способы их снизить](/ru/learn/claude-code-api-costs/)[Объяснение ошибок API Claude: ошибка сервера 500, перегрузка 529, лимит запросов 429, некорректный запрос 400 — и исправление каждой из них](/ru/learn/claude-api-errors-troubleshooting/)[Как купить кредиты Claude API — и почему кредиты Claude лучше любого предложения «купить аккаунт Claude»](/ru/learn/buy-claude-api-credits/)[Бесплатный API Claude: существует ли бесплатный ключ API Claude и что действительно бесплатно в 2026?](/ru/learn/claude-api-free-trial/)[API Claude или подписка Claude Pro/Max — что выбрать](/ru/learn/claude-api-vs-subscription/)[Запуск Codex CLI на Claude](/ru/learn/use-claude-api-with-codex/)[Подключение Claude к n8n](/ru/learn/use-claude-api-with-n8n/)[Маршрутизация LiteLLM к Claude](/ru/learn/use-claude-api-with-litellm/)[Использование Claude в Kilo Code](/ru/learn/use-claude-api-with-kilo-code/)[Подключение Claude к GitHub Copilot](/ru/learn/use-claude-api-with-github-copilot/)[Подключите Zed к Claude через шлюз](/ru/learn/use-claude-api-with-zed/)[Подключите Cherry Studio к Claude](/ru/learn/use-claude-api-with-cherry-studio/)[ChatAnthropic в LangChain: импорт, base_url, потоковая передача, инструменты и ошибки](/ru/learn/use-claude-api-with-langchain/)[Anthropic Python SDK: установка, настройка base_url, потоковая передача и обработка ошибок](/ru/learn/anthropic-python-sdk/)[Используйте Factory Droid с Claude](/ru/learn/use-claude-api-with-factory-droid/)[Как устроен API Claude Code](/ru/learn/claude-code-api/)[Интеграция API Claude в ваше приложение](/ru/learn/claude-api-integration/)[Как пользоваться Claude без ограничений — и почему «взломанного Claude Code» не существует](/ru/learn/get-unlimited-claude-usage/)