1. 스프링 부트 프로젝트 초기화
스프링 부트는 웹 애플리케이션을 빠르게 만들 수 있도록 도와주는 프레임워크입니다. 프로젝트를 초기화하고, AI 기능을 구현하기 위해 기본적인 설정을 먼저 진행해야 합니다.
1.1 Spring Initializr 사용하기
1.
2.
설정:
•
Project: Gradle Project (또는 Maven 사용 가능)
•
Language: Java
•
Spring Boot: 최신 안정 버전 (예: 3.1.0)
•
Project Metadata:
◦
Group: com.example
◦
Artifact: spring-ai
◦
Name: spring-ai
◦
Package Name: com.example.springai
◦
Packaging: Jar
◦
Java Version: 17 (최신 버전을 사용하면 좋습니다)
3.
Dependencies 추가:
•
Spring Web: 웹 애플리케이션을 만들기 위한 필수 구성 요소
•
Spring Boot DevTools: 개발 중에 편리한 기능들
•
Lombok: 코드 간소화를 위한 라이브러리
•
Spring Data JPA: 데이터베이스 연동 (향후 데이터 저장을 위해 필요할 수 있음)
4.
Generate 버튼 클릭 후 압축 파일을 다운로드하고 프로젝트 폴더를 압축 해제합니다.
1.2 IDE 설정
압축을 해제한 프로젝트 폴더를 IntelliJ IDEA, Eclipse 또는 VS Code와 같은 IDE에서 엽니다.
1.
IntelliJ IDEA 사용 시:
•
File -> Open을 클릭하고 프로젝트 폴더를 엽니다.
•
Gradle 또는 Maven 동기화를 자동으로 진행할 것입니다.
1.3 기본 프로젝트 구조
Spring Initializr로 생성한 프로젝트는 기본적으로 아래와 같은 구조를 가집니다:
spring-ai/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/example/springai/
│ │ │ └── SpringAiApplication.java
│ ├── test/
│ │ └── java/
│ │ └── com/example/springai/
├── build.gradle
└── settings.gradle
Shell
복사
•
SpringAiApplication.java는 프로젝트의 메인 클래스로, 스프링 부트 애플리케이션이 실행될 때 가장 먼저 호출됩니다.
2. AI 서비스 구현 준비
2.1 AI 관련 라이브러리 추가
AI 기능을 구현하려면, 외부 API 또는 AI 라이브러리를 사용할 수 있습니다. 여기서는 OpenAI API를 사용하는 방법을 예로 들어 설명하겠습니다. Java에서 OpenAI API를 사용하여 텍스트 생성이나 자연어 처리를 할 수 있습니다.
1.
Gradle 설정 파일에 라이브러리 추가: build.gradle 파일을 열어 OpenAI와 관련된 HTTP 통신 라이브러리를 추가합니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-devtools'
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// HTTP 요청을 위해 추가
implementation 'org.springframework.boot:spring-boot-starter-webflux'
// JSON 처리 라이브러리
implementation 'com.fasterxml.jackson.core:jackson-databind'
// OpenAI 클라이언트 라이브러리
implementation 'com.theokanning.openai-gpt3-java:client:0.10.0' // 최신 버전 확인 필요
}
Groovy
복사
1.
Gradle 빌드: IDE에서 Gradle을 다시 빌드하여 새로 추가한 라이브러리들을 다운로드합니다.
2.2 OpenAI API 키 설정
1.
API 키를 안전하게 관리: 스프링 부트에서 API 키와 같은 중요한 정보는 application.properties 파일에 저장하거나 환경 변수를 통해 관리합니다.
src/main/resources/application.properties 파일을 열고, 아래와 같이 OpenAI API 키를 저장합니다:
openai.api.key=your-openai-api-key-here
Plain Text
복사
2.3 AI 서비스 클래스 작성
이제 AI와 상호작용할 서비스를 작성해 보겠습니다. src/main/java/com/example/springai/service 디렉토리에 OpenAIService.java 파일을 생성합니다.
package com.example.springai.service;
import com.theokanning.openai.OpenAiService;
import com.theokanning.openai.completion.CompletionRequest;
import com.theokanning.openai.completion.CompletionResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class OpenAIService {
private final OpenAiService openAiService;
public OpenAIService(@Value("${openai.api.key}") String apiKey) {
this.openAiService = new OpenAiService(apiKey);
}
public String generateText(String prompt) {
CompletionRequest completionRequest = CompletionRequest.builder()
.prompt(prompt)
.maxTokens(100)
.build();
CompletionResult result = openAiService.createCompletion(completionRequest);
return result.getChoices().get(0).getText();
}
}
Java
복사
•
OpenAiService: OpenAI의 클라이언트 라이브러리를 사용하여 텍스트 생성을 요청합니다.
•
generateText: OpenAI API로 텍스트를 생성하는 메서드로, 주어진 prompt에 대한 응답을 반환합니다.
2.4 컨트롤러 작성
이제 웹 API를 통해 AI 서비스를 호출할 수 있도록 컨트롤러를 작성합니다. src/main/java/com/example/springai/controller 디렉토리에 AIController.java 파일을 생성합니다.
package com.example.springai.controller;
import com.example.springai.service.OpenAIService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AIController {
private final OpenAIService openAIService;
public AIController(OpenAIService openAIService) {
this.openAIService = openAIService;
}
@GetMapping("/generate")
public String generateText(@RequestParam String prompt) {
return openAIService.generateText(prompt);
}
}
Java
복사
•
/generate 엔드포인트를 호출하면 prompt 값을 기반으로 AI가 생성한 텍스트를 반환합니다.
3. 프로젝트 실행 및 테스트
3.1 실행
1.
SpringAiApplication.java 파일을 열고 main 메서드를 실행합니다. 이 메서드는 스프링 부트 애플리케이션을 시작합니다.
2.
애플리케이션이 실행되면 브라우저에서 http://localhost:8080/generate?prompt=Hello%20AI를 호출하여 OpenAI API로 텍스트 생성을 테스트할 수 있습니다.
3.2 테스트 결과
•
정상적으로 작동하면 AI가 제공한 텍스트 응답이 웹 페이지에 출력됩니다.
4. 추가 사항
•
에러 핸들링: API 호출 시 발생할 수 있는 오류를 처리하는 로직을 추가하여 안정성을 높일 수 있습니다.
•
비동기 처리: AI API 호출이 오래 걸릴 경우, 비동기 처리를 통해 성능을 개선할 수 있습니다.