Продукты

Продукты — готовые приложения-агенты, которые можно развернуть из каталога в несколько кликов: Мультиагент, Исследовательский агент, Аналитический агент, Агент данных, Прокси-агент, а также приложения для чатботов, Телеграма, тестирования интерфейсов, работы с клиентами, новостей и корпоративного портала. Продукт ставится из диалога «Новый агент» вместе со связанным агентом — учётные данные генерируются сами, переменные подставляются заранее, а приложение и агент сами узнают друг о друге. Никакого ручного создания файлов настройки и обмена ключами.

Что такое продукт

Продукт — это папка-шаблон в каталоге продуктов (по умолчанию /project/products, можно указать свою переменной AGENT_PRODUCTS): файл описания product.json (название, описание, иконка, схема переменных), шаблон конфигурации приложения compose.yml, вспомогательные файлы и, опционально, собственный логотип (logo.svg/logo.png). Каталог читается при каждом показе: добавить продукт — значит положить папку с шаблоном в каталог, перезапуск не нужен. Повреждённый файл описания не ломает каталог — такой шаблон показывается с запасной идентичностью.

Установка со связанным агентом

Продукты разворачиваются из диалога «Новый агент»: переключатель типа предлагает карточку отдельного агента и карточку каждого продукта каталога. Карточки подписаны короткими именами, как и сами приложения: «Аналитика», «Данные», «Прокси», «Исследования», «Чатбот», «Телеграм», «Тесты», «Новости», «Портал»; у CRM и Мультиагента короткого имени нет, они показываются как есть. Диалог собирает имя, сервер, образ, порт (заранее подставлен из шаблона) и значения переменных. Переменная типа «agent» (Связанный агент) по умолчанию указывает на первый отдельный агент сервера — повторно использовать уже работающего агента выгоднее, чем создавать второго; а если на сервере ни одного агента нет, предлагается «Создать нового агента», и мастер создаёт полноценного отдельного агента тем же механизмом, что и при обычном создании. Так или иначе приложение получает адрес и ключ связанного агента для связи.

У развёртывания — две записи: одна для приложения (слаг вида {шаблон}-app или объявленный appSlug) и, когда связанный агент создан, ещё одна для агента — с именем и слагом шаблона. Оба имени получают свободный вариант («Research App 2», research-app-2), если заняты на сервере. Учётные данные (логин пользователя, пароли, секреты, ключ API) генерируются сервером — для установки не нужно ничего знать заранее.

Новое приложение создаётся с закрытым портом: снаружи оно открыто только по подпапке сервера. Прямые адреса вида хост:порт настраиваются на вкладке «Порты»: у каждой привязки свой переключатель «Публичный порт». Пока он выключен, порт доступен только внутри сервера — по адресу 127.0.0.1, то есть через nginx и с самого сервера; включённый порт публикуется на всех сетевых интерфейсах. Строки привязок можно добавлять и удалять (новая строка появляется с закрытым портом), а изменения вступают в силу при следующем пересоздании приложения. Мастер установки собирает те же привязки заранее, с такими же переключателями, поэтому после развёртывания ничего доделывать не нужно.

Каталог продуктов

  • Мультиагент (порт 6000) — сам MultiAgent как продукт: связанный агент по умолчанию и переменные для собственного ассистента (own-agent);
  • Исследовательский агент (Research Agent, порт 6010) — исследования и планирование; общая папка документов /project/apps/research и общая база Postgres, если она настроена на сервере;
  • Аналитический агент (Analytics Agent, порт 6020) — анализ и визуализация данных, со связанным агентом для функции «редактирование с помощью ИИ»;
  • Агент данных (Data Agent, порт 6030) — подготовка данных: связанный агент пишет сценарии, приложение запускает их по расписанию; озеро данных лежит в общей папке, которую видят обе стороны, и Postgres, если он настроен на сервере;
  • Прокси-агент (Proxy Agent, порт 6040) — единая точка входа к ИИ-моделям с собственной базой данных;
  • Агент чатботов (Chatbot Agent, порт 6050) — боты для мессенджеров со связанным агентом;
  • Телеграм-агент (Telegram Agent, порт 6060) — работа с Telegram: каналы, публикации, аналитика;
  • Тест-агент (TestAgent, порт 6070) — тестирование интерфейсов: проверки по правилам, запуски по расписанию, отслеживание ошибок и автоисправление через связанного агента;
  • CRM-агент (CRM Agent, порт 6080) — работа с клиентами и сделками;
  • Новостной агент (News Agent, порт 6090) — новостная платформа: наблюдение за источниками, сбор и обработка новостей, оповещения, дайджесты и публикации;
  • Портал-агент (Portal Agent, порт 6100) — конструктор корпоративных порталов: связанный агент собирает и поддерживает страницы и публикует их на открытом сайте.

