Конфигурация AI-агентов
Агент — конфигурируемая сущность в Citeck с системным промптом, LLM-провайдером и набором инструментов. Хранится как Citeck-запись типа emodel/ai-agent.
Статья описывает модель данных агента, режимы выполнения, доступные инструменты и порядок создания агентов и пользовательских инструментов.
Модель данных
Модель данных определена в AgentDefinition.kt:
Поле |
Тип |
Обязательное |
Описание |
|---|---|---|---|
|
TEXT |
да |
Идентификатор записи агента |
|
TEXT |
да |
Отображаемое имя агента |
|
TEXT |
нет |
Описание агента (отображается в журнале и в ответе |
|
TEXT |
да |
Системный промпт |
|
TEXT |
да |
Идентификатор LLM-провайдера |
|
TEXT |
да |
Идентификатор модели |
|
NUMBER |
нет |
Степень случайности генерации:
-
0.0 — детерминированный вывод (модель всегда выбирает наиболее вероятный токен),-
1.0 — высокая вариативность ответов.Значения выше
1.0 допускаются, но увеличивают риск несвязного текста.Рекомендуемый диапазон:
-
0.0–0.3 для фактических задач (резюме, извлечение данных),-
0.6–0.9 для диалоговых агентов.- По умолчанию
0.7. |
|
TEXT[] |
нет |
Список подключённых инструментов |
|
TEXT |
нет |
Движок выполнения:
-
TOOL_LOOP (по умолчанию) — операционный диалоговый цикл с инструментами;-
CONFIG — агент конфигурирования платформы (генерация и публикация артефактов).Определяет маршрутизацию запроса.
Служебное поле: в форму редактора не выводится, задаётся при создании записи (например, патчем)
|
|
TEXT |
нет |
Глубина рассуждений модели: пустое значение /
minimal / low / medium / high.Учитывается моделями, поддерживающими управление рассуждениями
|
|
BOOLEAN |
нет |
Требовать подтверждение человека перед публикацией артефакта (по умолчанию
false).При
true инструмент deployArtifact не публикует сразу, а показывает карточку подтверждения с выбором области публикации.Служебное поле: в форму редактора не выводится, задаётся при создании записи
|
|
BOOLEAN |
нет |
Включён ли агент (по умолчанию |
Режимы выполнения
Stateless
Один запрос — один ответ, без памяти о предыдущих сообщениях. Предназначен для вызова из BPMN-процессов через POST /api/ai-agent/execute.
Вызывается через AgentExecutionService.execute.
Примечание
Из BPMN-процесса доступен как вызов преднастроенного AI-агента (записи ai-agent с его набором инструментов), так и AI задача с промптом: процесс может вызывать LLM, подставлять переменные процесса и атрибуты документа, добавлять документ и произвольные записи в контекст и обрабатывать ответ скриптом постобработки.
Предупреждение
На stateless-пути нет подтверждений человеком (HITL), а вызов из BPMN выполняется под техническим пользователем процесса: процесс рабочего пространства — под системным пользователем этого пространства, глобальный процесс — под системным пользователем платформы (см. Безопасность AI-функций). Изменяющие инструменты на этом пути недоступны: при вызове из BPMN их наличие в белом списке агента приводит к явной ошибке, при вызове через POST /api/ai-agent/execute они исключаются из набора инструментов. Подбирая белый список агента для stateless-сценариев, учитывайте, что читающие инструменты при вызове из BPMN выполняются под техническим пользователем, а не под конечным пользователем.
На stateless-пути счётных ограничений цикла инструментов нет (в интерактивном диалоге они есть): агент, который читает много записей подряд, не останавливается на полпути. Отклоняется только точный повтор — вызов того же инструмента с теми же аргументами более 3 раз подряд либо после двух одинаковых отказов; вызов другого инструмента между ними прерывает серию. Отклонённый вызов не выполняется, и модель отвечает по уже собранным данным (ограничения интерактивного диалога — в разделе Механика выполнения AI-агентов).
Stateful / Interactive
Многоходовой диалог с ChatMemory, требует conversationId. Используется в AI Assistant UI.
Вызывается через AgentExecutionService.executeInteractive.
В интерактивном режиме оркестратор может дополнить системный промпт агента контекстом пользователя, не меняя сохранённую инструкцию. Через AgentExecutionRequest.context передаётся ключ user_context (USER_CONTEXT_KEY) — блок записей, на которые сослался пользователь (@-упоминания, выбор в UI, прикреплённые файлы). Это позволяет LLM сопоставлять отображаемые имена с EntityRef при вызове инструментов. Контекст добавляется в системный промпт под заголовком --- User Context --- (см. AgentExecutionService.buildSystemPrompt).
REST API
Метод |
URL |
Описание |
|---|---|---|
|
|
Список подключённых LLM-провайдеров |
|
|
Инструменты, доступные агентам |
|
|
Stateless вызов: |
|
|
Список включённых агентов |
Доступные инструменты
По умолчанию isAvailableForStatelessExecution() = true. Инструменты, переопределяющие метод в false (изменяющие данные или конфигурацию: MutateRecordTool, DeleteRecordsTool, DeployArtifactTool, а также внутренние служебные — SaveFormDraftTool, SaveDataTypeDraftTool, SaveEscalationTool и аналогичные), недоступны на stateless-пути: при вызове из BPMN такой инструмент в белом списке агента приводит к явной ошибке, при вызове через POST /api/ai-agent/execute — исключается из набора с уведомлением в ответе. В интерактивном диалоге эти инструменты работают под правами пользователя с HITL-подтверждениями.
Инструменты делятся на две области: операционные (работа с записями, документами и коммуникациями) и конфигурационные (создание и изменение артефактов платформы). Область отображается в редакторе агента как группировка списка инструментов и возвращается эндпоинтом /api/ai-agent/available-tools.
В таблицах указано имя инструмента — именно оно записывается в поле tools агента. Класс реализации образуется из имени: queryRecords → QueryRecordsTool. Колонка «Автономный» показывает значение isAvailableForStatelessExecution(): «да» — инструмент доступен при вызове из BPMN и через POST /api/ai-agent/execute, «нет» — только в интерактивном диалоге.
Операционные инструменты
Инструмент |
Автономный |
Описание |
|---|---|---|
|
да |
Поиск записей по типу и условиям |
|
да |
Чтение атрибутов записи |
|
да |
Отображаемое имя записи |
|
да |
Текстовое содержимое документа записи |
|
да |
История версий содержимого документа |
|
да |
Метаданные типа данных: атрибуты, статусы, роли |
|
да |
Контактные лица записи (контрагента) |
|
да |
Активности по записи: звонки, письма, встречи, комментарии |
|
да |
Сведения о текущем пользователе |
|
да |
Текущие дата и время |
|
да |
Сводка «Клиент 360»: связанные сделки, обращения, договоры, платежи клиента |
|
да |
Сравнение двух документов или версий одного документа |
|
да |
Анализ содержимого документа записи (вопросы и ответы по документу) |
|
да |
Анализ загруженного в чат файла: PDF и изображения нативно, офисные форматы через извлечение текста |
|
нет |
Предложение сохранить сгенерированный файл в запись (карточка с выбором места сохранения) |
|
нет |
Отмена отложенного сохранения файла |
|
да |
Оформление делового письма (результат — карточка письма в чате) |
|
нет |
Ссылка на журнал с уже применённым фильтром по запросу пользователя |
|
нет |
Создание или изменение записи; выполняется после подтверждения пользователем в диалоге |
|
нет |
Удаление записей; выполняется после подтверждения пользователем в диалоге |
|
нет |
Генерация изображения по текстовому описанию |
|
нет |
Редактирование сгенерированного или загруженного изображения |
|
да |
Семантический поиск по подключённым базам знаний (RAG) |
|
да |
Полный текст документа из базы знаний по ссылке из результатов поиска |
|
да |
Полный состав приложения ECOS: перечень артефактов с содержимым |
Конфигурационные инструменты
Инструмент |
Автономный |
Описание |
|---|---|---|
|
да |
Поиск артефакта по имени: тип данных, форма, процесс, журнал, доска, дашборд, приложение |
|
да |
Метаданные артефакта платформы |
|
да |
Поиск по документации платформы Citeck |
|
нет |
Генерация нового или изменение существующего типа данных |
|
нет |
Генерация новой или изменение существующей формы |
|
нет |
Генерация нового или изменение существующего BPMN-процесса |
|
нет |
Генерация нового или изменение существующего журнала |
|
нет |
Сохранённый вид журнала (отчёт): свои колонки, фильтр и группировка |
|
нет |
Шаблон уведомления; привязка шаблона к событию выполняется внутри процесса |
|
нет |
Действие над записью (кнопка карточки или журнала) |
|
нет |
Матрица прав типа: кто и что видит и меняет в зависимости от роли и статуса |
|
нет |
Права на запись, в том числе право запускать процесс |
|
нет |
Канбан-доска над журналом |
|
нет |
Карточка записи: вкладки, колонки и виджеты. Адресуется ТИПОМ: публикация для типа, у которого карточка уже есть, заменяет её |
|
нет |
Патч существующего артефакта — точечное изменение вместо перегенерации |
|
нет |
Таблица решений DMN |
|
нет |
Структурная валидация сгенерированного артефакта до публикации |
|
нет |
Публикация артефакта; при |
|
нет |
Правка скрипта по текстовому запросу (результат — сравнение версий в чате) |
|
нет |
Техническая документация приложения ECOS: Markdown-отчёт с диаграммами по составу артефактов |
Примечание
Инструменты ragSearch, ragGetDocument и searchDocumentation регистрируются только при включённом RAG (citeck.ai.rag.enabled=true). Инструменты generateImage и editImage доступны, пока не отключено свойство citeck.ai.image.enabled (по умолчанию включено). Если отключённый инструмент указан в белом списке агента, агент не завершается ошибкой: он продолжает работу и сообщает пользователю, что возможность отключена.
Агент конфигурации платформы использует также операционные инструменты queryRecords и getRecordTypeMetadata (см. таблицу операционных инструментов) — чтобы сверяться с моделью типа и реальными данными.
Служебные инструменты генерации (saveFormDraft, saveDataTypeDraft, saveBoardDraft, saveDashboardDraft и остальные save*Draft, saveFormPatch, saveDataTypePatch, saveEscalation) используются внутри сервисов генерации, в белые списки агентов не добавляются и скрыты из редактора агентов. Это витрина списка инструментов, а не отдельная ось доступа: доступ определяют три независимых признака — белый список агента, доступность на пути без состояния и движок агента.
Важно
Среди инструментов, которые создают и изменяют конфигурацию платформы, на путях без состояния (вызов из BPMN и POST /api/ai-agent/execute) доступен ровно один — findArtifact: он только читает. Любой generate*, а также validateArtifact, deployArtifact, editScript и generateAppDocumentation на этих путях недоступны. Общие читающие инструменты searchDocumentation и getArtifactMetadata остаются доступными: они ничего не меняют.
Преднастроенные агенты
Вместе с платформой поставляются готовые агенты. Их записи создаются автоматически при развёртывании модуля citeck-ai; состав инструментов см. в каталоге выше.
Примечание
При обновлении версии платформы записи преднастроенных агентов синхронизируются с поставкой: название, описание, инструкция, список инструментов и движок перезаписываются поставляемыми значениями. Настройки провайдера и модели (aiProvider, aiModel), температура и признак «Включён» при этом сохраняются. Локальные правки инструкции или белого списка инструментов поставляемого агента будут утеряны при обновлении — для собственных сценариев создавайте отдельного агента.
tasks-documents-helper · движок TOOL_LOOP
Работа с записями, задачами, документами и коммуникациями: «найди мои открытые обращения», «сравни версии договора», «подготовь письмо клиенту», «собери сводку по клиенту». Обслуживает чат без явно выбранного агента.
platform-config-agent · движок CONFIG
Создание и изменение конфигурации: «создай тип данных для учёта командировок», «добавь на форму поле для суммы», «сделай процесс согласования». Публикует артефакты только после подтверждения (requireDeployConfirmation: true).
image-helper · движок TOOL_LOOP
Генерация и редактирование изображений: «нарисуй иконку для раздела», «убери фон», «сделай баннер к письму».
platform-capabilities-helper · движок TOOL_LOOP
Ответы на вопросы о возможностях платформы строго по документации, со ссылками на разделы: «поддерживается ли подключение своей LLM?», «как контролируется расход токенов?». Доступен начиная с релиза 2026.3.
config-audit-helper · движок TOOL_LOOP
Аудит приложения по чек-листу — безопасность (права, чувствительные данные, доступ в статусах) и качество конфигурации (модель данных, статусы, процессы, формы); отчёт с уровнями риска: «проверь приложение «Договоры». Только читающие инструменты. Доступен начиная с релиза 2026.3.
deploy-operator-helper · движок CONFIG
Решение о публикации артефакта: валидация, оценка влияния на зависимые артефакты, вердикт «публиковать / вернуть на доработку»; публикация только после подтверждения человеком. Доступен начиная с релиза 2026.3.
Помимо агентов-записей, в платформу встроены специализированные помощники: помощник BPMN в редакторе процессов, помощник написания скриптов, редактирование текста в полях записей, а также запись и резюме совещаний. Анализ и сравнение документов, деловые письма и «Клиент 360» выполняются инструментами операционного агента (см. каталог выше).
Подключение базы знаний агенту
База знаний подключается агенту через белый список инструментов — отдельного поля привязки у записи агента нет:
ragSearch+ragGetDocument— семантический поиск по проиндексированным источникам: записям рабочих пространств и подключённым Git-репозиториям;searchDocumentation— поиск по документации платформы Citeck.
Состав источников настраивается на стороне микросервиса citeck-rag: журналы «Рабочие пространства» (какие пространства и типы данных индексируются) и «GitLab-репозитории». Результаты поиска фильтруются по правам пользователя и рабочему пространству диалога, поэтому разные агенты и разные пользователи видят разные подмножества одной базы. Дополнительно область поиска сужается инструкцией агента — например, агенту-справочнику по возможностям платформы инструкция предписывает искать только в документации.
Все три инструмента требуют включённого RAG (citeck.ai.rag.enabled=true).
Создание агента
В интерфейсе платформы
В рабочем пространстве администратора в разделе AI перейдите в журнал AI Агенты.
Заполните Название, Системный промпт, выберите Провайдер LLM и Модель.
Опционально: добавьте инструменты, установите Температуру.
Установите чекбокс Включён и сохраните.
Например:
Citeck-артефакты
Артефакты агента расположены в следующих файлах:
Артефакт |
Путь |
|---|---|
Тип |
|
Журнал |
|
Форма |
|
Создание собственного инструмента
Реализуйте интерфейс CiteckAiTool и пометьте класс как Spring-компонент:
@Component
class MyCustomTool(
private val someService: SomeService
) : CiteckAiTool {
companion object {
const val NAME = "my_custom_tool"
}
override fun getName(): String = NAME
override fun getDescription(): String = "Описание для LLM"
@Tool(name = NAME, description = "Описание для LLM")
fun myAction(param: String): String {
return someService.doSomething(param)
}
}
Spring DI автоматически обнаружит инструмент через List<CiteckAiTool> и добавит в список доступных.
Чтобы запретить выполнение инструмента на stateless-пути (вызов из BPMN и через POST /api/ai-agent/execute):
override fun isAvailableForStatelessExecution(): Boolean = false
В интерактивном диалоге такой инструмент остаётся полностью доступным и выполняется с HITL-подтверждениями. Служебные инструменты (например, saveFormDraft) не показываются в редакторе агента — для этого метод isVisibleInAgentEditor() возвращает false. Имя такого инструмента, уже записанное в белый список, продолжает работать.
Маршрутизация в оркестраторе
AgentOrchestratorService.processRequest() — единая точка входа для всех запросов ассистента. Маршрутизация запроса к движку агента (TOOL_LOOP / CONFIG) или в конвейер планирования и исполнения определяется полем engine записи агента, а не автоматическим определением намерения — подробно описана в разделе «Маршрутизация» статьи «Механика выполнения AI-агентов».
Ключевые файлы
Компонент |
Файл |
|---|---|
Модель данных |
|
Реестр агентов |
|
Оркестратор (маршрутизация запросов) |
|
Сервис выполнения |
|
Сервис агента конфигурирования ( |
|
REST-контроллер |
|
Интерфейс инструментов |
|
ECOS-тип |
|
ECOS-журнал |
|
ECOS-форма |
|