Облачная платформаEvolution

Интеграция веб-интерфейса инструмента SQL-аналитики Wren AI с Foundation Models


С помощью этого руководства вы развернете интеллектуальную аналитическую платформу Wren AI на виртуальной машине в облаке Cloud.ru Evolution:

  • создадите кластер базы данных Managed PostgreSQL®;

  • создадите виртуальную машину Ubuntu 22.04;

  • назначите ей публичный IP-адрес;

  • установите Docker и Docker Compose;

  • запустите Wren AI;

  • опубликуете сервис через Nginx с SSL-сертификатом, выпущенным Let’s Encrypt.

В результате вы сконфигурируете Wren AI для работы с Foundation Models и получите сервис, готовый к анализу ваших данных.

Вы будете использовать следующие сервисы:

  • Foundation Models — сервис для доступа к API популярных фундаментальных моделей машинного обучения с открытым исходным кодом.

  • «Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.

  • «Публичные IP» — сервис для организации доступа виртуальной машины в интернет.

  • Managed PostgreSQL — управляемая база данных PostgreSQL.

  • VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.

  • Docker — система контейнеризации.

  • Docker Compose — инструмент для запуска и управления Docker-контейнерами.

  • Бесплатный сервис nip.io для получения публичного доменного имени и сертификата. Вы также можете использовать собственное зарегистрированное доменное имя и SSL-сертификат для организации доступа.

  • Nginx — веб-сервер для проксирования запросов и организации защищенного HTTPS-доступа к приложению.

  • Let’s Encrypt — сервис для автоматического получения бесплатного SSL-сертификата.

  • Wren AI — SQL-инструмент с открытым исходным кодом, который преобразует вопросы на естественном языке в точные SQL-запросы.

Шаги:

Перед началом работы

  1. Если вы уже зарегистрированы, войдите под своей учетной записью.

1. Разверните необходимые ресурсы в облаке

На этом шаге вы подготовите сеть, группу безопасности, виртуальную машину и кластер Managed PostgreSQL®. Все ресурсы будут расположены в одной VPC, что обеспечит сетевую изоляцию.

  1. Создайте виртуальную сеть с названием wren-ai-VPC.

  2. Создайте подсеть со следующими параметрами:

    1. Названиеwren-ai-subnet.

    2. Адрес10.10.1.0/24.

    3. VPCwren-ai-VPC.

    4. DNS-серверы8.8.8.8.

  3. Создайте группу безопасности с названием wren-ai в той же зоне доступности и добавьте в нее правила:

    Трафик

    Протокол

    Порт

    Тип источника/адресата

    Источник/Адресат

    Входящий

    TCP

    80

    IP-адрес

    0.0.0.0/0

    Входящий

    TCP

    443

    IP-адрес

    0.0.0.0/0

    Исходящий

    Любой

    IP-адрес

    0.0.0.0/0

  4. Создайте виртуальную машину со следующими параметрами:

    • Названиеwren-ai.

    • Образ — на вкладке Публичные выберите образ Ubuntu 22.04.

    • Сетевой интерфейс — выберите тип Подсеть с публичным IP.

    • VPCwren-ai-VPC.

    • Подсетьwren-ai-subnet.

    • Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.

    • Группы безопасности — добавьте группу wren-ai и группу по умолчанию.

    • Логинuser1.

    • Метод аутентификации — выберите публичный ключ и укажите SSH-ключ, созданный ранее.

    • Имя хостаwren-ai.

  5. Создайте кластер Managed PostgreSQL со следующими параметрами:

    • Название кластераwren-ai.

    • Название базы данныхwrenai.

    • Версия PostgreSQL17.

    • РежимСтандарт.

    • ТипSingle.

    • Подсетьwren-ai-subnet.

  6. Сохраните IP-адрес, он понадобится для подключения к виртуальной машине и настройки сервиса.

  7. Убедитесь, что ресурсы созданы и отображаются в личном кабинете:

    • На странице сервиса VPC отображается сеть wren-ai-VPC с подсетью wren-ai-subnet.

    • На странице сервиса «Группы безопасности» отображается группа безопасности wren-ai со статусом «Создана».

    • На странице сервиса «Виртуальные машины» отображается виртуальная машина wren-ai со статусом «Запущена».

    • На странице сервиса Managed PostgreSQL® отображается кластер wren-ai со статусом «Доступен».

