У цьому матеріалі ми з вами напишемо простий додаток на Java який буде використовувати Spring AI. Spring AI – це фреймворк для розробки штучного інтелекту. Його мета – застосувати до області AІ принципи проектування екосистеми Spring, такі як портативність і модульний дизайн. Ознайомитися зі всіма можливостями Spring AI ви можете на офіційній сторінці. Лише зазначу що використовуючи цю бібліотеку ви можете працювати не тільки з ChatGPT від OpenAI але й безкоштовними Ollama та Mistral.
Використання штучного інтелекту (AI) у Spring-додатках стає все більш поширеним завдяки зростаючому попиту на інтелектуальні рішення. У цій статті ми розглянемо, як налаштувати базовий Spring AI проєкт для інтеграції AI-моделей за допомогою різних інструментів.
1. Вибір інструментів для AI інтеграції у Spring
На данний момент Spring AI підтримує безліч інтеграцій в тому числі для роботи із зображеннями та аудіо. Для того щоб переключитися від однієї інтеграцій до іншой вам достатньо змінити лише один рядок в properties чи yaml файлі.
spring.ai.openai.chat.options.model=gpt-4o-mini
#spring.ai.ollama.chat.options.model=gemma:2b #ollama
#spring.ai.ollama.chat.options.temperature=0.7 #ollamaXML2. Налаштування Spring Boot проєкту
Створення нового Spring Boot проєкту
- Встановіть Spring Boot через Spring Initializr:
- Виберіть Java як мову.
- Додайте залежності:
- (опційно) Spring Web (для створення REST API).
- Spring Boot Starter (для запуску проєкту).
- (опційно) Lombok для спрощеного написання коду.
- Згенеруйте проєкт і відкрийте його в IDE (напр., IntelliJ IDEA).
Додавання залежностей для AI-бібліотек
У pom.xml додаємо залежності, які потрібні для роботи з AI. Наприклад, для інтеграції OpenAI:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-model-openai</artifactId>
<version>1.0.0-M3</version>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.ai</groupId>-->
<!-- <artifactId>spring-ai-starter-model-mistral-ai</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.ai</groupId>-->
<!-- <artifactId>spring-ai-starter-model-ollama</artifactId>-->
<!-- </dependency>-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>XML3. Інтеграція з OpenAI API (GPT)
3.1. Реєстрація в OpenAI для доступу до сервісу
Перейдіть на платформу від OpenAI для того щоб отримати ключ. Це не займає багато часу і ви відразу можете користуватися API. В данний момент OpenAI дає вам безкоштовно на баланс 5$ яких вистачить на багато простих запитів. Ознайомитися з лімітами по кожній моделі можна тут.
3.2. Налаштування API-ключа в Spring Boot
У файлі application.properties вкажіть ваш API-ключ який ви отримали. Якщо ви використовуєте yaml то все робіть по аналогії.
openai.api.key=sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXML3.3. Написання сервісу для роботи з OpenAI
package com.example.springai.service;
import com.theokanning.openai.OpenAiService;
import com.theokanning.openai.completion.CompletionRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class AiService {
private final OpenAiService openAiService;
public AiService(@Value("${openai.api.key}") String apiKey) {
this.openAiService = new OpenAiService(apiKey);
}
public String getAiResponse(String prompt) {
CompletionRequest request = CompletionRequest.builder()
.prompt(prompt)
.model("text-davinci-003")
.maxTokens(200)
.build();
return openAiService.createCompletion(request).getChoices().get(0).getText();
}
}Java4. Створення REST-контролера
Зробимо простий API, який буде надсилати запит до OpenAI та отримувати відповідь.
package com.example.springai.controller;
import com.example.springai.service.AiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class AiController {
private final AiService aiService;
@Autowired
public AiController(AiService aiService) {
this.aiService = aiService;
}
@PostMapping("/answer")
public String generateResponse(@RequestBody String prompt) {
return aiService.getAiResponse(prompt);
}
}Java5. Розгортання проєкту
Запустіть Spring Boot проєкт і перевірте роботу API. Ви можете відправляти POST-запити до /api/answer за допомогою Postman чи будь-якого іншого HTTP-клієнта.
6. Робота з контекстом
Наш код працює але для того щоб наш сервіс розумів текст між запитаннями ми повинні на своїй стороні зберігати контекст.
public OpenAiService(ChatClient.Builder builder) {
this.aiService = builder.defaultAdvisors(
new MessageChatMemoryAdvisor(
new InMemoryChatMemory())).build();
}JavaВисновок
Інтеграція AI в Spring-додаток є популярним і тим підходом для створення сучасного програмного забезпечення що диктує майбутне. У статті ми розглянули основні інструменти для роботи з Spring AI однак можна використовувати й інші бібліотеки залежно від ваших потреб. В наступних матеріалах ми більш розгорнуто розглянемо приклади та різні бібліотеки для роботи з AI.
Якщо ви хочете більш детально ознайомитися з документацією по Spring AI можете перейти до цієї сторінки.





