AI-ассистент — чат, встроенный в Deckhouse Development Portal (DDP, портал). Он отвечает на вопросы о портале, анализирует данные каталога и выполняет задачи с помощью инструментов MCP (Model Context Protocol).
На вопросы в AI-ассистенте отвечает AI-агент. По умолчанию выбран платформенный агент, который разворачивается вместе с порталом. Агент обращается к языковой модели через AI-провайдера пользователя.
Для работы с AI-ассистентом требуется доступ хотя бы к одному включённому агенту: глобальное use:ai-agents или объектное use:ai-agent. Владение даёт права при включённом owner-is-admin.
Подключение AI-провайдера
AI-провайдер — подключение к языковой модели. Провайдер нужен для работы с платформенным агентом и с внешними агентами, которым разрешён прокси моделей DDP.
Провайдеры пользователя настраиваются в разделе «Профиль» → вкладка «AI-провайдеры». Провайдер можно подключить из шаблона, подготовленного администратором, или задать свою конфигурацию.
Если администратор выдал доступ к шаблону AI-провайдера с общим токеном, провайдер из этого шаблона уже отображается в списке с отметками «из шаблона» и «общий токен». Такой провайдер не подключается вручную и не удаляется.
Подключение из шаблона
Чтобы подключить провайдера из шаблона:
- Откройте «Профиль» → вкладка «AI-провайдеры».
- Нажмите «Из шаблона».
- Выберите шаблон провайдера.
- Укажите название провайдера и выберите модель.
- В поле «Токен» введите свой токен для API провайдера.
- Нажмите «Сохранить».
URL, метод и заголовки подставляются из шаблона. В провайдере из шаблона изменяются только название, модель и токен; чтобы сохранить текущий токен при редактировании, оставьте поле «Токен» пустым.
Своя конфигурация
Чтобы подключить провайдера со своей конфигурацией:
- Откройте «Профиль» → вкладка «AI-провайдеры».
- Нажмите «Своя конфигурация».
- Заполните поля провайдера, как описано в разделе «Параметры провайдера».
- Нажмите «Сохранить».
Параметры провайдера
Своя конфигурация провайдера задаётся полями:
| Поле | Обязательность | Описание |
|---|---|---|
| «Название» | Да | Название провайдера. По названию провайдер выбирается в чате и в элементе процесса «AI-агент» |
| «Модель» | Да | Название модели, например gpt-4o |
| «URL» | Да | URL API провайдера, например https://api.openai.com/v1/chat/completions |
| «Метод» | Да | HTTP-метод запроса, обычно POST |
| «Заголовки» | Нет | HTTP-заголовки запроса. Токен подставляется вместо {{ .token }} |
| «Токен» | Нет | Токен API провайдера. Хранится в зашифрованном виде и после сохранения не отображается |
| «Поле ответа» | Нет | Путь к тексту ответа модели в JSON-ответе провайдера, например choices.0.message.content |
| «Шаблон тела запроса» | Нет | JSON-шаблон тела запроса с переменными {{.prompt}} и {{.model}} |
При сохранении проверяется формат URL провайдера. URL не должен содержать имя пользователя и пароль.
Агенты обращаются к модели в формате OpenAI Chat Completions, поэтому для работы с агентами укажите API, совместимый с OpenAI: URL оканчивается на /v1 или /v1/chat/completions.
Поля «Поле ответа» и «Шаблон тела запроса» используются только при сжатии длинной истории чата в резюме (подробнее — в разделе «Передача контекста»).
Токен в заголовках
Токен провайдера подставляется в заголовки вместо выражения {{ .token }}:
Authorization: Bearer {{ .token }}Если в заголовках нет выражения {{ .token }}, агенты передают токен модели как API-ключ.
Пример провайдера для OpenAI
Пример конфигурации провайдера для API OpenAI:
| Поле | Значение |
|---|---|
| «Название» | ChatGPT |
| «Модель» | gpt-4o |
| «URL» | https://api.openai.com/v1/chat/completions |
| «Метод» | POST |
| «Заголовки» | Authorization: Bearer {{ .token }} |
| «Токен» | API-ключ OpenAI |
| «Поле ответа» | choices.0.message.content |
Работа с AI-ассистентом
Окно «AI-ассистент» открывается кнопкой с подсказкой «AI-ассистент» в правой части верхней панели портала. Окно перемещается за заголовок и меняет размер за края и углы; положение и размер окна сохраняются в браузере.
При закрытии окна диалог сохраняется: повторное открытие продолжает тот же чат.
Выбор агента и провайдера
В поле «Агент» вверху окна выбирается агент, который отвечает на вопросы. В списке отображаются платформенный агент и внешние агенты с отметкой «Внешний», доступные пользователю. Если выбранный агент выключен, удалён или недоступен пользователю, рядом с ним отображается отметка «недоступен».
Поле «Провайдер» отображается, если модель агенту предоставляет портал: для платформенного агента и для внешних агентов с разрешённым прокси моделей DDP. Для провайдера из шаблона со списком доступных моделей рядом отображается поле выбора модели.
Чаты
Диалог ведётся в чатах. Слева — список чатов, сгруппированный по датам «Сегодня», «Вчера» и «Ранее», и кнопка «Новый чат».
Чаты имеют следующие настройки:
- До 50 чатов на пользователя. При достижении лимита кнопка «Новый чат» недоступна и отображается пояснение. Удалите ненужный чат через меню «Действия с чатом», чтобы создать новый. Этот же лимит действует при открытии нового чата рабочего пространства.
- До первого сообщения у чата служебное название. После первого вопроса название подставляется по тексту (можно «Переименовать»).
- Удаление чата вместе с историей сообщений в нём необратимо.
Если агент не смог ответить, под сообщением отображается «Агент не смог ответить» и кнопки «Повторить» и «Подробности».
Передача контекста
Переключатель «Передавать контекст» задаётся для каждого чата отдельно:
- «Включено» — в запрос уходит контекст переписки в этой теме.
- «Выключено» — только текущее сообщение. Расход токенов ниже, без «памяти» в чате.
При включённом контексте и длинной истории старые реплики не отправляются целиком каждый раз: недавние сообщения идут полностью, более ранняя часть сжимается в резюме отдельным запросом к тому же провайдеру. Для этого запроса используются поля провайдера «Шаблон тела запроса» и «Поле ответа».
Включение передачи контекста увеличивает расход токенов при взаимодействии с моделью.
Инструменты MCP
Агент вызывает инструменты портала, чтобы получить данные или выполнить действие. Доступные инструменты настраивает администратор. Агент использует их с правами пользователя; если нужный инструмент недоступен, обратитесь к администратору.
Кнопка «Инструменты» в окне ассистента открывает список инструментов с типом (internal, external, custom), числом аргументов и примером запроса. Кнопка «В поле ввода» вставляет пример в поле ввода.
Вызовы инструментов отображаются в ответе агента со статусом «Вызывается», «Вызван», «Ошибка» или «Отменён», длительностью, аргументами и текстом ошибки.
Встроенные инструменты (internal) и их параметры описаны в справочнике MCP-сервера.
Вопросы о каталоге и процессах
Если администратор предоставил агенту инструменты работы с каталогом, задавайте вопросы о сущностях, связях и запусках процессов. Например:
Какие сервисы принадлежат моим командам? Сгруппируй их по языку разработки
и покажи количество в каждой группе. Используй свойства из схемы каталога.Для анализа связей укажите исходную сущность и направление интересующей зависимости:
Покажи родителей сущности payments на три уровня вверх.
Для каждой сущности укажи путь связи и состояние проверок.Для диагностики процессов задайте период и ожидаемую детализацию:
Найди неуспешные запуски процессов за вчера для сущностей моих команд.
Покажи шаг и причину ошибки каждого запуска.Если название неоднозначно, уточните ресурс или UUID сущности. Ответ зависит от заполненности каталога и записанных событий процесса. Одна лишь длительность запуска не подтверждает, что процесс завис.
Работа с проектом
Для задач с файлами прикрепите рабочее пространство кнопкой «Прикрепить рабочее пространство». В этом режиме отвечает OpenCode пространства; IDE и чат используют одну рабочую копию. Настройки подтверждений и очереди описаны в руководстве по чату рабочего пространства.
Если агенту из каталога доступны curated_get_workspace_templates, curated_create_workspace, curated_get_workspace и curated_attach_workspace, можно попросить его подготовить пространство прямо из чата. Например:
Создай рабочее пространство из шаблона team-development для https://gitlab.example.com/team/service.git на 8 часов и прикрепи его к этому чату. После запуска добавь тест обработчика /healthz.Агент получает параметры шаблона, создаёт пространство с правами пользователя и прикрепляет его после готовности. Попросите администратора выдать нужные инструменты и доступ к шаблону, если сценарий недоступен.
Кнопка «Моя статистика» открывает личные показатели использования AI.
Устранение неполадок
Типовые ошибки AI-ассистента:
| Сообщение | Причина и решение |
|---|---|
| «Для вашей учётной записи не настроен AI-провайдер. Добавьте его в настройках профиля.» | У пользователя нет AI-провайдера. Подключите провайдера, как описано в разделе «Подключение AI-провайдера» |
| «Выберите AI-провайдера» | Для выбранного агента нужен провайдер. Выберите провайдера в поле «Провайдер» |
| «Недостаточно прав для запуска этого AI-агента» | Нет глобального use:ai-agents или объектного use:ai-agent на выбранного агента; проверьте роль и доступ к агенту |
| «LLM-провайдер отклонил запрос. Проверьте API-ключи в настройках профиля.» | Провайдер не принял токен. Проверьте токен и заголовки провайдера |
| «Превышен лимит запросов к LLM-провайдеру. Попробуйте позже.» | Провайдер ограничил число запросов |
Ошибки вызова внешних агентов описаны в разделе «Внешние агенты».