Конспекты
Смарт-конспекты YouTube-видео — ключевые идеи и инсайты без необходимости смотреть часовые ролики
Загрузка...
Смарт-конспекты YouTube-видео — ключевые идеи и инсайты без необходимости смотреть часовые ролики
Пошаговое руководство по созданию чатбота с GPT-4o, стримингом ответов и Markdown-рендерингом на Next.js и Vercel AI SDK v5.
Маркетинг-стратег, IT-предприниматель, ментор по вайбкодингу
10+ лет в маркетинге, 300+ клиентских проектов: сайты, реклама, боты. Создатель GoBanana (228K+ пользователей, 11.6 млн ₽ выручки) и VibeCoderz. Делаю AI-продукты сам через Claude Code, Cursor, Windsurf и консультирую тех, кто хочет так же.
Об авторе →Claude Code + Higgsfield: Создание премиальных анимированных сайтов за часы
Пошаговый гайд по созданию анимированных сайтов уровня Apple с помощью Claude Code и Higgsfield MCP. От вайрфреймов до деплоя на Vercel.
GTM-стратегия нового поколения: Как Vercel и Stripe используют AI-агентов в продажах
Разбор GTM от COO Vercel: роль GTM-инженера, автоматизация SDR через AI, создание Dealbot и подход к продажам как к продукту. Практические советы для стартапов.
SEO-мастеркласс: Как создавать сайты и контент через Claude Code для заработка на трафике
Пошаговое руководство по использованию Claude Code для SEO: от генерации сайта на Next.js до обхода AI-детекторов и технической оптимизации на 100 баллов.
Codex AI: Полный гид по вайбкодингу для создания SaaS-проектов
Пошаговое руководство по Codex AI: установка CLI, режим YOLO, создание приложений на Next.js, интеграция OpenRouter и деплой на Vercel.
Экономика API 2026: Как зарабатывать на топливе для AI-агентов
Пошаговый гид по созданию прибыльных API-сервисов для AI-агентов с помощью Cursor, Supabase и Vercel. От идеи до монетизации за 24 часа.
Google Stitch + Anti-Gravity: Ультимативная связка для AI-дизайна и разработки
Пошаговый гайд по созданию приложений через Google Stitch и Anti-Gravity. Автоматизация дизайна, MCP-протоколы и деплой на Vercel без кода.
Vercel представила Open Agents: создайте своего AI-агента для кодинга
Vercel выпустила Open Agents — опенсорсную платформу для создания кастомных AI-агентов, адаптированных под специфику вашего кода и внутренних процессов.
Обновление Vercel AI: Claude Opus 4.6 Fast Mode и Qwen 3.6 Plus в AI Gateway
Vercel представила масштабные обновления: поддержку Claude Opus 4.6 в режиме Fast Mode, Qwen 3.6 Plus с контекстом 1 млн токенов и новую бету AI SDK 7.0.
Vercel готовится к IPO: 30% приложений на платформе создают AI-агенты
Выручка Vercel взлетела до $340 млн благодаря буму агентной разработки. Треть всех новых деплоев теперь приходится на AI-инструменты.
🎯 О чём этот конспект: Пошаговое руководство по созданию современного чатбота с потоковой (streaming) передачей ответов, используя последнюю версию Vercel AI SDK (v5), Next.js App Router и библиотеку компонентов Chakra UI. Разбирается как бэкенд-логика взаимодействия с OpenAI GPT-4o, так и фронтенд-часть с поддержкой Markdown.
👤 Кому будет полезно: Вайбкодерам и Fullstack-разработчикам, которые хотят быстро развернуть кастомный интерфейс для LLM с минимальным написанием шаблонного кода.
✨ Что получите: Готовый работающий чатбот, который имитирует поведение ChatGPT (стриминг текста), умеет рендерить сложные Markdown-ответы (списки, заголовки) и легко масштабируется под любые модели (Anthropic, Google, и др.).
Контекст: Для создания современного AI-приложения важна скорость работы и типизация. Автор использует Next.js с App Router и бета-версию Vercel AI SDK v5, которая значительно упрощает работу с потоками данных. Chakra UI выбрана как гибкая система компонентов для быстрой верстки интерфейса.
Выгода: Быстрый старт с актуальными библиотеками, исключающий конфликты версий и устаревшие методы обработки потоков.
Как применить:
npx create-next-app@latest vercel-chakra-ai-democd vercel-chakra-ai-demo
npm install ai @ai-sdk/openai @ai-sdk/react.env.local в корне проекта и добавьте ваш ключ OpenAI:OPENAI_API_KEY=your_api_key_hereРезультат: Подготовленная среда разработки с установленными SDK для работы с AI.
Контекст: В Vercel AI SDK v5 процесс обработки сообщений стал более декларативным. Нам нужно создать эндпоинт, который принимает сообщения от пользователя, конвертирует их в формат, понятный модели (Model Messages), и возвращает поток (stream). Важный нюанс: настройка maxDuration необходима, чтобы Vercel не обрывал долгие ответы нейросети.
Выгода: Стабильный стриминг ответов без таймаутов и корректная передача контекста диалога.
Как применить:
app/api/chat/route.ts.import { openai } from '@ai-sdk/openai';
import { streamText, convertToCoreMessages } from 'ai';
// Позволяет стримингу длиться до 30 секунд (важно для Next.js)
export const maxDuration = 30;
export async function POST(req: Request) {
const { messages } = await req.json();
const result = await streamText({
model: openai('gpt-4o'), // Можно заменить на gpt-4-turbo или другие
messages: convertToCoreMessages(messages),
});
return result.toDataStreamResponse();
}Результат: Работающий API-эндпоинт /api/chat, готовый принимать запросы и транслировать ответы GPT-4o в реальном времени.
Контекст: Для создания интерфейса используется Chakra UI. Важное изменение в новых версиях SDK: хук useChat больше не управляет состоянием инпута автоматически, поэтому нам нужно создавать отдельный useState для текстового поля. Мы строим интерфейс из двух частей: область сообщений с разным выравниванием (пользователь справа, AI слева) и фиксированная форма ввода снизу.
Выгода: Профессиональный UI с четким разделением ролей сообщений и удобным управлением состоянием.
Как применить:
Provider в файле layout.tsx согласно документации Chakra UI.page.tsx используйте следующий код:'use client';
import { useChat } from '@ai-sdk/react';
import { useState } from 'react';
import { Box, Button, HStack, Input, Stack, Text } from '@chakra-ui/react';
export default function Chat() {
const [input, setInput] = useState('');
const { messages, append } = useChat();
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
if (!input) return;
await append({ content: input, role: 'user' });
setInput('');
};
return (
<Box p={4} pb="100px">
<Stack gap={4}>
{messages.map((m) => (
<Box
key={m.id}
alignSelf={m.role === 'user' ? 'flex-end' : 'flex-start'}
bg={m.role === 'user' ? 'blue.200' : 'gray.200'}
p={3}
borderRadius="lg"
maxW="80%"
>
<Text>{m.content}</Text>
</Box>
))}
</Stack>
<Box
as="form"
onSubmit={handleSubmit}
position="fixed"
bottom={0}
left={0}
right={0}
p={4}
bg="white"
borderTop="1px solid"
borderColor="gray.100"
>
<HStack>
<Input
value={input}
onChange={(e) => setInput(e.target.value)}
placeholder="Задайте вопрос..."
/>
<Button type="submit" colorScheme="blue">Отправить</Button>
</HStack>
</Box>
</Box>
);
}Результат: Визуально приятный чат, где сообщения корректно отображаются и отправляются.
Контекст: По умолчанию LLM возвращает текст с Markdown-разметкой (заголовки, списки, жирный шрифт). Если выводить его просто через тег <Text>, пользователь увидит сырые символы ### или *. Для исправления этого используются библиотеки react-markdown и компонент Prose от Chakra UI.
Выгода: Ответы нейросети выглядят как структурированные статьи, их легко читать.
Как применить:
npm install react-markdownprose через CLI Chakra UI (если используете v3+) или настройте стили для типографики.<Text>{m.content}</Text> на связку Markdown + Prose:import Markdown from 'react-markdown';
// Импорт Prose зависит от вашей настройки Chakra компонентов
import { Prose } from '@/components/ui/prose';
// Внутри цикла map:
<Box ...>
<Prose>
<Markdown>{m.content}</Markdown>
</Prose>
</Box>Результат: Красивое отображение списков, таблиц и заголовков в ответах чатбота.
В: Почему в Vercel AI SDK v5 нужно вручную управлять состоянием инпута? О: Разработчики SDK решили сделать хук useChat более гибким и менее "магическим". Это позволяет разработчикам легче интегрировать кастомные поля ввода, загрузку файлов или сложные формы, не конфликтуя с внутренним состоянием хука.
В: Как сменить модель с GPT-4o на Claude 3.5 Sonnet? О: Вам нужно установить пакет @ai-sdk/anthropic, добавить ANTHROPIC_API_KEY в .env и в файле route.ts заменить импорт openai на anthropic, а в вызове streamText указать model: anthropic('claude-3-5-sonnet-20240620').
В: Зачем нужен convertToCoreMessages? О: Сообщения на фронтенде часто содержат лишние для AI данные (ID для React-ключей, локальные таймстампы). Эта функция очищает массив сообщений, оставляя только role и content, что экономит токены и предотвращает ошибки API.
В: Что делать, если стриминг обрывается на середине длинного ответа? О: Проверьте параметр maxDuration в route.ts. На бесплатном тарифе Vercel лимит составляет 10 секунд, на Pro — до 300. Также убедитесь, что вы используете result.toDataStreamResponse(), который корректно обрабатывает протокол стриминга.
В: Можно ли добавить системный промпт (инструкцию для бота)? О: Да, в функции streamText добавьте поле system: streamText({ model: ..., system: "Ты — эксперт по коду, отвечай кратко", messages: ... }).
Конспект создан на основе видео «Build an AI Chatbot with Vercel AI SDK and Chakra UI» канала Esther Adebayo. Все права на оригинальный материал принадлежат авторам. Источник: https://www.youtube.com/watch?v=lp1RtS7RKtw