AI-агенты — функциональность на стадии Preview. Виды агентов, состав настроек и API могут измениться в следующих выпусках без сохранения обратной совместимости.
Внешний агент — AI-агент, который работает вне портала и принимает задачи по протоколу A2A версии 1.0. Портал подключается к агенту по URL его карточки и API-ключу, после чего агента можно выбрать в AI-ассистенте, виджете «AI-чат» и элементе процесса «AI-агент».
Если агентов много и они уже описаны в каталоге, подключайте их через источник агентов: источник создаёт и обновляет подключения сам.
Быстрый старт
Чтобы подключить внешнего агента:
- Перейдите в раздел «AI» → «AI-агенты» → «Каталог» и нажмите «Подключить». Кнопка доступна с разрешением
edit:ai-agents. - На вкладке «Основная информация» заполните «Название» и «Идентификатор».
- На вкладке «Подключение» включите переключатель «Включить агента».
- Укажите «URL Agent Card» — адрес карточки агента, например
https://agents.example.com/.well-known/agent-card.json. - Укажите «API-ключ», который ожидает агент.
- Нажмите «Сохранить».
Агент появится в каталоге с отметкой «Внешний». Запускать его может только владелец подключения — пользователь, который его создал.
Параметры подключения
Форма подключения состоит из вкладок «Основная информация» и «Подключение».
Основная информация
На вкладке «Основная информация» задаются поля:
| Поле | Обязательность | Описание |
|---|---|---|
| «Название» | Да | Название агента в каталоге и в списках выбора агента |
| «Идентификатор» | Да | От 3 до 64 символов: строчные латинские буквы, цифры и дефис. Идентификатор ddp-agent зарезервирован за платформенным агентом |
| «Описание» | Нет | Описание агента |
По идентификатору агент указывается в элементе процесса «AI-агент» и в настройках виджета «AI-чат».
Подключение
Поля вкладки «Подключение» отображаются, когда включён переключатель «Включить агента»:
| Поле | Обязательность | Описание |
|---|---|---|
| «Включить агента» | — | Выключенный агент не отображается в AI-ассистенте, виджетах и шагах процессов |
| «URL Agent Card» | Да | Адрес карточки агента. Портал читает из карточки название, описание и адреса, по которым принимает вызовы агент |
| «Вызывать адрес из карточки агента» | — | Если включено, портал вызывает адрес, объявленный в карточке. Если выключено, портал вызывает базовый URL карточки — адрес из поля «URL Agent Card» без /.well-known/agent-card.json или /.well-known/agent.json |
| «Разрешить прокси моделей DDP» | — | Агент обращается к языковой модели через портал и использует AI-провайдера пользователя, который запустил задачу. Подробнее — в разделе «Языковая модель агента» |
| «API-ключ» | Да | Ключ, который портал передаёт агенту в заголовках X-A2A-Api-Key и Authorization: Bearer при каждом вызове и при чтении карточки |
| «MCP-инструменты» | Нет | Инструменты портала, которые может вызывать агент. Пустой список — агент не получает доступа к инструментам портала |
API-ключ хранится в базе данных в зашифрованном виде и после сохранения не отображается. При редактировании подключения оставьте поле «API-ключ» пустым, чтобы сохранить текущий ключ. При ротации ключа шифрования API-ключи агентов перешифровываются.
Требования к агенту
Портал работает с агентом, который отвечает следующим требованиям:
- поддерживает протокол A2A версии 1.0 с привязкой HTTP+JSON или JSON-RPC;
- публикует карточку агента, доступную из кластера портала;
- принимает API-ключ из заголовка
X-A2A-Api-KeyилиAuthorization: Bearer.
Портал отправляет агенту сообщение A2A и ожидает завершения задачи, опрашивая её состояние каждые 2 секунды. Ответ агента — текст его итогового сообщения.
Метаданные сообщения
В метаданных каждого сообщения A2A портал передаёт агенту доступы, которые ему разрешены:
| Ключ | Когда передаётся | Значение |
|---|---|---|
ddp.mcp.endpoint | Список «MCP-инструменты» не пуст | Адрес MCP-эндпоинта портала, например https://<DOMAIN>/api/v2/agent-mcp |
ddp.mcp.runToken | Список «MCP-инструменты» не пуст | Токен запуска |
ddp.mcp.toolAllowlist | Список «MCP-инструменты» не пуст | Инструменты, разрешённые в этом запуске |
ddp.llm.baseUrl | Включён переключатель «Разрешить прокси моделей DDP» | Адрес прокси моделей, например https://<DOMAIN>/api/v2/agent-llm/v1 |
ddp.llm.apiKey | Включён переключатель «Разрешить прокси моделей DDP» | Токен запуска |
ddp.llm.model | Включён переключатель «Разрешить прокси моделей DDP» | Модель AI-провайдера пользователя |
ddp.provider | Включён переключатель «Разрешить прокси моделей DDP» | Название AI-провайдера пользователя |
Адреса в метаданных строятся от публичного адреса портала, поэтому агент должен иметь сетевой доступ к порталу.
Вызов инструментов портала
Чтобы вызвать инструменты портала, агент обращается к MCP-эндпоинту из метаданных с токеном запуска в заголовке X-Agent-Run-Token:
POST <ddp.mcp.endpoint>/tools/list— возвращает список доступных инструментов с JSON-схемой аргументов;POST <ddp.mcp.endpoint>/tools/call— вызывает инструмент. Тело запроса —{"tool": "<NAME>", "arguments": {...}}.
Пример вызова инструмента:
curl -s -X POST "https://<DOMAIN>/api/v2/agent-mcp/tools/call" -H "X-Agent-Run-Token: <RUN_TOKEN>" -H "Content-Type: application/json" -d '{"tool": "get_resources", "arguments": {}}'где:
<DOMAIN>— домен портала;<RUN_TOKEN>— значениеddp.mcp.runTokenиз метаданных сообщения.
Инструмент, которого нет в ddp.mcp.toolAllowlist, возвращает ошибку 403. Недействительный или отозванный токен — ошибку 401.
Обращение к модели через портал
Если агенту разрешён прокси моделей DDP, он обращается к <ddp.llm.baseUrl>/chat/completions как к API OpenAI Chat Completions и передаёт ddp.llm.apiKey как API-ключ.
Ограничения прокси описаны в разделе «Языковая модель агента».
Результат запуска
Агент может сообщить тип результата в метаданных итогового сообщения, задачи или артефакта:
ddp.deliverableType— тип результата:message,merge_request,branchилиpatch;ddp.deliverableRef— ссылка на результат, например URL merge request.
Тип и ссылка отображаются в деталях запуска в истории запусков. Если тип не передан, результатом считается сообщение.
Подключение агента kagent
Агенты, развёрнутые в кластере с помощью kagent, подключаются через A2A-эндпоинт kagent. Карточка такого агента содержит адреса сервисов внутри кластера, поэтому портал вызывает базовый URL карточки.
Чтобы подключить агента kagent:
- В поле «URL Agent Card» укажите адрес A2A-эндпоинта агента в kagent, например
https://<KAGENT_HOST>/api/a2a/<NAMESPACE>/<AGENT_NAME>/. - Выключите переключатель «Вызывать адрес из карточки агента».
- В поле «API-ключ» укажите ключ, который ожидает A2A-эндпоинт kagent.
- Если у агента нет собственных доступов к модели, включите «Разрешить прокси моделей DDP».
где:
<KAGENT_HOST>— адрес A2A-эндпоинта kagent;<NAMESPACE>— неймспейс агента;<AGENT_NAME>— имя агента.
Если агентов kagent несколько, создайте источник агентов с выключенным переключателем «Вызывать адрес из карточки агента».
Изменение и удаление
Изменять и удалять подключение могут его владелец, участники команды-владельца и супер-администратор. Чтобы изменить или удалить подключение, выберите «Редактировать» или «Удалить» в меню карточки агента в каталоге.
Если выключить агента вручную, он не включится автоматически, даже если им управляет источник агентов.
Устранение неполадок
Ошибки вызова агента отображаются в AI-ассистенте и в деталях запуска:
| Сообщение | Причина и решение |
|---|---|
| «Не удалось получить Agent Card внешнего агента. Проверьте URL карточки и доступность агента.» | Карточка не читается по адресу из поля «URL Agent Card». Проверьте адрес и сетевой доступ из кластера портала к агенту |
| «Agent Card внешнего агента непригодна (нет поддерживаемых интерфейсов или недопустимый адрес). Проверьте настройки агента.» | В карточке нет адресов с поддерживаемой привязкой A2A. Если агент публикует адреса внутри своего кластера, выключите «Вызывать адрес из карточки агента» |
| «Внешний агент отклонил учётные данные. Проверьте API-ключ его ссылки.» | Агент не принял API-ключ. Укажите в подключении ключ, который ожидает агент |
| «Внешний агент недоступен (ошибка сети или таймаут). Попробуйте позже.» | Агент не ответил вовремя или недоступен по сети |
| «Внешний агент не вернул ответ.» | Задача агента завершилась без итогового сообщения |
| «Недостаточно прав для запуска этого AI-агента» | Внешнего агента запускает только владелец подключения |