Экспериментальный функционал

AI-ассистент — это интеллектуальный помощник, встроенный в Deckhouse Development Platform (DDP). Он отвечает на вопросы о платформе, анализирует данные каталога и выполняет различные задачи с использованием инструментов MCP (Model Context Protocol).

AI-ассистент использует настраиваемые AI-провайдеры для обработки запросов и может работать с различными языковыми моделями, включая OpenAI GPT, Ollama и любые модели, доступные через совместимый REST API.

Подключение AI-провайдера

Пользователь самостоятельно настраивает AI-провайдеры в своём профиле.

Для подключения нового AI-провайдера:

  1. Откройте «Профиль» → вкладка «AI-провайдеры».
  2. Нажмите «Добавить».
  3. Заполните «Название», «Модель», «URL», «Метод» и «Заголовки»; при необходимости укажите «Поле ответа» и «Шаблон тела запроса».
  4. При использовании токенов в заголовках предпочтительно сохранить учётные данные и подставлять их через шаблонизацию.
  5. Нажмите «Сохранить».

Примеры для распространённых API приведены в разделе «Примеры конфигурации».

Учётные данные для провайдеров

Для безопасного хранения токенов и ключей используется система учётных данных: они шифруются в базе и подставляются в заголовки запросов через шаблонизацию.

Добавление учётных данных

Для добавления новых учётных данных:

  1. В форме создания или редактирования провайдера нажмите «Управление учётными данными».
  2. В диалоге нажмите «Добавить учётные данные».
  3. Введите пару «Ключ» / «Значение» (например, api_key и секрет).
  4. Нажмите «Сохранить».

Изменение учётных данных

Обратите внимание, что:

  • Ключ существующих учётных данных нельзя изменить: удалите запись и создайте новую.
  • Значение можно обновить, введя новое.
  • После сохранения значения не показываются в интерфейсе.

Шаблонизация в заголовках

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

Authorization: Bearer {{ .credentials.api_key }}

где Authorization — заголовок, credentials — место хранения учётных данных в зашифрованном виде, а api_key — ключ, заданный в учётных данных.

Поле ответа

В «Поле ответа» задается путь к тексту ответа модели (например, choices.0.message.content) в теле ответа API (тело ответа возвращается в JSON-формате) . Если значение поля не задано, платформа попытается найти текст ответа автоматически.

Чтобы подобрать путь, выполните тестовый запрос к API, откройте ответ и найдите в теле ответа (возвращается в формате JSON) название поля с текстом ответа модели.

Шаблон тела запроса

В поле «Шаблон тела запроса» вводится структура в формате JSON, которая отправляется в API.

Используются следующие переменные:

  • {{.prompt}} — текст запроса пользователя.
  • {{.model}} — модель из настроек провайдера.

Примеры структуры

OpenAI-совместимый чат:

{
  "model": "{{.model}}",
  "messages": [
    {
      "role": "user",
      "content": "{{.prompt}}"
    }
  ],
  "temperature": 0.7
}

Другой формат сообщений:

{
  "messages": [
    {
      "content": "{{.prompt}}",
      "role": "user"
    }
  ],
  "model": "{{.model}}",
  "stream": false
}

Минимальный вариант:

{
  "query": "{{.prompt}}",
  "model_name": "{{.model}}"
}

Шаблон должен быть валидным JSON. В него можно добавлять поля вроде temperature, max_tokens и т. д.

Примеры конфигурации

API OpenAI (Chat Completions)

  1. «Название» — по желанию (например, ChatGPT).
  2. «Модель» — например, gpt-4 или gpt-3.5-turbo.
  3. «URL» — https://api.openai.com/v1/chat/completions.
  4. «Метод» — POST.
  5. «Заголовки» — например, Authorization: Bearer {{ .credentials.openai_api_key }} (ключ openai_api_key заведите в «Управлении учётными данными»).
  6. «Поле ответа» — choices.0.message.content.
  7. «Шаблон тела» — как в первом примере в разделе «Шаблон тела запроса».

Ollama (/api/generate)

  1. «URL» — http://localhost:11434/api/generate (или адрес вашей Ollama).

  2. «Метод» — POST.

  3. «Поле ответа» — response.

  4. «Шаблон тела»:

    {
      "model": "{{.model}}",
      "prompt": "{{.prompt}}",
      "stream": false
    }

Произвольный REST API

  • «URL» — эндпоинт вашего сервиса (например, https://api.example.com/v1/chat).
  • «Метод» — обычно POST.
  • «Заголовки» — например, Authorization: Bearer {{ .credentials.api_key }}, Content-Type: application/json.
  • «Поле ответа» — путь к полю с текстом в вашем JSON.
  • «Шаблон тела» — на базе первого примера в разделе «Шаблон тела запроса», при необходимости добавьте поля (max_tokens и т. д.).

Работа с AI-ассистентом

Панель ассистента открывается справа; кнопка запуска — в правом нижнем углу экрана.

Выбор провайдера

Вверху панели чата — список провайдеров. Если доступен один провайдер, он выбирается автоматически.

Чаты

Диалог ведётся в чатах. Слева — список чатов и «Новый чат».

Чаты имеют следующие настройки:

  1. До 20 чатов на пользователя. При достижении лимита удалите старые чаты через меню «⋯».
  2. До первого сообщения у чата служебное название. После первого вопроса название подставляется по тексту (можно «Переименовать»).
  3. Удаление чата вместе с историей сообщений в нем необратимо.

Передача контекста

Переключатель «Передавать контекст» задаётся для каждого чата отдельно:

  1. «Включено» — в запрос уходит контекст переписки в этой теме.
  2. «Выключено» — только текущее сообщение. Расход токенов ниже, без «памяти» в чате.

При включённом контексте и длинной истории старые реплики не отправляются целиком каждый раз: недавние сообщения идут полностью, более ранняя часть сжимается в резюме отдельным запросом к тому же провайдеру.

Включение передачи контекста увеличивает расход токенов при взаимодействии с моделью.

Инструменты MCP

Список инструментов, параметры и примеры описаны в документации MCP-сервера. В одном запросе модель может вызвать несколько инструментов. В панели чата можно раскрыть «Доступные инструменты», посмотреть аргументы и скопировать пример в поле ввода кликом.