Создание интеллектуального ИИ-ассистента для электронной коммерции с использованием MongoDB
В этом руководстве разработчик Даниэль Кубо (Daniel Kubo) демонстрирует процесс создания автономного ИИ-агента для интернет-магазина, способного взаимодействовать с пользователями в режиме реального времени. В отличие от обычных чат-ботов с жестко заданными сценариями, этот агент использует архитектуру LangGraph для принятия самостоятельных решений: поиска по базе данных, выбора стратегии ответа и адаптации к ошибкам. Проект объединяет Node.js, MongoDB Atlas (векторный поиск и хранение состояний) и Google Gemini в качестве «мозгового центра» системы.
🛠 Подготовка инфраструктуры и настройка MongoDB 2:09
Работа начинается с создания серверной части на Node.js и настройки базы данных в MongoDB Atlas, которая будет служить хранилищем для товаров и векторов.
- Инициализация проекта: В папке
serverвыполняетсяnpm init, устанавливаются необходимые зависимости:typescript,express,langchain,@langchain/google-genai,@langchain/langgraphиzod. - Конфигурация: В
index.tsнастраивается Express-сервер, подключаетсяcorsи парсинг JSON для обработки запросов от фронтенда. - MongoDB: В облачной панели MongoDB Atlas создается кластер (
Cluster0), добавляется текущий IP-адрес для доступа и генерируется строка подключения. - Безопасность: Для доступа к Gemini через Google Cloud Platform создается API-ключ, который вместе со строкой подключения MongoDB сохраняется в файле
.env.
🧠 Генерация данных и векторный поиск 18:25
Чтобы ИИ мог осмысленно искать товары, необходимо наполнить базу данных синтетическими данными и настроить механизмы векторизации.
- Генерация контента: Используется модель
gemini-1.5-flashс температурой 0.7 для создания 10 реалистичных позиций мебели. Структура данных описывается через схему Zod, что обеспечивает строгую типизацию. - Векторизация: Создается функция
create_item_summary, которая превращает детали товара (описание, цены, отзывы) в текстовое резюме. - Хранение: Текстовые резюме преобразуются в векторы с помощью модели
text-embedding-004(768 измерений) и сохраняются в MongoDB Atlas. - Индексация: Настраивается индекс векторного поиска (
vector-index), позволяющий системе выполнять семантический поиск, а не простое сопоставление ключевых слов.
🤖 Логика ИИ-агента (LangGraph) 43:28
Сердце системы — агент, созданный с помощью LangGraph, который определяет, нужно ли обращаться к базе данных или отвечать пользователю напрямую.
- Инструмент поиска: Создается custom-инструмент
item_lookup_tool, который выполняет семантический поиск по базе. В случае отсутствия результатов предусмотрен «fallback» — текстовый поиск по регулярным выражениям. - Рабочий процесс: Граф состояний (StateGraph) управляет циклом:
Агент->Выполнение инструмента->Агент. Состояние разговора сохраняется в MongoDB, что позволяет поддерживать контекст переписки. - Обработка ошибок: Внедрена функция
retry_with_backoff, которая автоматически повторяет запросы к API в случае получения ошибки 429 (превышение лимита запросов).
💻 Фронтенд на React 1:06:32
Для взаимодействия с агентом разработано простое React-приложение с чат-виджетом.
- Компоненты: Созданы основной магазин (
ecommerce-store.js) и чат-виджет (chat-widget.js), использующий React Hooks для управления состоянием переписки. - Взаимодействие: Чат-виджет отправляет сообщения пользователя на бэкенд-эндпоинт
/chat. Агент возвращает ответы, которые динамически добавляются в интерфейс. - UX-детали: Реализована автопрокрутка к последнему сообщению при помощи
useRefиuseEffect, а также визуальное разделение сообщений (агент/пользователь) через CSS.