Программный API

Ассистента можно использовать и из собственного кода, без UI чата. Это полезно для фоновой обработки, пользовательских экранов или интеграции с существующей бизнес-логикой.

AiAssistantService

io.jmix.aitools.service.AiAssistantService — основная точка входа в программный API. Этот сервис не хранит состояние, не сохраняет историю чата и предоставляет модели все зарегистрированные инструменты. Внедрите его и отправьте сообщение:

@Component
public class SupportAssistant {

    @Autowired
    private AiAssistantService aiAssistantService;

    @Nullable
    public String ask(String question) {
        return aiAssistantService.send(question); (1)
    }
}
1 send блокируется до получения полного ответа и затем возвращает его.

Для потокового получения результата используйте stream(String), который возвращает reactor.core.publisher.Flux<String> и выдает ответ по частям.

AiDataLoadService

io.jmix.aitools.dataload.AiDataLoadService — специализированная точка входа для загрузки данных. Помимо методов чата send и stream, он предоставляет:

  • loadData(String userText) — генерирует JPQL-запрос для запроса пользователя, выполняет его и возвращает структурированный EntityDataLoadResult.

EntityDataLoadResult содержит полный результат загрузки в следующих полях:

  • query — запрос, сгенерированный LLM, до исправлений;

  • validationResult — результат валидации;

  • rows — загруженные строки, каждая строка представлена как Map, ключами которого являются имена результирующих свойств;

  • hasMore — есть ли дополнительные строки за пределами возвращенной страницы;

  • executed — был ли запрос действительно выполнен;

  • executionError — сообщение об ошибке, если запрос не выполнился.

Используйте этот сервис, когда нужны сами данные, а не ответ на естественном языке.

Кастомизация системного промпта

Системный промпт, используемый AiAssistantService, поставляется бином AiAssistantSystemPromptProvider. Реализация по умолчанию загружает встроенный шаблон, который описывает ассистента и правила использования инструментов. Чтобы использовать собственный промпт, зарегистрируйте бин, реализующий AiAssistantSystemPromptProvider, и возвращайте из него свой шаблон.

AiAssistantSystemPromptProvider по умолчанию регистрируется, только если в приложении еще нет бина этого типа. Если вы предоставите собственную реализацию, она автоматически получит приоритет.