«Я выпустил продукт на OpenAI API, но теперь хочу попробовать ещё Claude и Gemini» — и вы тратите два часа, переписывая одну и ту же логику под три разных SDK, вручную переводя форматы запросов и ответов. Vercel AI SDK (с 2026 года просто «AI SDK») сворачивает всё это в «один import, одна функция, любой провайдер». Это TypeScript-библиотека с открытым исходным кодом, у которой более 20 миллионов скачиваний в месяц; AI SDK 6 поставляется с Agents, MCP, tool approval и DevTools, и на май 2026 года это де-факто стандарт унифицированного интерфейса к LLM.

Сразу честно: если вы вызываете LLM из веб-приложения или Node.js-проекта в 2026 году, AI SDK — правильный выбор по умолчанию, точка. Единственные причины писать напрямую через OpenAI или Anthropic SDK — это «существующая кодовая база» или «передовые провайдер-специфичные фичи (Anthropic computer use и т. п.)». Во всех остальных случаях AI SDK даёт вам «лёгкое переключение, треть кода, типобезопасность, интеграцию с React» с подавляющим преимуществом.

Личная позиция сразу: настоящая ценность AI SDK — это свобода от vendor lock-in. OpenAI поднял цены? Три строки — и вы на Anthropic. Gemini выпустил новую модель? Попробуйте в одном месте. Всё это в одной кодовой базе. Как уже говорилось в Что такое AI API, реальность 2026 года такова, что «использование разных моделей под разные задачи» — это уже норма, и AI SDK асимптотически сводит стоимость переключения к нулю. В этой статье — что такое AI SDK, зачем им пользоваться, быстрый старт за 5 минут, структурированный вывод, tool calling и агенты, интеграция с React, смена провайдеров и три продакшен-ловушки — всё с привязкой к AI SDK 6 на май 2026 года.

VERCEL AI SDK · 2026

Три провайдера, один API — выйти из lock-in

— Эпоха трёх отдельных SDK закончилась в 2025

ПРЕИМУЩЕСТВО 1 · Единый API
Смена за 3 строки
OpenAI/Anthropic/Google. Меняется только аргумент model
ПРЕИМУЩЕСТВО 2 · Типобезопасность
JSON, типизированный Zod
generateObject. Схемы как типы
ПРЕИМУЩЕСТВО 3 · React-нативно
useChat в 10 строк
SSE и состояние под управлением. UI работает сразу

Май 2026: более 20 млн скачиваний в месяц, AI SDK 6 поставляется с Agents, MCP, tool approval.
TypeScript, Apache 2.0, работает где угодно (Cloudflare Workers / AWS Lambda / собственный Node.js).

1. Что такое AI SDK — «OpenAI/Anthropic/Gemini через один API»

AI SDK — это open-source TypeScript-библиотека от Vercel. GitHub: vercel/ai, лицензия Apache 2.0, более 20 млн скачиваний в месяц на май 2026. Сделано Vercel, но работает не только на Vercel — Cloudflare Workers, AWS Lambda, Deno, собственный Node.js, браузер — везде.

Главная идея — «адаптерный слой для смены LLM-провайдеров». Например:

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';

const { text } = await generateText({
  model: openai('gpt-5'),
  prompt: 'Tell me today\'s weather',
});

Перевод этого кода на Anthropic — три строки изменения:

import { generateText } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';  // ← изменено

const { text } = await generateText({
  model: anthropic('claude-opus-4-7'),  // ← изменено
  prompt: 'Tell me today\'s weather',
});

Вызывающий код вообще не меняется. Вот что на практике означает «один API для всех провайдеров». У каждого провайдера свой формат сообщений, stop-sequences, схемы инструментов, расположение системного промпта и форма JSON-ответа — и AI SDK впитывает всё это под капотом.

2. Зачем использовать AI SDK — 3 практические причины

Три конкретные причины: «лёгкое переключение, треть кода, типобезопасность».

ПОЧЕМУ · 3 ПРИЧИНЫ

Три практические причины

