Содержание
- 1. Что такое AI SDK — «OpenAI/Anthropic/Gemini через один API»
- 2. Зачем использовать AI SDK — 3 практические причины
- 3. Запуск за 5 минут — от generateText до streamText
- 4. Структурированный вывод — типобезопасный JSON через generateObject
- 5. Tool calling и агенты — сердце AI SDK 6
- 6. Интеграция с React — Chat-UI на 10 строк через useChat
- 7. Смена провайдеров — Claude ↔ GPT ↔ Gemini за 3 строки
- 8. Три ловушки в продакшене
- Итог
- FAQ
«Я выпустил продукт на 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 года.
Три провайдера, один API — выйти из lock-in
— Эпоха трёх отдельных SDK закончилась в 2025
Май 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 практические причины
Три конкретные причины: «лёгкое переключение, треть кода, типобезопасность».
Три практические причины
Бонус: 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/openai | gpt-5, gpt-5-mini, o4 | Код, общие задачи, генерация изображений |
| Anthropic | @ai-sdk/anthropic | claude-opus-4-7, claude-sonnet-4 | Длинные тексты, рассуждения, безопасность |
@ai-sdk/google | gemini-3, gemini-2.5-flash | Мультимодальность, эффективность по цене | |
| Mistral | @ai-sdk/mistral | mistral-large, codestral | Хранение данных в EU, код |
| xAI | @ai-sdk/xai | grok-3 | Информация в реальном времени |
| Совместимые | @ai-sdk/openai-compatible | Ollama, LM Studio, self-hosted | Локальные / приватные LLM |
Переключение: один import + одна строка с моделью. В AI SDK 5 появилась фича global provider, где модель можно задать строковым ID (например, 'openai/gpt-5'). Совместите это со сравнением дат среза знаний LLM и сравнением цен Claude vs ChatGPT, чтобы уверенно выбирать модели по «стоимости, производительности, региональным требованиям».
8. Три ловушки в продакшене
AI SDK удобен, но есть три ловушки, в которые попадает каждая команда в продакшене. Знание их заранее предотвращает 80 % инцидентов.
Три продакшен-ловушки
tools ведёт себя по-разному — поддержка параллельного выполнения у OpenAI и Anthropic отличается.Решение: e2e-тесты под каждого провайдера, использовать
providerOptions для провайдер-специфичных настроек.Решение: передавайте
req.signal как abortSignal; ловите дисконнект клиента на сервере.Решение: разбивайте схемы, используйте
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.