Створення проекту Spring AI для генерації рецептів за допомогою Spring AI

В цій статті ми пройдемо через кроки створення проекту Spring Boot, який надає REST API. Це API приймає інгредієнти рецепту та тип кухні як параметри і повертає рецепт, згенерований штучним інтелектом, використовуючи Spring AI. Цей посібник орієнтований на початківців, які хочуть навчитися використовувати вже готові моделі штучного інтелекту в додатку на основі Spring.

Що таке Spring AI?

Spring AI — це нове інтеграційне рішення в екосистемі Spring, яке дозволяє розробникам безпосередньо взаємодіяти з моделями штучного інтелекту через їх Spring-додатки. Воно спрощує процес інтеграції готових моделей штучного інтелекту, таких як серія GPT від OpenAI, надаючи утиліти та абстракції, які органічно вписуються в архітектуру Spring.

Основні функції Spring AI:

  1. Інтеграція моделей: Spring AI підтримує інтеграцію з різними моделями штучного інтелекту, такими як GPT від OpenAI, та може бути розширено для інших сервісів машинного навчання.
    2.

    Управління підказками

  2. Управління підказками: Надає інструменти для структуризації та ефективного управління підказками, що полегшує генерування змістовних результатів.

  3. Безшовна інтеграція з 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

  1. Перейдіть на 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.

  1. Використовуйте інструменти, такі як 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

Leave a Reply

Your email address will not be published. Required fields are marked *