ПРИЧИНА 1 · Свободное переключение
OpenAI поднял цены → Anthropic, новая модель Gemini → попробовать: 3 строки. A/B-тест нескольких моделей из одной кодовой базы.
ПРИЧИНА 2 · Треть кода
Стриминг, tool calling, структурированный вывод работают в три строки. С «голыми» SDK вам пришлось бы вручную писать парсинг SSE, парсинг JSON и обработку ошибок.
ПРИЧИНА 3 · Типобезопасность
Zod-схемы означают, что типы ответа известны на этапе компиляции. Гадание «что же API вернёт в рантайме» уходит.

Бонус: React, Vue, Svelte, Node.js — все поддерживаются; ежемесячная поддержка от Vercel; крупнейшая экосистема — 20 млн скачиваний/мес.

Когда AI SDK не подходит: когда вам нужно сразу после релиза задействовать передовую провайдер-специфичную фичу (Anthropic computer use и т. п.), пока её не обернул AI SDK; когда вы работаете только на Python (AI SDK — только TypeScript); когда существующая кодовая база на OpenAI SDK работает и нет повода её переписывать. За пределами этих случаев дефолт 2026 года — AI SDK.

3. Запуск за 5 минут — от generateText до streamText

Минимальная настройка — три шага. Демо на Node.js / Next.js.

# Шаг 1: установка
npm install ai @ai-sdk/openai
# env: OPENAI_API_KEY=sk-...

# Шаг 2: создать файл (app/api/chat/route.ts или index.ts)
// Шаг 3: код
import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';

const { text, usage } = await generateText({
  model: openai('gpt-5'),
  system: 'You are a careful, helpful assistant.',
  prompt: 'List three benefits of the AI SDK.',
});

console.log(text);
console.log(`tokens: ${usage.totalTokens}`);

Это без стриминга, возвращается полный текст. Запускаете — и за секунды ответ оказывается в text. usage автоматически даёт счётчик токенов — дисциплина по затратам из статьи об экономии токенов подключается напрямую.

Переключение на стриминг (UX «печатной машинки») — это просто переименование функции в streamText:

import { streamText } from 'ai';
import { openai } from '@ai-sdk/openai';

const result = streamText({
  model: openai('gpt-5'),
  prompt: 'List three benefits of the AI SDK.',
});

for await (const chunk of result.textStream) {
  process.stdout.write(chunk);  // выдаём по токену
}

С «голым» OpenAI SDK вам пришлось бы вручную писать парсинг SSE, склейку чанков, детект конца стрима (30–50 строк). У AI SDK — один цикл for-await. Тот же код без изменений работает с Anthropic и Gemini.

4. Структурированный вывод — типобезопасный JSON через generateObject

Попросите LLM «JSON» — и иногда вы получите его обёрнутым в Markdown-код-блок, со вставленными комментариями или с тихо сместившейся структурой. generateObject закрывает этот вопрос на корню: опишите форму Zod-схемой, и AI SDK автоматически возьмёт на себя парсинг, валидацию и retry.

import { generateObject } from 'ai';
import { openai } from '@ai-sdk/openai';
import { z } from 'zod';

const { object } = await generateObject({
  model: openai('gpt-5'),
  schema: z.object({
    title: z.string(),
    tags: z.array(z.string()).max(5),
    sentiment: z.enum(['positive', 'neutral', 'negative']),
    summary: z.string().max(200),
  }),
  prompt: 'Analyze the article: "AI SDK 6 has..." [body]',
});

// object.title, object.tags и т. д. — типизированы
console.log(object.tags);  // string[]

Главный выигрыш: «тип object выводится из `z.infer<typeof schema>`». TypeScript сам его выводит, так что когда вы набираете object. в IDE, автодополнение показывает title / tags / sentiment / summary. Валидация в рантайме идёт внутри SDK — нарушения схемы вызывают автоматический retry. Класс инцидентов «ИИ вернул кривой JSON, парсинг упал» практически исчезает.

5. Tool calling и агенты — сердце AI SDK 6

Передний край разработки ИИ в 2026 году — «агенты с tool calling», и крупнейший скачок AI SDK 6 — именно здесь. С tools и stopWhen вы получаете цикл «вызвать инструмент → ИИ решает → вызвать следующий инструмент» напрямую.

