AI SDK от Vercel
AI SDK — библиотека Vercel для работы с моделями на TypeScript: генерация текста, потоковые ответы, вызов инструментов. К хабу она подключается через провайдер @ai-sdk/openai-compatible, в котором доступны модели всех провайдеров хаба.
1. Установите пакеты
npm install ai @ai-sdk/openai-compatible zod
zod нужен для описания параметров инструментов.
2. Подключите хаб
Сохраните ключ хаба в переменной окружения COREINFRA_API_KEY и создайте провайдер:
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
export const coreinfra = createOpenAICompatible({
name: "coreinfra",
baseURL: "https://hub.coreinfra.ai/openai/api/v1",
apiKey: process.env.COREINFRA_API_KEY,
includeUsage: true,
});
С includeUsage в потоковых ответах приходит расход токенов, без него AI SDK его не получает.
Отправляйте запросы к хабу с сервера: ключ даёт доступ к балансу, поэтому в коде, который выполняется в браузере, его быть не должно.
3. Отправьте запрос
Модель указывается идентификатором из раздела Модели и цены, например claude-sonnet-5-5 или gpt-5.4-mini:
import { generateText } from "ai";
import { coreinfra } from "./coreinfra";
const { text } = await generateText({
model: coreinfra("claude-sonnet-5-5"),
prompt: "Объясни кэш промптов в двух предложениях.",
});
console.log(text);
Потоковый ответ
streamText отдаёт текст по частям, пока модель его генерирует:
import { streamText } from "ai";
import { coreinfra } from "./coreinfra";
const result = streamText({
model: coreinfra("gpt-5.4-mini"),
prompt: "Напиши хайку о шлюзах.",
});
for await (const text of result.textStream) {
process.stdout.write(text);
}
Инструменты
Модель вызывает инструмент, AI SDK выполняет execute и возвращает результат модели, а stopWhen ограничивает число шагов:
import { generateText, stepCountIs, tool } from "ai";
import { z } from "zod";
import { coreinfra } from "./coreinfra";
const { text } = await generateText({
model: coreinfra("gpt-5.4-mini"),
prompt: "Какая погода в Москве?",
tools: {
weather: tool({
description: "Погода в городе",
inputSchema: z.object({ city: z.string() }),
execute: async ({ city }) => ({ city, temperature: 12, sky: "облачно" }),
}),
},
stopWhen: stepCountIs(5),
});
console.log(text);
Что дальше
- Документация AI SDK — все возможности библиотеки.
- Провайдер OpenAI Compatible — его настройки.
- API — адреса, эндпоинты и ошибки хаба.
