#Day48

D0-$ANG ₩0N·2026년 1월 12일
post-thumbnail

Spring AI 실습 강의 요약

1. 프로젝트 생성 및 가져오기

  • Spring Initializr(웹 UI)를 통해 Gradle 기반 Spring 프로젝트를 생성한다.
  • Spring AI 관련 라이브러리를 선택하면 build.gradle 파일에 의존성이 자동 추가된다.
  • Generate 버튼을 누르면 압축 파일이 다운로드되며, 압축을 해제한 뒤 기존 작업 폴더로 이동하거나 IDE(STS, IntelliJ, VS Code)에서 Import 한다.
  • Gradle Project로 Import 할 경우, 프로젝트 루트 폴더를 지정하면 된다.
  • 최초 실행 시에는 Java 버전, 포트 충돌 여부, 기존 실행 중인 애플리케이션 종료 여부를 확인해야 한다.

2. 기본 확인 포인트

프로젝트를 열었을 때 반드시 확인해야 할 파일:

  1. build.gradle

    • Spring AI, 모델 연동(OpenAI, Gemini, Claude, Ollama 등) 관련 의존성 확인
 plugins {
	id 'java'
	id 'org.springframework.boot' version '3.5.9'
	id 'io.spring.dependency-management' version '1.1.7'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(21)
	}
}

repositories {
	mavenCentral()
}

ext {
	set('springAiVersion', "1.1.2")
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-jdbc'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
    // ✅ Google Gemini (Google Generative AI)
    implementation 'org.springframework.ai:spring-ai-starter-model-google-genai'
    runtimeOnly 'com.h2database:h2'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

dependencyManagement {
	imports {
		mavenBom "org.springframework.ai:spring-ai-bom:${springAiVersion}"
	}
}

tasks.named('test') {
	useJUnitPlatform()
}
  1. application.yml 또는 application.properties

    • API Key 설정
    • 모델 선택 정보
    • 포트, 데이터소스 설정

이 두 파일을 먼저 확인하는 습관이 중요하다.

3. API Key 기반 LLM 연동 테스트

  • OpenAI, Gemini, Claude 등의 API Key를 발급받아 설정 파일에 등록
  • 컨트롤러에서 간단한 프롬프트를 코드로 전달하여 응답을 받는 방식으로 테스트
  • Key가 없거나 잘못되면 실행 시 에러가 발생하므로, 각 모델별 정상 동작 여부를 확인
  • 여러 Key를 동시에 테스트하여 어떤 모델이 정상 동작하는지 비교 가능

4. 로컬 LLM (Ollama) 활용

  • Ollama를 설치하여 로컬 환경에서 LLM 실행
  • Hugging Face 등에서 공개된 모델을 다운로드하여 사용
  • 모델 파일은 수 GB 단위로 저장되며, 로컬 디스크 용량 관리 필요
  • 모델 경로에서 용량 및 다운로드 시점을 확인하여 불필요한 모델은 삭제
  • API Key 없이 로컬 모델을 통해 질문/응답 테스트 가능

의미:

  • 클라우드 API 비용 없이 실험 가능
  • 성능은 상용 모델보다 낮을 수 있으나, 구조 이해와 서비스 실험에 유용

5. Controller 기반 웹 요청 처리

  • @RestController, @GetMapping, @PostMapping 등을 사용하여 요청 처리

  • Query Parameter(@RequestParam)를 활용해 브라우저 주소창에서 입력값 전달

  • 예:

    • /ai/generate?message=오늘 날씨 알려줘
  • 컨트롤러 코드를 보면 어떤 URL로 요청해야 하는지 바로 파악 가능

중요 포인트:

  • 프로젝트가 커질수록 요청 경로 네이밍 규칙이 중요
  • AI 기능용 경로와 일반 서비스 경로를 명확히 분리하는 것이 유지보수에 유리

6. Front-End 연동 관점

  • 현재 실습은 브라우저 주소창 테스트 중심
  • 실제 서비스에서는 React 등 프론트엔드에서 입력값을 받아 Controller로 전달
  • Spring AI는 백엔드 역할, React는 UI 역할로 분리 가능
  • 응답 결과를 JSON 형태로 받아 화면에 렌더링하는 구조로 확장 가능

7. JSON / 이미지 응답 테스트

  • 텍스트 응답뿐 아니라 JSON 형태의 응답 제공 가능
  • 이미지 생성 기능은 일부 모델(OpenAI 등)에서만 지원
  • 모델에 따라 지원 기능이 다르므로 문서 확인 필수

8. 메모리 DB (H2) 활용

  • H2 메모리 DB를 사용해 간단한 데이터베이스 실습

  • 애플리케이션 실행 시:

    • 테이블 자동 생성
    • 초기 데이터 자동 Insert
  • 종료 시 데이터는 모두 사라짐

활용 목적:

  • 빠른 테스트
  • 구조 이해

한계:

  • 실제 서비스용으로는 부적합

9. DB + AI 연계 개념

  • DB에 저장된 데이터를 기반으로 AI 질의 수행 가능
  • 예: 도서, 저자, 출판사 테이블을 생성하고 질문에 따라 데이터 조회
  • 향후 Docker 기반 MySQL, PostgreSQL 등 영속 DB로 확장 가능

10. 전체 흐름 정리

  1. 외부 API 기반 LLM 사용 (OpenAI, Gemini 등)
  2. 로컬 LLM(Ollama) 다운로드 및 실행
  3. Spring Controller를 통한 요청 처리
  4. 프론트엔드 연동 가능 구조 이해
  5. DB 연계 및 향후 서비스 확장 가능성 이해

11. 핵심 메시지

  • 목표는 새로운 LLM을 만드는 것이 아니라, 기존 모델을 활용한 서비스 개발
  • 데이터, 요청 구조, 프롬프트 설계가 더 중요
  • 작은 프로젝트라도 전체 흐름을 직접 경험하는 것이 중요

Spring AI는 실무에서 AI 기능을 빠르게 서비스에 접목할 수 있는 도구이며, 다양한 모델과 연동 구조를 이해하는 것이 이번 실습의 핵심이다.

profile
Change Up

0개의 댓글