Возможности шаблона объявляются в его файле описания: sslEnvVar — поддержка самоподписанного HTTPS (переключатель SSL есть только у таких шаблонов), databaseEnvVar — строка подключения к общей базе Postgres сервера, когда она настроена (иначе приложение без проблем работает на встроенной базе).

Связь приложение ↔ агент

Когда шаблон объявляет переменные адреса и ключа приложения (например, у исследовательского агента это RESEARCH_APP_URL/RESEARCH_APP_KEY, а у аналитического — ANALYTICS_APP_URL/ANALYTICS_APP_KEY), каждый связанный агент получает в своей конфигурации две производные строки: адрес приложения для вызовов контейнер-контейнер (внутри одного сервера — адрес docker-сети, между серверами — публичный адрес) и открытый входящий ключ приложения. Строки выводятся при сборке конфигурации и пересоздаются при каждом развёртывании; один агент могут связывать несколько приложений — тогда значения объединяются через запятую (адреса и ключи — параллельные списки).

Шаблон multiagent сам объявляет связанного агента: в его конфигурацию выводятся переменные собственного ассистента (исходящие) и ключ (как отпечаток), а связанный агент получает адрес MultiAgent и открытый ключ. Подробнее — на странице Собственный ассистент.

У Прокси-агента связь устроена так же: развёрнутое приложение принимает машинные вызовы — его программный интерфейс включается отпечатком ключа, — а связанный агент получает адрес приложения и сам ключ, поэтому работает с ним без ручной настройки.

Папки приложения

У приложения и связанного с ним агента есть общие папки: одни и те же файлы лежат в обоих контейнерах по одному и тому же пути. Благодаря этому агент может разобрать данные приложения, а приложение — данные агента.

  • Настройки и документы — /project/apps/{папка}: рабочая папка приложения внутри репозитория связанного агента. Поэтому документы попадают в историю изменений агента, а оба контейнера видят их по одному пути (например, /project/apps/research). Имя папки MultiAgent выводит из имени шаблона — отдельно указывать его не нужно;
  • Данные приложения — /apps/{папка}: базы, файлы и всё, что приложение создаёт само. Тот же путь видит и связанный агент — он может проверить, починить или выгрузить эти данные;
  • Данные агента — /data: приложение видит всю папку данных связанного агента. Озеро данных Агента данных живёт в этом же общем дереве, поэтому результаты его сценариев доступны и агенту.

Общих папок нет, когда агент не связан или живёт на другом сервере: тогда каждая сторона работает только со своими файлами.

Кроме папок, в агента устанавливается менеджерский навык приложения — набор инструкций, который учит агента управлять этим приложением. Навык всегда лежит в агенте по одному и тому же пути, а язык выбирается по бренду сервера, на котором живёт агент: на серверах Pastukhov ставится русский вариант навыка, на серверах Xedant — английский. Поэтому агент и приложение говорят на одном языке, и переключать ничего вручную не нужно.

Управление

Продукт управляется как обычная запись агента с меткой «Продукт»: жизненный цикл (пересоздание тянет свежий образ — отдельной команды «скачать образ» нет), журналы по всей конфигурации (покрывают все сервисы стека), маршрут в Nginx. Переменные и связанный агент редактируются на вкладке «Продукт» (кнопка «Сохранить и пересоздать» применяет изменения; связь можно перенацелить, создать нового агента или отключить выбором «Нет»). Продукт не работает как обычный агент: у него нет подключения к живому каналу чатов и отражения чатов, а кнопка «Проверить API» отвечает, что тест для продуктов не поддерживается — у приложения свои команды API.

На вкладке «Окружение» у приложения можно задать свои строки вида КЛЮЧ=значение. Значения собираются по порядку: сначала строка из шаблона, затем общие переменные всех агентов и приложений сервера, а в конце — ваши строки этой записи. Побеждает то, что идёт последним, поэтому одной записью можно переопределить общую настройку, не трогая остальные.

Каждый шаблон передаёт приложению назначенный ключ лицензии переменной AGENT_LICENSE — так же, как обычному агенту. Образ приложения выбирается по бренду сервера: на сервере бренда Pastukhov разворачивается русская сборка, и приложение сразу стартует с русским языком, даже если сам MultiAgent работает под другим брендом.

Продукт «Мультиагент» — особый случай: если он развёрнут на сервере, принадлежащем клиенту, управление сервером можно передать этому экземпляру. Как это устроено — на странице Передача сервера.

← Оглавление документации