Пишемо Spring AI проєкт на Java

У цьому матеріалі ми з вами напишемо простий додаток на 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    #ollama
XML

2. Налаштування Spring Boot проєкту

Створення нового Spring Boot проєкту

  1. Встановіть Spring Boot через Spring Initializr:
    • Виберіть Java як мову.
    • Додайте залежності:
      • (опційно) Spring Web (для створення REST API).
      • Spring Boot Starter (для запуску проєкту).
      • (опційно) Lombok для спрощеного написання коду.
  2. Згенеруйте проєкт і відкрийте його в 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>
XML

3. Інтеграція з OpenAI API (GPT)

3.1. Реєстрація в OpenAI для доступу до сервісу

Перейдіть на платформу від OpenAI для того щоб отримати ключ. Це не займає багато часу і ви відразу можете користуватися API. В данний момент OpenAI дає вам безкоштовно на баланс 5$ яких вистачить на багато простих запитів. Ознайомитися з лімітами по кожній моделі можна тут.

3.2. Налаштування API-ключа в Spring Boot

У файлі application.properties вкажіть ваш API-ключ який ви отримали. Якщо ви використовуєте yaml то все робіть по аналогії.

openai.api.key=sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XML

3.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();
    }
}
Java

4. Створення 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);
    }
}
Java

5. Розгортання проєкту

Запустіть 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 можете перейти до цієї сторінки.

  • javaadmin

    Супер крутий Dev

    Related Posts

    Dependency Injection у Spring: пояснюємо на пальцях

    Коли програміст-початківець вперше відкриває документацію до Spring Framework, на нього одразу висипається купа грізних термінів: Dependency Injection (DI), Inversion of Control (IoC), ApplicationContext, Bean. Здається, що це вища математика. Ми вже розглядали DI в минулих матеріалах але цю дуже не просту тему краще розібрати по болтиках для повного розуміння. Насправді за цими розумними словами ховається надзвичайно проста та красива ідея. Це історія про те, як перестати збирати складні речі вручну й довірити…

    Dependency Injection в Java

    Dependency Injection (впровадження залежностей) — один з фундаментальних патернів проектування в сучасній Java-розробці. Цей принцип допомагає створювати гнучкі, тестовані та підтримувані додатки. Давайте розберемося, що це таке і як правильно його застосовувати. Що таке Dependency Injection? Dependency Injection — це техніка, при якій об’єкт отримує свої залежності ззовні, а не створює їх самостійно. Замість того, щоб клас сам інстанціював потрібні йому об’єкти, вони передаються йому через конструктор, setter-методи…

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

    Цікаве

    Dependency Injection у Spring: пояснюємо на пальцях

    • Автор javaadmin
    • 31 Липня, 2026
    • 14 views
    Dependency Injection у Spring: пояснюємо на пальцях

    Java Collections Framework: List, Set чи Map?

    • Автор javaadmin
    • 31 Липня, 2026
    • 28 views
    Java Collections Framework: List, Set чи Map?

    Оптимізуємо це: GraalVM Native Image, Leyden та CRaC

    • Автор javaadmin
    • 17 Липня, 2026
    • 57 views
    Оптимізуємо це: GraalVM Native Image, Leyden та CRaC

    JBang: Як вивчати Java легко

    • Автор javaadmin
    • 12 Травня, 2026
    • 130 views
    JBang: Як вивчати Java легко

    Agent Skills: Що це таке і чому про це варто знати

    • Автор javaadmin
    • 13 Квітня, 2026
    • 233 views
    Agent Skills: Що це таке і чому про це варто знати

    Dependency Injection в Java

    • Автор javaadmin
    • 9 Грудня, 2025
    • 407 views
    Dependency Injection в Java