📡 AI в GraphQL: единый слой данных

🔥 Проблема: AI в компонентах — это хаос

Типичная интеграция AI сегодня выглядит так: компонент дергает /api/ai/generate, сам формирует промпт, обрабатывает стриминг, кэширует ответ в локальном стейте.

На маленьком проекте это терпимо. Но как только появляются несколько AI-функций (суммаризация, перевод, генерация), несколько провайдеров (OpenAI, Anthropic), и нужно комбинировать AI-ответы с данными из БД — фронтенд превращается в спагетти.

Каждый компонент тащит свою логику, дублируются запросы, теряется контроль над кэшированием, а расходы на токены растут.

Корень проблемы: AI воспринимается как исключение, а не как рядовой источник данных.

🏗️ Решение: GraphQL как единая точка входа Добавляем AI в GraphQL-схему как обычный data source. Фронтенд отправляет один запрос, где одни поля приходят из БД, другие — генерируются AI. Фронтенд не знает, где какое поле взялось.

❌ Без GraphQL - 2-3 отдельных запроса - Фронтенд знает про AI (URL, промпт) - Кэширование ручное, в стейте - Объединение данных на фронтенде - Переиспользование только в компоненте

✅ С GraphQL - Один запрос на всё - Фронтенд не знает про AI (просто поле) - Кэширование авто, Apollo Client - Объединение данных на бэкенде - Переиспользование везде, где нужны данные

📡 AI в GraphQL: единый слой данных | Сетка — социальная сеть от hh.ru