Интеграция с Vercel AI SDK
Стриминг ответов нейросетей в приложениях на React, Next.js и SvelteKit с использованием хуков useChat и useCompletion.
Vercel AI SDK — современный стандарт фронтенд-разработки для генеративных интерфейсов. Он предоставляет удобные реактивные хуки (useChat, useCompletion) и серверные адаптеры для потоковой передачи токенов прямо в компоненты пользовательского интерфейса с минимальной задержкой.
Серверный адаптер OpenAI в Next.js
В серверном роуте Next.js App Router (app/api/chat/route.ts) настраивается экземпляр createOpenAI с baseURL: 'https://api-router.velar.plus/v1'. Поток токенов транслируется на фронтенд через streamText.
Ключевые технические возможности
- Мгновенный стриминг в UI: Отображение ответа буква за буквой с плавной анимацией без мерцаний.
- Автоматическое управление состоянием чата: Хук useChat сам управляет списком сообщений, статусом загрузки и повторной отправкой.
- Поддержка генерации компонентов (Generative UI): Возможность рендера интерактивных React-компонентов прямо из ответа модели.
- Работа на Edge и Serverless: Легковесные адаптеры, оптимизированные для работы в бессерверных средах.
Пример интеграции в коде
Ниже представлен базовый пример отправки запроса с использованием стандартного клиента. Убедитесь, что ваш токен создан в разделе Ключи управления API:
import OpenAI from "openai";
// Инициализация стандартного SDK с базовым URL Api Router
const client = new OpenAI({
baseURL: "https://api-router.velar.plus/v1",
apiKey: process.env.API_ROUTER_KEY, // Ваш ключ от сервиса
});
async function run() {
const response = await client.chat.completions.create({
model: "anthropic/claude-sonnet", // Семейство модели без жесткой привязки к устаревающим номерам
messages: [
{ role: "system", content: "Вы профессиональный инженер-архитектор." },
{ role: "user", content: "Как настроить надежную маршрутизацию запросов?" }
],
temperature: 0.2,
});
console.log("Ответ модели:", response.choices[0].message.content);
}
run();
Связанные разделы документации
Для глубокого погружения в тему изучите следующие материалы: