Пользовательские AI-агенты
Агент — конфигурируемая сущность в Citeck с системным промптом, LLM-провайдером и набором инструментов. Хранится как Citeck-запись типа emodel/ai-agent.
Статья описывает модель данных агента, режимы выполнения, доступные инструменты и порядок создания агентов и пользовательских инструментов.
Модель данных
Модель данных определена в AgentDefinition.kt:
Поле |
Тип |
Обязательное |
Описание |
|---|---|---|---|
|
TEXT |
да |
Отображаемое имя агента |
|
TEXT |
да |
Системный промпт |
|
TEXT |
да |
Идентификатор LLM-провайдера |
|
TEXT |
да |
Идентификатор модели |
|
NUMBER |
нет |
Степень случайности генерации: |
|
TEXT[] |
нет |
Список подключённых инструментов |
|
BOOLEAN |
нет |
Включён ли агент (по умолчанию |
Режимы выполнения
Stateless
Один запрос — один ответ, без памяти о предыдущих сообщениях. Используется в BPMN-процессах через POST /api/ai-agent/execute.
Вызывается через AgentExecutionService.execute.
Предупреждение
На stateless-пути нет HITL-подтверждения. Tool-вызовы выполняются под техническим пользователем Camunda, что фактически обходит Citeck record-level permissions. Не добавляйте деструктивные инструменты (mutateRecord, deleteRecords) агентам без отдельного дизайна авторизации.
Stateful / Interactive
Многоходовой диалог с ChatMemory, требует conversationId. Используется в AI Assistant UI.
Вызывается через AgentExecutionService.executeInteractive.
REST API
Метод |
URL |
Описание |
|---|---|---|
|
|
Список подключённых LLM-провайдеров |
|
|
Инструменты, доступные агентам |
|
|
Stateless вызов: |
|
|
Список включённых агентов |
Доступные инструменты
По умолчанию isAvailableForAgents() = true. Недоступны для агентов (переопределяют в false) внутренние служебные инструменты — SaveFormDraftTool, SaveDataTypeDraftTool, SaveEscalationTool и аналогичные.
Инструмент |
Описание |
|---|---|
|
Атрибуты записи |
|
Содержимое документа |
|
История версий |
|
Отображаемое имя |
|
Метаданные типа |
|
Контакты записи |
|
Поиск записей |
|
Изменение записи |
|
Удаление записей |
|
Активности |
|
Содержимое ECOS-приложения |
|
Метаданные артефакта |
|
Поиск в документации |
|
RAG-поиск (если включён) |
|
Анализ документов |
|
Текущее время |
Создание агента
Через UI
В рабочем пространстве администратора в разделе 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> и добавит в список доступных.
Чтобы скрыть инструмент от агентов (только для внутреннего использования):
override fun isAvailableForAgents(): Boolean = false
Маршрутизация в оркестраторе
AgentOrchestratorService.processRequest() — первый приоритет маршрутизации: если к разговору привязан агент (resolveAgentRef), вся обработка делегируется AgentExecutionService.executeInteractive(), минуя Intent Detection и Plan-and-Execute.
Ключевые файлы
Компонент |
Файл |
|---|---|
Модель данных |
|
Реестр агентов |
|
Сервис выполнения |
|
REST-контроллер |
|
Интерфейс инструментов |
|
ECOS-тип |
|
ECOS-журнал |
|
ECOS-форма |
|