2. Сгенерируйте API-ключ для доступа к Foundation Models

На этом шаге вы создадите API-ключ для Foundation Models.

  1. На верхней панели слева нажмите Кнопка с изображением девяти точек и перейдите в раздел Пользователи, на вкладку Сервисные аккаунты.

  2. Нажмите на название сервисного аккаунта, который будете использовать для отправки запроса к модели.

    ../_images/s__service_account_n.webp
  3. В разделе Учетные данные доступа нажмите Создать API-ключ.

    ../_images/s__create_key1.webp
  4. Введите название и описание API-ключа, которое поможет в будущем идентифицировать его среди других ключей.

  5. Заполните параметры API-ключа:

    • Сервисы — Foundation Models.

    • Время действия — срок действия API-ключа и часовой пояс. Вы можете установить значение от одного дня до одного года с текущей даты. Если параметр не задан, срок действия ключа устанавливается на максимальное значение — один год. Из соображений безопасности рекомендуется выставлять средние значения, например 90 дней.

    • Интервал работы ключа — один или несколько интервалов времени, в которые можно использовать API-ключ.

  6. Нажмите Создать.

  7. Сохраните Key Secret. После закрытия окна получить его будет нельзя.

    Созданный API-ключ появится в списке ключей в статусе «Активен». Подробнее о работе с API-ключом.

  8. Сохраните API-ключ, он будет использоваться для конфигурации сервиса.

3. Настройте окружение на виртуальной машине

На этом шаге вы установите необходимые пакеты и настроите систему на виртуальной машине.

  1. Подключитесь к виртуальной машине wren-ai через серийную консоль или по SSH.

  2. Обновите систему и установите необходимые зависимости:

    sudo apt update && sudo apt upgrade -y &&\
    sudo apt install -y curl apt-transport-https\
    ca-certificates\
    software-properties-common\
    gnupg2\
    lsb-release\
    apache2-utils
  3. Установите Docker:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io -y
  4. Назначьте текущему пользователю права на запуск Docker:

    sudo usermod -aG docker $USER
    newgrp docker
  5. Установите Docker Compose:

    sudo apt-get install docker-compose -y
  6. Проверьте, что Docker и Docker Compose установлены корректно:

    docker --version
    docker compose version
  7. Установите сервер Nginx:

    sudo apt install nginx -y
    sudo systemctl start nginx
    sudo systemctl enable nginx
  8. Установите Let’s Encrypt и плагин для Nginx:

    sudo apt install certbot python3-certbot-nginx -y