import { generateText, tool, stepCountIs } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
import { z } from 'zod';

const { text, steps } = await generateText({
  model: anthropic('claude-opus-4-7'),
  tools: {
    weather: tool({
      description: 'Get the weather for a city',
      inputSchema: z.object({ city: z.string() }),
      execute: async ({ city }) => {
        // реальный API-вызов
        return { temp: 22, condition: 'sunny' };
      },
    }),
    convertToFahrenheit: tool({
      description: 'Convert Celsius to Fahrenheit',
      inputSchema: z.object({ celsius: z.number() }),
      execute: async ({ celsius }) => celsius * 9/5 + 32,
    }),
  },
  stopWhen: stepCountIs(5),  // ограничить цикл 5 шагами
  prompt: 'What is the weather in Tokyo, in Fahrenheit?',
});

Теперь ИИ самостоятельно выстраивает последовательность «weather('Tokyo') → convertToFahrenheit(22)», выполняет её и интегрирует результаты. steps отдаёт пошаговую историю выполнения.

В AI SDK 6 также есть класс ToolLoopAgent для объектно-ориентированного стиля (эквивалент generateText + stopWhen). Он добавляет подтверждение запуска инструмента (человек подтверждает запуск перед его выполнением) и полную интеграцию MCP (Model Context Protocol). Подключение MCP-сервера (см. Что такое MCP) на май 2026 — это три строки.

6. Интеграция с React — Chat-UI на 10 строк через useChat

Вторая звезда AI SDK — React Hooks. С useChat UI в стиле ChatGPT — это 10 строк кода.

'use client';
import { useChat } from '@ai-sdk/react';

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat();
  return (
    <div>
      {messages.map(m => (
        <div key={m.id}>{m.role}: {m.content}</div>
      ))}
      <form onSubmit={handleSubmit}>
        <input value={input} onChange={handleInputChange} />
      </form>
    </div>
  );
}

Серверная часть (Next.js API Route):

// app/api/chat/route.ts
import { streamText, convertToModelMessages } from 'ai';
import { openai } from '@ai-sdk/openai';

export async function POST(req: Request) {
  const { messages } = await req.json();
  const result = streamText({
    model: openai('gpt-5'),
    messages: convertToModelMessages(messages),
  });
  return result.toUIMessageStreamResponse();
}

Уже это даёт вам SSE-соединение, управление состоянием сообщений, loading и обработку ошибок — всё автоматически. useChat в AI SDK 6 также нативно поддерживает UI подтверждения инструментов (пользователь кликом одобряет «запускать ли этот инструмент?»). Также поставляются хуки для Vue (useChat из @ai-sdk/vue), Svelte и Solid.

7. Смена провайдеров — Claude ↔ GPT ↔ Gemini за 3 строки

Крупные провайдеры, официально поддерживаемые AI SDK на май 2026:

ПровайдерПакетОсновные моделиСильные стороны
OpenAI@ai-sdk/openaigpt-5, gpt-5-mini, o4Код, общие задачи, генерация изображений
Anthropic@ai-sdk/anthropicclaude-opus-4-7, claude-sonnet-4Длинные тексты, рассуждения, безопасность
Google@ai-sdk/googlegemini-3, gemini-2.5-flashМультимодальность, эффективность по цене
Mistral@ai-sdk/mistralmistral-large, codestralХранение данных в EU, код
xAI@ai-sdk/xaigrok-3Информация в реальном времени
Совместимые@ai-sdk/openai-compatibleOllama, LM Studio, self-hostedЛокальные / приватные LLM

Переключение: один import + одна строка с моделью. В AI SDK 5 появилась фича global provider, где модель можно задать строковым ID (например, 'openai/gpt-5'). Совместите это со сравнением дат среза знаний LLM и сравнением цен Claude vs ChatGPT, чтобы уверенно выбирать модели по «стоимости, производительности, региональным требованиям».

8. Три ловушки в продакшене

AI SDK удобен, но есть три ловушки, в которые попадает каждая команда в продакшене. Знание их заранее предотвращает 80 % инцидентов.

3 ЛОВУШКИ

