메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

[Spring Boot] 스프링 부트 애플리케이션에서 OpenAI GPT 모델 연동하기

 

스프링 부트 애플리케이션에서 OpenAI의 GPT 모델을 연동하면, 자연어 처리 기반의 대화형 기능을 손쉽게 구현할 수 있습니다. 예를 들어, 사용자 질문에 자동 응답하는 챗봇이나 생성형 AI 기반의 기능을 서버 사이드에서 유연하게 개발할 수 있죠.

 

이를 위해 먼저 OpenAI 플랫폼에 가입해 API 키를 발급받아야 합니다. 가입하면 프리 티어(Free Tier)로 일정 금액의 무료 크레딧이 제공되며, 테스트 목적으로 충분히 활용할 수 있습니다. 지금부터 스프링 부트 애플리케이션에 OpenAI GPT 모델을 연동하는 전체 과정을 함께 살펴보겠습니다.

 

 

 

01 OpenAI 플랫폼 홈페이지(https://platform.openai.com)에서 회원가입을 완료한 후, 설정(Settings) 화면으로 이동합니다. 좌측 메뉴에서 [Billing]을 선택하면 신용카드를 등록해 일정 금액을 선불로 충전할 수 있습니다. 기본으로 제공되는 프리 티어는 여러 제약이 있으므로, 안정적인 사용을 위해 유료 플랜 전환을 권장합니다.

 

 

 

 



충전한 금액을 모두 사용하면 API 연동이 중단되므로, 잔액이 부족해지기 전에 미리 충전해 두는 것이 좋습니다. 자동 충전은 [Enable auto recharge] 옵션을 활성화하면 되고, 이를 통해 API 사용이 중단되는 상황을 방지할 수 있습니다. 또한, 설정 메뉴의 [Limits] 항목에서 월별 사용 한도를 지정할 수 있어, 상용 서비스에서 예기치 않게 과도한 요금이 청구되는 것을 막을 수 있습니다.

 

 

 

 

 

02 선불 금액을 충전한 후, 설정 메뉴에서 [API keys] 항목을 선택해 새 API 키를 생성합니다. 생성된 키는 스프링 부트 프로젝트의 설정 파일에 추가하거나, 환경 변수로 주입해 사용할 수 있습니다.

 

 

 

 

 

API 키가 유출되었거나 더 이상 사용하지 않는 경우, 설정 메뉴의 [API keys]에서 해당 키를 선택한 후 [Revoke key]를 클릭해 비활성화할 수 있습니다.

 

 

 

 

 

03 OpenAI 플랫폼이 지원하는 AI 모델은 홈페이지의 [Docs] - [GET STARTED] - [Overview]에서 확인할 수 있으며, 연동할 모델은 스프링 부트 애플리케이션의 설정 파일에서 선택할 수 있습니다.

 

 

 

 

 

 


 

✅ 환경설정

 

 

스프링 부트에서 OpenAI의 다양한 AI 모델을 연동하려면, 먼저 스프링 이니셜라이저(Spring Initializr)에서 OpenAI와 Lombok 의존성을 추가한 후 프로젝트를 생성합니다.

 

 

 

 

프로젝트를 열고 다음과 같이 OpenAI 플랫폼에서 발급 받은 API 키를 설정합니다.

 

 

 

 

OpenAI API를 사용하려면 반드시 API 키를 설정해야 하며, 아래와 같은 추가 옵션을 지정할 수 있습니다.

 

  • spring.ai.openai.chat.options.model: 
    연동할 AI 모델을 설정합니다. 사용할 수 있는 모델은 OpenAI 모델 문서(https://platform.openai.com/docs/models)에서 확인할 수 있으며, 별도로 지정하지 않으면 기본값으로 gpt-4o-mini가 사용됩니다.
  • spring.ai.openai.chat.options.temperature: 
    AI 응답의 창의성과 다양성을 조절하는 설정입니다. 0에서 2 사이의 값을 지정할 수 있으며, 낮은 값은 정밀하고 일관된 응답이 필요할 때, 높은 값은 창의적인 결과가 필요한 상황에서 사용합니다. 기본값은 0.8입니다.

 

 

 

 

 

✅ AI 모델 연동

 

AI 모델은 특정 작업을 수행할 수 있도록 훈련된 프로그램으로, 사전에 학습한 대규모 데이터를 기반으로 사용자의 요청에 따라 새로운 정보를 예측하거나 생성할 수 있습니다. OpenAI는 텍스트 기반의 대화형 모델을 비롯해 이미지 생성, 오디오 처리 등 다양한 AI 모델을 제공하고 있습니다. 이제 스프링 부트 애플리케이션에서 이러한 AI 모델을 어떻게 연동할 수 있는지 살펴보겠습니다.

 

 

 

• 대화형 모델

 

AI 모델 중 가장 기본적이고 널리 사용되는 것이 바로 대화형 모델(Chat Model)입니다. 사용자가 메시지를 전달하면, 모델은 사전 학습된 데이터를 바탕으로 적절한 응답을 생성합니다. 스프링 부트 프로젝트 생성 시 ‘OpenAI’ 의존성을 포함하면, 애플리케이션 실행 시 OpenAiChatModel 객체가 자동으로 스프링 컨테이너에 등록됩니다.

 

따라서 필요한 곳에서 OpenAiChatModel 객체를 주입받아 바로 사용할 수 있습니다. 예를 들어, 다음과 같이 테스트 클래스를 작성하면 OpenAiChatModel을 활용한 테스트 코드를 실행할 수 있습니다.

 

 

 OpenAiChatModelTests.java

@SpringBootTest
public class OpenAiChatModelTests {
    @Autowired
    private OpenAiChatModel chatModel;
    
    // ...
 }

 

 

 

 

• 간단하게 질문하고 답변 받기

 

OpenAiChatModel 객체를 사용하는 가장 간단한 방법은 call() 메서드로 질문을 던지고 답변을 받는 것입니다. 다음 코드와 같이 테스트 케이스를 작성한 후 서울 올림픽에 대해 간단한 질문을 던지고 답변을 받아 출력해 봅니다. 모델 객체의 call() 메서드에 질문을 String 타입의 매개변수로 전달하면 응답을 String 타입으로 반환됩니다.

 

 

 OpenAiChatModelTests.java

@Test

public void testChatModelSimple() {
    String result = chatModel.call("서울 올림픽은 몇 회 올림픽이야?");
    System.out.println(result);
}

 

 

테스트 결과는 다음과 같습니다. OpenAI의 대화형 AI 모델이 질문의 의도를 정확히 파악하고 답변해 줍니다.

>> 서울 올림픽은 1988년에 개최된 제24회 하계 올림픽입니다.

 

 

 

 

• 사용자 메시지와 시스템 메시지 전달하기

 

대화형 모델에 메시지를 전달할 때는, 메시지의 역할에 따라 시스템 메시지와 사용자 메시지로 구분할 수 있습니다.

 

  • 시스템 메시지: AI 모델의 성격이나 답변에 대한 방식을 정의하는 메시지입니다.
    예를 들어 “너는 고객에게 친절한 답변을 하는 챗봇이야. 고객의 질문에 친절하고 상세하게 답변해 줘”라고 하거나 
    또는 “모든 답변은 두 문장 이내로 간단하게 요약해 줘”와 같이 전반적인 대화의 분위기를 설정합니다.
  • 사용자 메시지: 사용자가 AI에게 질문하거나 요청하는 메시지입니다. 
    예를 들어 “서울 올림픽에 대해 알려 주세요.”
    또는 “원주율을 계산하는 자바 코드를 작성해 줘”와 같이 대화의 구체적인 내용을 결정합니다.

 

 

다음은 시스템 메시지와 사용자 메시지를 별도로 전달하고 답변을 받는 예제 코드입니다. 각각을 UserMessage 객체와 SystemMessage 객체로 생성하고, 모델 객체의 call() 메서드에 생성한 2개의 메시지를 매개변수로 전달합니다.

 

 

OpenAiChatModelTests.java

@Test
public void testChatModelMessage() {
    UserMessage userMessage = new UserMessage("서울 올림픽에 대해 알려 주세요.");
    SystemMessage systemMessage = new SystemMessage("답변은 최대한 간결하게 하고 관련된 내용은 뉴스를 참고하라고 해 줘."); 
    String result = chatModel.call(userMessage, systemMessage);
    System.out.println(result);
 }

 


실행 결과는 다음과 같습니다. 시스템 메시지의 요청에 따라 서울 올림픽에 대한 내용이 세 줄로 간결하게 요약되었으며, 마지막에는 관련 뉴스를 참고하라는 문구가 포함되었습니다. 이처럼 시스템 메시지는 애플리케이션의 성격에 맞게 고정해 두고, 사용자 메시지만 별도로 입력받아 활용할 수 있습니다.

 

>> 서울 올림픽은 1988년 9월 17일부터 10월 2일까지 대한민국 서울에서 열린 하계 올림픽입니다.
이 대회는 아시아에서 열린 두 번째 올림픽이자, 한국이 주최한 첫 번째 올림픽이었습니다.
서울 올림픽은 세계적인 관심을 받았으며, 한국의 경제 발전과 국제 위상 향상에 기여했습니다. 
자세한 내용은 관련 뉴스를 참고하시기 바랍니다.

 

 

 

이미지 및 오디오를 사용한 멀티모달 기능, 음성 및 이미지 AI 모델을 활용한 실제 연동 및 프롬프트 작성, ✓텍스트-음성 변환(TTS) 및 음성-텍스트 변환(STT) AI 모델과 유해 감지 AI 모델,  ✓비즈니스에 검색 강화 생성 및 도구 호출 기법 적용 등은 도서에서 확인해 주세요.

 


 

위 콘텐츠는 『이것이 스프링 부트다 with 자바』의 내용을 재구성하여 작성되었습니다.

 

댓글

댓글 입력