Spring AI 시작하기, 사용법

알찬·2025년 2월 10일
post-thumbnail

개요

  • 나는 기술적인 메뉴얼을 블로그에 작성하는걸 매우 싫어한다
  • 근데 Spring AI를 1년만에 쓰려고 하니까 함수가 다 deprecated 됨
  • 필자는 이미 개발된 기능이 아닌 이상 deprecated 된 함수 사용을 용납 못함 (좀 심해)
  • 블로그에 찾아봤는데 자료가 없어서 공식문서를 보고 개발함
  • 여러분들은 제 글 보고 편하게 개발하라고 글 씀

아무리 정식버전이 아니여도 그렇지 무슨 1년만에 쓰니까 천지개벽이 일어나있냐고

목차

Spring AI 의존성 설치하기

아직 정식출시가 되지 않은 기능은 gradle에 한줄 띡 추가한다고 설치되지 않습니다.
아래 제가 추가해놓은 빌드 설정을 모두 추가해야지 정상적으로 사용하실 수 있습니다

repositories {
	mavenCentral()
	maven { url 'https://repo.spring.io/milestone' }
	maven { url 'https://repo.spring.io/snapshot' }
}

dependencies {
	implementation 'org.springframework.ai:spring-ai-openai'
	implementation platform("org.springframework.ai:spring-ai-bom:1.0.0-SNAPSHOT")
}

아직 mavenCentral 레포지토리에 포함되지 않은 라이브러리이기 때문에 추가 maven 저장소를 설정합니다

그 다음 의존성을 추가해줘야합니다, 저는 open ai api를 사용할 예정이라 위와 같이 설정해줬습니다.
AI 모델별 의존성이 달라 다른 모델을 사용하고 싶으신분은 아래 링크에서 찾을 수 있습니다.

https://docs.spring.io/spring-ai/reference/api/index.html

Spring AI 설정파일 작성하기

Spring AI 관련된 빈을 설정하고 사용하는 방법에 대해 알아보겠습니다.
이 부분이 작년에 비해 많은 변화가 있어서 작년 게시글을 참고하기엔 많은 deprecated 경고를 마주할겁니다

저는 공식문서와 라이브러리를 직접 까보는 방법으로 공부했습니다.
사실 문법적인 사용법은 공식문서보다 직접 라이브러리 보는게 더 편하더라구요.
기능 자체에 대한 설명이나 부가사항은 공식문서를 보는편이고 사용법은 직접 라이브러리를 보는편입니다.

spring:
  ai:
    openai:
      api-key: "API Key"

일단 application 설정파일에 사용하려는 AI API의 key를 세팅해줍니다

@Configuration
class OpenAiConfig(
    @Value("\${spring.ai.openai.api-key}")
    private val apiKey: String
) {

    @Bean
    fun chatClient() : OpenAiChatModel {
        val key = ApiKey { apiKey }

        val openAiApi = OpenAiApi.builder().apiKey(key).build()
        val openAiOptions = OpenAiChatOptions.builder().model("gpt-4o").build()

        return OpenAiChatModel(openAiApi, openAiOptions)
    }

}

그리고 configuration 파일을 작성해줍니다.
작년에는 api key를 String 형태로 생성자에 넣어서 사용했는데 객체로 변환해서 사용하도록 변경되었습니다.

ApiKey 객체를 보면 getValue로 String을 반환하는 간단한 인터페이스인데 람다로 객체를 만들어줍니다.

Key를 이용해서 OpenAiApi 빌더로 API 객체를 만들고 Options 객체는 필수는 아니지만 모델을 지정하거나 다른 옵션을 설정하기 위해 사용합니다.

AI Model을 지정해주지 않는 경우에는 'DEFAULT_CHAT_MODEL'을 사용하게 되어있습니다.

OpenAI 사용하시는 분들은 위 코드 참고해서 원하는 모델 선택하시면 됩니다. (Model도 매번 교체됨)

마무리하며

항상 느끼는점이지만 외부 라이브러리를 뜯어보는건 재미있기도 하고 도움도 많이 되는것 같습니다.

물론 AI한테 물어보거나 이미 다른 사람이 설명한 블로그를 참고하는것도 좋지만 잘 짜여진 라이브러리를 보면 재미있기도 하고 배우는점도 많아서 제가 가르치는 멘티들에게는 라이브러리 사용하다가 막히면 코드를 타고 들어가보라는 조언을 많이 합니다.

그러다가 고쳐야하는 부분이 보이면 수정해서 PR을 날리거나 여러 개발자로서 성장할 수 있는 경험들로 연결되는것 같습니다. 다들 오픈소스 컨트리뷰터는 넘사구나..라고 생각하지 말고 작은것 하나에서 출발해보세요.

profile
개발을 짝사랑중인 개발자

0개의 댓글