Три продакшен-ловушки

ЛОВУШКА 1 · Различия фич у провайдеров
Та же конфигурация tools ведёт себя по-разному — поддержка параллельного выполнения у OpenAI и Anthropic отличается.
Решение: e2e-тесты под каждого провайдера, использовать providerOptions для провайдер-специфичных настроек.
ЛОВУШКА 2 · Прерывание стрима
Если пользователь закрыл браузер, серверный вызов LLM продолжает работать — и продолжает биллиться.
Решение: передавайте req.signal как abortSignal; ловите дисконнект клиента на сервере.
ЛОВУШКА 3 · Перегрузка вывода типов
Огромные Zod-схемы могут вызвать задержки вывода типов TS на 10+ секунд; IDE подвисает.
Решение: разбивайте схемы, используйте z.lazy, для самых грязных частей откатывайтесь к z.any() + рантайм-валидации.

Знание этих трёх предотвращает около 80 % инцидентов «работает на Claude, ломается на GPT», «биллинг после дисконнекта пользователя» и «зависший IDE».

Ещё одно замечание: AI SDK — это «адаптер к LLM», а не «реселлер LLM-стоимости». API-ключ каждого провайдера — ваша зона ответственности, и биллинг идёт напрямую вам. Как уже разбиралось в Что такое AI API, расходы выставляет напрямую OpenAI/Anthropic/Google. Сам AI SDK бесплатен; вы платите только за используемые LLM.

Итог

«Как мне вызывать LLM из веб-приложения?» — к маю 2026 года это проектное решение сошлось к «AI SDK, точка». Более 20 млн скачиваний в месяц, AI SDK 6 поставляется с Agents, MCP, tool approval, DevTools, и из одной кодовой базы вы можете вызывать OpenAI/Anthropic/Google/Mistral/xAI/локальные LLM. Это сразу три вещи: «свобода от vendor lock-in», «треть стоимости разработки» и «типобезопасный структурированный вывод».

Старт прост: npm install ai @ai-sdk/openai, ② задать API-ключ, ③ одна строка generateText({ model, prompt }). Когда это заработает, наслаивайте streamText для стриминга, generateObject для JSON, tools для агентов, useChat для UI. Перед выходом в продакшен впитайте три ловушки (различия фич у провайдеров, биллинг при прерывании стрима, перегрузка вывода типов).

По теме: Что такое AI API (основы), ИИ рекомендует Vercel, Что такое MCP, Экономия токенов.

FAQ

В. Обязательно ли деплоить на Vercel, чтобы пользоваться SDK?
О. Нет. AI SDK — это чистая TypeScript-библиотека — Cloudflare Workers, AWS Lambda, Deno, ваш собственный Node.js-сервер, браузер — всё работает. «Сделано Vercel» не значит «только Vercel».

В. Стоит ли это денег?
О. Сам AI SDK полностью бесплатен, лицензия в духе MIT. Стоимость — только API-использование того LLM-провайдера, которого вы вызываете (OpenAI/Anthropic и т. п.). SDK не накручивает наценку.

В. Чем отличается от LangChain или LlamaIndex?
О. Разные роли. AI SDK — «тонкий адаптер для вызовов LLM», оптимизированный под интеграцию в веб-приложения. LangChain — полнофункциональный фреймворк для «RAG и агентских воркфлоу». Практическое разделение: «TypeScript + интеграция в Web UI» → AI SDK; «Python + сложные агентские пайплайны» → LangChain.

В. Сложно ли мигрировать с существующего кода на OpenAI SDK?
О. Для простых вызовов openai.chat.completions.create переписывание занимает около 10 минут — заменить на generateText и передать messages. Сложные фичи (function calling, vision) требуют небольшой конвертации формата, но в документации есть гайды по миграции.

В. Работает ли с локальными LLM (Ollama)?
О. Да. Пакет @ai-sdk/openai-compatible позволяет ходить на любой OpenAI-совместимый API endpoint — Ollama, LM Studio, vLLM, ваш собственный сервер. Сценарий «разрабатываем на локальных LLM, выкатываем в облако» сводится к смене одного baseURL.