1. 서론
프로젝트에서 뉴스 요약하기 기능을 구현하기 위해 OpenAI의 ChatGPT를 사용하기로 했다. 사실 이전 프로젝트에서도 GptAPI를 사용한 기능을 구현했었는데, 아래 사진처럼 클래스도 여러 개 만들어야 하고 더 효율적으로 AI 기능을 사용할 수는 없을까? 라는 생각을 하다가 Spring에서 AI를 지원한다는 정보를 알게 되었다. 이번 포스팅에서는 Spring AI를 사용하여 정말 간단하게 AI 기능을 구현하는 방법을 알아보겠다.
2. Reference
Spring AI에서는 다양한 AI를 지원하며 공식 문서에서 이를 찾아볼 수 있다. 다음 링크는 OpenAI의 Chat AI 사용 방법에 대한 Spring 공식 문서 링크이다. 이 문서와 OpenAI의 공식 문서를 참고하여 코드를 작성했다.
- Spring AI 공식 문서: https://docs.spring.io/spring-ai/reference/api/chat/openai-chat.html
- OpenAI 공식 문서: https://platform.openai.com/docs/models
3. 구현
3-1. Setting
Spring AI를 사용하기 위한 몇 가지 단계가 있다.
- OpenAI API Key 발급
- Spring 프로젝트에 Key 등록
3-1-1. OpenAI API Key 발급
2024.10.20 - [IT 트랜드] - OpenAI API Key 발급 (ChatGpt, Dell-E API 키 발급, 2024.10 최신 버전)
API 키를 발급받아 클립보드에 복사하자
3-1-2. Spring 프로젝트에 Key 등록
application.yml 파일에 아까 발급받은 키를 등록해준다. ${OPENAI_API_KEY} 부분에 키를 입력하거나 환경변수 설정해주면 된다.
이때 주의해야할 점은 정확히 spring.ai.openai.api-key로 작성해야 한다. 그래야 spring에서 이 부분을 인식하고 가져다 쓴다.
환경변수 설정하는 방법
2024.10.20 - [백엔드] - [Spring Java, Kotlin] 인텔리제이 application.yml 환경변수 설정하기
3-2. Code
@Service
class OpenAiService(
private val chatModel: OpenAiChatModel,
) : OpenAiService {
fun aiSummary(content: String): String {
val prompt =
"""
당신은 전문적인 뉴스 요약 AI입니다. 주어진 뉴스 기사를 다음 가이드라인에 따라 요약해주세요:
1. 핵심 내용을 3-5문장으로 요약하세요.
2. 중요한 이름, 날짜, 숫자를 포함하세요.
3. 객관적이고 중립적인 톤을 유지하세요.
4. 원문의 맥락을 유지하면서 간결하게 작성하세요.
뉴스 기사:
$content
요약:
""".trimIndent()
return chatModel.call(prompt)
}
}
프롬프트와 뉴스 본문을 더해 프롬프트를 작성했다. 프롬프트를 작성하고 OpenAiChatModel이 제공하는 call 함수를 사용하면 요청을 보낼 수 있다.
이전에 환경변수에서 설정했던 값들을 토대로 스프링 내부적으로 요청을 처리한다.
이렇게 간단하게 GPT를 사용한 기능 구현을 할 수 있었다. 더해서 SpringAI에서 다른 좋은 기능들도 많이 제공하니 참고해보면 좋을 것 같다.
'백엔드 > Kotlin + Spring' 카테고리의 다른 글
[Kotlin Spring] Relogging - 파일 다중 업로드와 Http 415 오류 및 해결 (스웨거 오류, MultipartFile) (1) | 2024.10.16 |
---|