Программный 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 по умолчанию регистрируется, только если в приложении еще нет бина этого типа. Если вы предоставите собственную реализацию, она автоматически получит приоритет.
|