В цій статті ми пройдемо через кроки створення проекту Spring Boot, який надає REST API. Це API приймає інгредієнти рецепту та тип кухні як параметри і повертає рецепт, згенерований штучним інтелектом, використовуючи Spring AI. Цей посібник орієнтований на початківців, які хочуть навчитися використовувати вже готові моделі штучного інтелекту в додатку на основі Spring.
Що таке Spring AI?
Spring AI — це нове інтеграційне рішення в екосистемі Spring, яке дозволяє розробникам безпосередньо взаємодіяти з моделями штучного інтелекту через їх Spring-додатки. Воно спрощує процес інтеграції готових моделей штучного інтелекту, таких як серія GPT від OpenAI, надаючи утиліти та абстракції, які органічно вписуються в архітектуру Spring.
Основні функції Spring AI:
-
Інтеграція моделей: Spring AI підтримує інтеграцію з різними моделями штучного інтелекту, такими як GPT від OpenAI, та може бути розширено для інших сервісів машинного навчання.
2.Управління підказками
-
Управління підказками: Надає інструменти для структуризації та ефективного управління підказками, що полегшує генерування змістовних результатів.
-
Безшовна інтеграція з Spring: Використовує ін'єкцію залежностей, управління конфігурацією та інші функції Spring Boot для оптимізації взаємодії з штучним інтелектом.
Розуміння моделей штучного інтелекту та підказок
Моделі штучного інтелекту
Модель штучного інтелекту — це попередньо натренована система, здатна виконувати конкретні завдання, такі як генерація тексту, відповідь на запитання або створення прогнозів. У цьому проекті ми будемо використовувати модель GPT від OpenAI, яка відмінно справляється із завданнями обробки природної мови.
- GPT (Generative Pre-trained Transformer): Ця модель генерує текст на основі наданої підказки. Вона передбачає наступне слово або речення, аналізуючи контекст введених даних.
Підказки
Підказка — це введення, яке надається моделі штучного інтелекту для орієнтації її відповіді. Створення ефективних підказок є важливим для отримання точних і релевантних результатів.
Приклад:
- Підказка: "Створіть італійський рецепт з куркою, часником і маслом."
- Відповідь: "Ось італійський рецепт: Курка альфредо з соусом з часникового масла..."
Відповідь моделі залежить від чіткості та детальності підказки. Складні завдання можуть вимагати ітеративного вдосконалення підказок для досягнення бажаних результатів.
Попередні вимоги
- Java Development Kit (JDK): Переконайтеся, що у вас встановлений JDK 11 або пізнішої версії.
- Maven: Інструмент для керування залежностями.
- Spring Boot: Знання базових концепцій Spring Boot буде корисним.
- OpenAI API Key: Отримайте API-ключ від OpenAI, якщо використовуєте моделі GPT.
- IDE: Використовуйте інтегроване середовище розробки, таке як IntelliJ IDEA або Eclipse.
Крок 1: Створення нового проекту Spring Boot
- Перейдіть на Spring Initializr.
2.
## Налаштуйте проект:
- Проект: Maven
- Мова: Java
- Версія Spring Boot: 3.1.0 або пізніше
- Залежності: Додайте
Spring Web
таSpring Boot Starter OpenAI
(якщо доступно).
1.
Створіть проект і розпакуйте його.
Або використайте наступну конфігурацію pom.xml
, щоб додати необхідні залежності:
org.springframework.boot
spring-boot-starter-web
com.openai
openai-client
1.0.0
Крок 2: Налаштуйте властивості додатка
Налаштуйте файл application.properties
з вашим API-ключем від OpenAI:
spring.openai.api-key=your-api-key-here
spring.openai.base-url=https://api.openai.com/v1
Замініть your-api-key-here
на ваш API-ключ від OpenAI.
Крок 3: Створіть контролер рецептів
Означте REST контролер для обробки вхідних HTTP запитів.
Цей контролер буде приймати інгредієнти та тип кухні як вхідні параметри.
@RestController
@RequestMapping("/api/recipes")
public class RecipeController {
@Autowired
private RecipeService recipeService; @PostMapping("/generate")
public ResponseEntity generateRecipe(@RequestBody RecipeRequest request) {
try {
String recipe = recipeService.generateRecipe(request);
return ResponseEntity.ok(recipe);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
}// DTO запитів
public class RecipeRequest {
private String ingredients;
private String cuisineType; // Геттери і сеттери
}
Крок 4: Створіть сервіс рецептів
Сервіс оброблятиме логіку створення рецептів через виклик OpenAI API.
@Service
public class RecipeService {
@Autowired
private OpenAiClient openAiClient; public String generateRecipe(RecipeRequest request) throws Exception {
String prompt = buildPrompt(request);
String response = openAiClient.generateResponse(prompt);
return parseRecipeResponse(response);
} private String buildPrompt(RecipeRequest request) {
return "Створіть " + request.getCuisineType() + " рецепт з наступними інгредієнтами: " + request.getIngredients();
} private String parseRecipeResponse(String response) {
// Проста логіка парсингу, адаптуйте за потреби
return response;
}
}
Крок 5: Налаштуйте OpenAI клієнт
Створіть утилітний клас для роботи з OpenAI API.
@Component
public class OpenAiClient {
@Value("${spring.openai.api-key}")
private String apiKey; private static final String OPENAI_API_URL = "https://api.openai.com/v1/completions"; public String generateResponse(String prompt) throws Exception {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setBearerAuth(apiKey); Map body = new HashMap<>();
body.put("model", "text-davinci-003");
body.put("prompt", prompt);
body.put("max_tokens", 150); HttpEntity> request = new HttpEntity<>(body, headers);
ResponseEntity response = restTemplate.postForEntity(OPENAI_API_URL, request, String.class); return response.getBody();
}
}
Крок 6: Тестування додатку
1.
Запустіть додаток Spring Boot.
- Використовуйте інструменти, такі як Postman або cURL, для тестування кінцевої точки:
Приклад запиту:
POST http://localhost:8080/api/recipes/generate
{
"ingredients": "курка, часник, масло",
"cuisineType": "Італійська"
}
Приклад відповіді:
{
"recipe": "Ось італійський рецепт, використовуючи курку, часник і масло: ..."
}
Висновок
Ви успішно створили додаток на Spring Boot, який інтегрується з OpenAI для створення рецептів на основі інгредієнтів і типу кухні. Цей проект демонструє, як використовувати можливості ШІ у ваших додатках, використовуючи Spring AI та OpenAI.
Не соромтеся розширювати цей проект, додаючи такі функції, як:
- Кешування відповідей для повторюваних запитів.
- Покращення побудови запитів.
- Валідація введених даних користувача.
- Додавання можливості додаткової кастомізації в генерації рецептів.
Перекладено з: Building a Spring AI Project to Generate Recipes Using Spring AI