[Kotlin Spring] Relogging - Spring AI 활용 구현하기 정리 (OpenAI, ChatGPT API 사용하기)

2024. 11. 7. 00:37·백엔드/Kotlin + Spring
목차
  1. 1. 서론
  2. 2. Reference
  3. 3. 구현
  4. 3-1. Setting
  5. 3-2. Code
728x90
반응형

1. 서론

프로젝트에서 뉴스 요약하기 기능을 구현하기 위해 OpenAI의 ChatGPT를 사용하기로 했다. 사실 이전 프로젝트에서도 GptAPI를 사용한 기능을 구현했었는데, 아래 사진처럼 클래스도 여러 개 만들어야 하고 더 효율적으로 AI 기능을 사용할 수는 없을까? 라는 생각을 하다가 Spring에서 AI를 지원한다는 정보를 알게 되었다. 이번 포스팅에서는 Spring AI를 사용하여 정말 간단하게 AI 기능을 구현하는 방법을 알아보겠다.

이전 프로젝트에서 GPT API를 사용하기 위해 구현했던 파일들

 

 

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를 사용하기 위한 몇 가지 단계가 있다.

  1. OpenAI API Key 발급
  2. Spring 프로젝트에 Key 등록

 

3-1-1. OpenAI API Key 발급

2024.10.20 - [IT 트랜드] - OpenAI API Key 발급 (ChatGpt, Dell-E API 키 발급, 2024.10 최신 버전)

 

OpenAI API Key 발급 (ChatGpt, Dell-E API 키 발급, 2024.10 최신 버전)

OpenAI의 ChatGpt, Dell-E 등의 AI 모델을 사용하기 위한 OpenAI의 API 키를 발급하는 방법에 대해서 알아보겠다. 1. OpenAI 회원가입다음 링크에 들어가거나 검색 창에 OpenAI API를 검색해서 OpenAI 회원가입을

campus-coder.tistory.com

 

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 환경변수 설정하기

 

[Java, Kotlin Spring] 인텔리제이 application.yml 환경변수 설정하기

1. 실행 버튼 옆의 구성 편집 누르기 2. 환경 변수 옵션 추가 3. 환경 변수 설정환경 변수 칸에 다음과 같이 {환경변수}={값}; 형태로 입력 DATASOURCE_PASSWORD=0000;DATASOURCE_URL=jdbc:mysql://localhost:3306/test_d

campus-coder.tistory.com

 

 

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에서 다른 좋은 기능들도 많이 제공하니 참고해보면 좋을 것 같다.

728x90
반응형

'백엔드 > Kotlin + Spring' 카테고리의 다른 글

[Kotlin Spring] 스프링 스케줄러를 이용한 매일 오전 3시 작업 예약하기  (0) 2024.11.16
[Kotlin Spring] Relogging - 뉴스 기사 스크래핑하기 (크롤링과 스크래핑 차이)  (1) 2024.11.14
[Kotlin Spring] Relogging - AWS S3를 이용한 이미지 호스팅  (0) 2024.11.10
[Kotlin Spring] Relogging - 파일 다중 업로드와 Http 415 오류 및 해결 (스웨거 오류, MultipartFile)  (1) 2024.10.16
  1. 1. 서론
  2. 2. Reference
  3. 3. 구현
  4. 3-1. Setting
  5. 3-2. Code
'백엔드/Kotlin + Spring' 카테고리의 다른 글
  • [Kotlin Spring] 스프링 스케줄러를 이용한 매일 오전 3시 작업 예약하기
  • [Kotlin Spring] Relogging - 뉴스 기사 스크래핑하기 (크롤링과 스크래핑 차이)
  • [Kotlin Spring] Relogging - AWS S3를 이용한 이미지 호스팅
  • [Kotlin Spring] Relogging - 파일 다중 업로드와 Http 415 오류 및 해결 (스웨거 오류, MultipartFile)
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (187)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    컴공 포트폴리오
    백준
    상속
    명령어
    리눅스
    컴퓨터구조
    반복자
    오블완
    코틀린
    추가 문제
    컴퓨터 구조 및 설계
    자료구조
    사설 문제
    메모리 계층 구조
    C++
    자바
    단일 사이클
    티스토리챌린지
    데이터패스
    42서울
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[Kotlin Spring] Relogging - Spring AI 활용 구현하기 정리 (OpenAI, ChatGPT API 사용하기)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.