У цій статті

Головна думка

Spring AI дає змогу Java-застосунку підключити модель до інструментів і знайденого контексту. Автентифікація, бізнес-правила та виконання мають залишатися відповідальністю застосунку. Почніть із вузького завдання лише для читання, перш ніж додавати дії.

01

Тримайте агента поруч із бізнес-сервісами

Розгляньмо Java-застосунок для заявок підтримки. Перший агент може прочитати доступну заявку, знайти процедуру й підготувати відповідь. Spring AI підтримує виклик інструментів через Java-методи, зокрема анотацію @Tool. Модель запитує операцію, а код застосунку виконує її. Це розділення зберігає контроль за бізнес-сервісом.

Ми рекомендуємо використовувати наявний сервісний шар, не відкриваючи необмежених запитів до БД чи адміністративної оболонки. До вибору моделі визначте завдання, інструменти та умови зупинки. Приклади нижче — ілюстративні фрагменти Java за опрацьованою для статті документацією Spring AI 2.0, а не готовий застосунок чи перевірене клієнтське впровадження.

ДжерелаSpring AI — Tool calling ↗
Наочна схема / 01

Застосунок зберігає контроль

Приклад агента підтримки за зонами відповідальності.

  1. ChatClient

    Передайте запитання й інструменти, доступні для запиту.

  2. @Tool

    Надайте обмежену операцію, наприклад читання заявки.

  3. TicketService

    Визначте автентифікованого користувача й перевірте доступ до запису.

  4. Бізнес-дані

    Поверніть застосунку мінімально необхідне дозволене представлення.

02

Надайте вузький інструмент із перевіркою прав

Приклад навмисно приймає ідентифікатор заявки, а не обрану моделлю особу користувача чи орендаря. TicketService — сервіс конкретного застосунку. Його метод readForCurrentUser має отримувати особу з довіреної серверної автентифікації, перевіряти доступ до запису й повертати мінімальне публічне представлення. Перевіряйте ідентифікатор і обмежуйте обсяг відповіді інструмента.

Залиште операцію лише для читання. Запис потребує окремого контракту, бізнес-валідації, обробки повторів і погодження там, де воно необхідне. Згадка про підтвердження людиною в промпті не замінює контролю застосунку. Ідентифікатор клієнта, переданий моделлю, ніколи не має визначати доступну їй організацію.

Java — Приклад інструмента; TicketService і TicketView — типи застосунку.
import org.springframework.ai.tool.annotation.Tool;

final class TicketTools {
    private final TicketService tickets;

    TicketTools(TicketService tickets) {
        this.tickets = tickets;
    }

    @Tool(description = "Read a support ticket visible to the current user")
    TicketView readTicket(String ticketId) {
        return tickets.readForCurrentUser(ticketId);
    }
}
03

Підключіть клієнт, потім додайте джерела

За налаштованого ChatClient і екземпляра TicketTools інструмент можна зареєструвати для запиту. Спочатку перевірте коректні, відсутні й заборонені ідентифікатори заявок. У конфігурації застосунку обмежте кількість ітерацій інструментів і загальний час виконання. Передбачте скасування та явну поведінку за недоступності залежного сервісу.

Для питань за документами Spring AI пропонує QuestionAnswerAdvisor і модульний RetrievalAugmentationAdvisor. Прив’яжіть обмеження пошуку до автентифікованого контексту застосунку. У нашому сценарії заявка задає продукт, пошук знаходить процедуру, а модель готує відповідь із посиланнями. Якщо потрібної процедури немає, запитайте перевірку замість вигадування правила.

Java — Фрагмент запиту; клієнт, екземпляр інструмента й автентифікований контекст виконання мають бути налаштовані заздалегідь.
String draft = chatClient.prompt()
    .user("Read ticket INC-1042 and summarise the confirmed facts.")
    .tools(ticketTools)
    .call()
    .content();
ДжерелаSpring AI — Tool calling ↗Spring AI — Retrieval Augmented Generation ↗
04

Спостерігайте за рішеннями, не збираючи все підряд

Spring AI документує спостережуваність взаємодій моделей та інструментів. Ми пов’язуємо запит користувача з результатами інструментів, часом і витратами токенів, не зберігаючи зайвого вмісту заявок чи секретів. Команда експлуатації має бачити різницю між збоєм моделі, відмовою в доступі та помилкою зовнішнього API.

До випуску перевірте хибні ідентифікатори, суперечливі процедури, повторні виклики й шкідливий текст у заявці. Критерій приймання — корисна чернетка на основі дозволених джерел без незапланованих змін стану. MASLOV Solutions може визначити обсяг Java-інтеграції, RAG і оцінювання навколо ваших сервісів. Почніть з обмеженого процесу й додавайте дії після проєктування контролю та відновлення.

ДжерелаSpring AI — Observability ↗
05

Наступний крок: запропонувати зміну без виконання

Читання заявки — корисна відправна точка. Для зміни статусу створіть пропозицію з ідентифікатором заявки, переходом, причиною й очікуваною версією запису. Перевірте перехід у наявному бізнес-сервісі. Якщо потрібне погодження, збережіть пропозицію й поверніть її ідентифікатор для перевірки замість негайної зміни заявки.

Під час виконання знову перевірте користувача, права й версію заявки. Закрита іншим працівником заявка не має відкритися через пізнє погодження старої пропозиції. Використовуйте сталий ідентифікатор операції для повторних надсилань. Такий процес зберігає бізнес-інваріанти у звичайному коді; описи інструментів допомагають запитати дію, але не забезпечують цих правил.

Процес / шлях ухвалення рішення

Від запиту інструмента до бізнес-команди

Запропоноване розширення прикладу з читанням. Сервіс контролює авторизацію, версії та запобігання повторам.

Запит інструмента → перевірка переходу → збереження пропозиції

Погодження чинне й версія заявки не змінилася?

  • Так

    1. Повторна перевірка прав → виконання з ID операції
    2. Повернути бізнес-результат у діалог
  • Ні

    1. Не змінювати заявку
    2. Пояснити відмову або запитати нову пропозицію
06

Перевіряйте межі агента без виклику моделі в кожному тесті

Перевіряйте авторизацію, валідацію та зміни стану звичайними сервісними тестами з детермінованими даними. Імітуйте запити невідомих заявок, міжорганізаційний доступ, хибні переходи й повторні ID операцій. Залиште невеликий набір інтеграційних тестів поведінки моделі: вибір інструмента, уточнення даних і коректне пояснення відмови.

Спостерігайте час інструментів і категорії помилок окремо від затримки моделі. Маскуйте чутливі аргументи в трасуваннях і зберігайте кореляційні ID для відстеження інциденту між діалогом і сервісом. Зафіксуйте сумісні версії залежностей і перевірте повний приклад у застосунку: фрагменти вище ілюструють межу, а не готовий сервіс з автентифікацією, зберіганням і обробкою всіх помилок.

Джерела й додаткові матеріали

Документацію перевірено .

ЗАПИТАННЯ / РІШЕННЯ

Поширені запитання

Модель виконує Java-код безпосередньо?+

Ні. Вона запитує виклик інструмента. Spring AI та застосунок виконують зареєстровану операцію, реалізація якої має перевіряти права й бізнес-правила.

Чи завжди бізнес-завданням потрібні кілька агентів?+

Ні. Почніть з одного обмеженого процесу й невеликого набору інструментів. Додавайте координацію, лише коли розділення обов’язків дає вимірювану користь.

Наші послуги: ШІ, агенти й RAG ↗