4. Настройте Nginx, HTTPS и авторизацию

  1. В терминале или серийной консоли виртуальной машины настройте межсетевой экран:

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable
  2. Создайте пользователя и пароль для безопасного доступа к сервису WrenAI, заменив <user-name> на имя вашего пользователя:

    sudo htpasswd -c /etc/nginx/.htpasswd <user-name>
    sudo chmod 644 /etc/nginx/.htpasswd
  3. Создайте конфигурационный файл Nginx:

    sudo nano /etc/nginx/sites-available/wrenai.conf
  4. Вставьте конфигурацию, заменив <ip_address> на IP-адрес вашей виртуальной машины:

    server {
    listen 80;
    server_name wrenai.<ip_address>.nip.io www.wrenai.<ip_address>.nip.io;
    location / {
    # Basic Auth configuration
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass http://localhost:3000/;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    }
    }
  5. Примените конфигурацию и перезапустите Nginx:

    sudo ln -sf /etc/nginx/sites-available/wrenai.conf /etc/nginx/sites-enabled/wrenai.conf
    sudo rm -f /etc/nginx/sites-enabled/default
    sudo nginx -t
    sudo systemctl reload nginx
  6. Проверьте, что Nginx работает:

    sudo systemctl status nginx

    Сервис Nginx должен быть в статусе «active (running)».

  7. Перейдите по адресу http://wrenai.<ip_address>.nip.io, где <ip_address> —  IP-адрес вашей виртуальной машины.

    Откроется страница с текстом «502 Bad Gateway».

  8. Запустите команду для выпуска SSL-сертификата:

    sudo certbot --nginx -d wrenai.<ip_address>.nip.io --redirect --agree-tos -m <email>

    Где:

    • <ip_address> — IP-адрес вашей виртуальной машины.

    • <email> — email для регистрации сертификата.

    Внимание

    При выпуске сертификата через nip.io может возникнуть ошибка «too many certificates (25000) already issued for «nip.io»». Это происходит из-за популярности сервиса nip.io. При возникновении ошибки повторите команду выпуска сертификата. Если ошибка сохраняется, рассмотрите использование собственного доменного имени.

  9. После выпуска сертификата перейдите по адресу https://wrenai.<ip_address>.nip.io.

    Откроется страница с текстом «502 Bad Gateway». В свойствах сайта браузер отметит соединение как безопасное.

5. Разверните приложение Wren AI

На этом шаге вы развернете серверное приложение Wren AI с помощью Docker Compose.

  1. В терминале или серийной консоли виртуальной машины создайте структуру проекта:

    mkdir -p $HOME/wrenai
    cd $HOME/wrenai
  2. Создайте файл docker-compose.yml:

    nano docker-compose.yml
  3. В созданный файл вставьте код Docker Compose.

  4. Создайте файл при помощи команды nano .env и укажите в нем переменные проекта:

    COMPOSE_PROJECT_NAME=wrenai
    PLATFORM=linux/amd64
    PROJECT_DIR=.
    # service port
    WREN_ENGINE_PORT=8080
    WREN_ENGINE_SQL_PORT=7432
    WREN_AI_SERVICE_PORT=5555
    WREN_UI_PORT=3000
    IBIS_SERVER_PORT=8000
    WREN_UI_ENDPOINT=http://wren-ui:${WREN_UI_PORT}
    # Managed PostgreSQL Credentials
    DB_TYPE=postgres
    PG_HOST=<pg_host>
    PG_PORT=<pg_port>
    PG_USER=<pg_user>
    PG_PASSWORD=<pg_password>
    PG_DATABASE=wrenai
    PG_SSL=true
    # ai service settings
    QDRANT_HOST=qdrant
    SHOULD_FORCE_DEPLOY=1
    # vendor keys
    OPENAI_API_KEY=<api_key>
    OPENAI_BASE_URL=https://foundation-models.api.cloud.ru/v1
    # version
    WREN_PRODUCT_VERSION=0.29.1
    WREN_ENGINE_VERSION=0.22.0
    WREN_AI_SERVICE_VERSION=0.29.0
    IBIS_SERVER_VERSION=0.22.0
    WREN_UI_VERSION=0.32.2
    WREN_BOOTSTRAP_VERSION=0.1.5
    # user id (uuid v4)
    USER_UUID=<user_id>
    # telemetry
    TELEMETRY_ENABLED=false
    HOST_PORT=3000
    AI_SERVICE_FORWARD_PORT=5555
    # Wren UI
    EXPERIMENTAL_ENGINE_RUST_VERSION=false
    # Wren Engine
    LOCAL_STORAGE=.

    Где:

    • <api-key> —  API-ключ для доступа к сервису Foundation Models, сгенерированный на шаге 2.

    • <user_id> — уникальный идентификатор пользователя в формате UUID 4.

    • <pg_host> — IP-адрес кластера Managed PostgreSQL®.

    • <pg_port> — порт кластера Managed PostgreSQL®, обычно 5432.

    • <pg_user> — имя пользователя кластера Managed PostgreSQL®.

    • <pg_password> — пароль пользователя кластера Managed PostgreSQL®.

  5. Создайте файл конфигурации сервиса config.yaml:

    nano config.yaml
  6. В созданный файл вставьте код конфигурации сервиса и замените в нем следующие параметры на свои:

    • <foundation_models_model_name> — название LLM-модели Foundation Models для обработки запросов, например openai/gpt-oss-120b.

    • <foundation_models_context_size> — контекстное окно LLM-модели. Максимальный контекст можно узнать в карточке модели в разделе Foundation Models → Модели личного кабинета.

    • <foundation_models_embedder_name> — название модели-эмбеддера Foundation Models, например Qwen/Qwen3-Embedding-0.6B.

  7. Запустите сервис:

    docker-compose up -d
  8. Проверьте, что сервис запущен:

    docker compose ps
  9. Перейдите по адресу https://wrenai.<ip_address>.nip.io, где <ip_address> —  IP-адрес вашей виртуальной машины.

    Откроется страница Wren AI, при первом входе используйте пароль, созданный на шаге 4.

    ../_images/s__wren_ai_connection.webp

6. (Опционально) Создайте базу с аналитическими данными и наполните ее

На этом шаге вы создадите базу данных.

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

  1. В терминале или серийной консоли виртуальной машины обновите систему и установите необходимые зависимости:

    sudo apt update && sudo apt upgrade -y &&\
    sudo apt install -y python3-pip
  2. Создайте структуру проекта:

    mkdir -p $HOME/testdata
    cd $HOME/testdata
  3. Создайте файл с зависимостями:

    nano requirements.txt
  4. Вставьте в файл код и сохраните изменения:

    psycopg2-binary>=2.9.9
  5. Установите зависимости:

    pip install -r requirements.txt
  6. Создайте файл setup_db.py:

    nano setup_db.py
  7. В созданный файл вставьте код скрипта, который создает таблицы и добавляет данные в базу, и замените в нем следующие параметры на свои:

    • <pg_host> — IP-адрес кластера Managed PostgreSQL®.

    • <pg_user> — имя пользователя кластера Managed PostgreSQL®.

    • <pg_password> — пароль пользователя кластера Managed PostgreSQL®.

  8. Создайте тестовые данные:

    python3 setup_db.py

7. Подключите приложение Wren AI к вашей базе с аналитическими данными

Внимание

База данных должна быть в одной VPC с виртуальной машиной или быть доступной из интернета.

На этом шаге вы подключите базу данных PostgreSQL для анализа данных на естественном языке.

  1. Перейдите по адресу wrenai.<ip_address>.nip.io/setup/connection.

  2. Выберите PostgreSQL.

  3. Заполните данные для подключения:

    • Display name — название подключения, например База аналитики.

    • Host — IP-адрес кластера Managed PostgreSQL®.

    • Port5432.

    • Database — название базы данных.

    • Username — имя пользователя кластера Managed PostgreSQL®.

    • Password — пароль пользователя кластера Managed PostgreSQL®.

    • Database name — название базы данных в кластере Managed PostgreSQL®, например bi.

    • Use SSL — включите опцию.

    ../_images/s__wren_ai_data_source.webp
  4. Нажмите Next.

  5. Выберите таблицы для построения аналитики.

    ../_images/s__wren_ai_tables.webp
  6. Нажмите Next.

  7. (Опционально) Измените связи между таблицами и нажмите Finish.

  8. В левом нижнем углу нажмите Settings → Project Settings и выберите язык для общения с AI.

  9. В верхнем меню нажмите Home.

  10. В окне чата введите ваш запрос, например «Какая средняя стоимость товара в сервисе?», и дождитесь ответа.

    ../_images/s__wren_ai_chat.webp

8. Отключите доступ по SSH для виртуальной машины

Для повышения безопасности закройте доступ по SSH, после того как вы развернули и настроили сервис.

  1. В личном кабинете Cloud.ru на верхней панели слева нажмите Кнопка с изображением девяти точек и выберите Инфраструктура → Виртуальные машины.

  2. В списке виртуальных машин выберите wren-ai.

  3. Перейдите на вкладку Сетевые параметры.

  4. В строке подсети нажмите Горизонтальное меню и выберите Изменить группы безопасности.

  5. Удалите группу безопасности по умолчанию и сохраните изменения.

  6. Убедитесь, что доступа нет — попробуйте подключиться к виртуальной машине по SSH. После отключения доступа по SSH администрирование сервиса будет доступно через серийную консоль виртуальной машины.

Результат

Вы развернули сервис для SQL-аналитики на естественном языке в облаке Cloud.ru с сетевой изоляцией и публикацией по HTTPS. Полученные навыки помогут вам создавать AI-сервисы с использованием сервисов Foundation Models.