Spring Boot에 Google Gemini 2.0 Flash 통합하기: 완벽 가이드

소개

AI 기술이 급속도로 발전하면서 개발자들은 다양한 AI 모델을 자신의 애플리케이션에 통합하려는 시도를 하고 있습니다.

특히 Spring Boot 환경에서 AI 모델을 활용하는 방법에 대한 관심이 높아지고 있는데요, 오늘은 Google의 강력한 AI 모델인 Gemini 2.0 Flash를 Spring Boot 애플리케이션에 통합하는 방법에 대해 알아보겠습니다.

Google Gemini 2.0 Flash는 ChatGPT나 Deep Seek와 같은 다른 AI 모델들과 유사하게 작동하는 대화형 AI 도구입니다.

이 모델은 텍스트 생성, 질문 응답, 코드 작성 등 다양한 작업을 수행할 수 있으며, Spring Boot 애플리케이션과 통합하면 더욱 강력한 기능을 구현할 수 있습니다.

Spring AI 프레임워크 소개

Spring AI는 AI 엔지니어링을 위한 응용 프로그램 프레임워크로, Spring 생태계의 설계 원칙을 AI 도메인에 적용하는 것을 목표로 합니다.

이 프레임워크는 다양한 AI 모델을 Spring Boot 애플리케이션에 쉽게 통합할 수 있도록 도와줍니다.

Spring AI는 다음과 같은 여러 AI 모델과의 통합을 지원합니다

  • Anthropic Claude
  • Azure OpenAI
  • Google Vertex AI (Gemini)
  • Hugging Face
  • Minimax
  • Ollama
  • OpenAI

Google Gemini 2.0 Flash 통합 방법

Google Gemini 2.0 Flash를 Spring Boot 애플리케이션에 통합하는 방법은 두 가지가 있습니다.

첫 번째는 Spring AI의 표준 방법이지만, 현재 이 방법은 Google Gemini 2.0 Flash에 대해 완벽하게 작동하지 않습니다.

두 번째는 Google의 OpenAI 호환성 API를 활용하는 방법으로, 이 글에서는 이 방법을 자세히 알아보겠습니다.

1. Spring AI의 표준 방법

Spring AI의 표준 방법은 다음과 같은 단계로 구성됩니다

  • Spring AI 스타터 의존성 추가
  • 컨트롤러 생성
  • 채팅 모델 호출

그러나 이 방법은 현재 Google Gemini 2.0 Flash에 대해 완전히 작동하지 않습니다.

2. Google의 OpenAI 호환성 API 활용 방법

Google은 OpenAI 호환성을 제공하여 OpenAI 라이브러리를 통해 Gemini 모델에 접근할 수 있도록 했습니다.
Java에서는 직접적인 라이브러리가 제공되지 않기 때문에, REST API를 통해 호출하는 방식을 사용해야 합니다.


준비 사항

  • Spring Boot 프로젝트 생성
  • 필요한 의존성: Spring Web, OpenAI 스타터 의존성
  • Google AI Studio에서 API 키 생성

구현 단계

1단계: Spring Boot 프로젝트 설정

먼저 Spring Boot 프로젝트를 생성하고 필요한 의존성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    </dependency>
</dependencies>

2단계: application.properties 설정

application.properties 파일에 다음과 같은 설정을 추가합니다.

spring.ai.openai.chat.base-url=https://generativelanguage.googleapis.com
spring.ai.openai.chat.completion-path=/v1beta/models
spring.ai.openai.api-key=YOUR_GEMINI_API_KEY
spring.ai.openai.chat.model=gemini-1.5-flash

여기서 YOUR_GEMINI_API_KEY는 Google AI Studio에서 생성한 API 키로 대체해야 합니다.

3단계: REST 클라이언트 구성 및 컨트롤러 작성

@RestController
public class GoogleAiController {

    private final OpenAiProperties openAiProperties;
    private final RestClient restClient;

    public GoogleAiController(OpenAiProperties openAiProperties, RestClient.Builder builder) {
        this.openAiProperties = openAiProperties;
        String baseUrl = openAiProperties.getChatBaseUrl();
        String baseUrlWithSlash = baseUrl.endsWith("/") ? baseUrl : baseUrl + "/";
        this.restClient = builder.baseUrl(baseUrlWithSlash).build();
    }

    @GetMapping("/models")
    public Map<String, Object> getModels() {
        ResponseEntity<Map> response = restClient.get()
                .uri("v1beta/openai/models")
                .header("Authorization", "Bearer " + openAiProperties.getApiKey())
                .retrieve()
                .toEntity(Map.class);
        return response.getBody();
    }
}

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "spring.ai.openai")
public class OpenAiProperties {
    private String apiKey;
    private String chatBaseUrl;

    public String getApiKey() {
        return apiKey;
    }

    public void setApiKey(String apiKey) {
        this.apiKey = apiKey;
    }

    public String getChatBaseUrl() {
        return chatBaseUrl;
    }

    public void setChatBaseUrl(String chatBaseUrl) {
        this.chatBaseUrl = chatBaseUrl;
    }
}

이 컨트롤러는 Google Gemini에서 제공하는 모델 목록을 가져오는 API를 구현합니다.
/models 엔드포인트에 GET 요청을 보내면, Google Gemini API를 호출하여 사용 가능한 모델 목록을 반환합니다.

4단계: 애플리케이션 실행 및 테스트
애플리케이션을 실행한 후, /models 엔드포인트에 요청을 보내 결과를 확인합니다.
성공적으로 호출되면 다음과 같은 응답을 받을 수 있습니다.

주의사항

  • API 키 보안: API 키는 환경 변수로 설정하거나 안전한 방법으로 관리해야 합니다.
    코드에 직접 하드코딩하지 마세요.

  • 오류 처리: API 호출 시 발생할 수 있는 다양한 오류 상황에 대비한 예외 처리 로직을 추가하세요.

  • 비용 관리: Google Gemini API 사용에는 비용이 발생할 수 있으므로, 사용량을 모니터링하세요.

결론

이 글에서는 Google Gemini 2.0 Flash를 Spring Boot 애플리케이션에 통합하는 방법에 대해 알아보았습니다.

Spring AI 프레임워크의 표준 방법이 아직 완전히 지원되지 않기 때문에, Google의 OpenAI 호환성 API를 활용하는 대안적인 방법을 사용했습니다.

이 방법을 통해 Spring Boot 애플리케이션에서 Google의 강력한 AI 모델을 활용할 수 있게 되었습니다.

이를 기반으로 다양한 AI 기능을 구현해보세요!

앞으로 Spring AI 프레임워크가 Google Gemini를 완전히 지원하게 되면, 더욱 간편하게 통합할 수 있을 것입니다.

그때가 오면 새로운 방법에 대한 포스팅도 준비하도록 하겠습니다.

출처

profile
꾸준히, 의미있는 사이드 프로젝트 경험과 문제해결 과정을 기록하기 위한 공간입니다.

0개의 댓글