[Spring AI] Spring AI란? 개념부터 전체 구조까지 이해하기

2026. 8. 28. 17:06·개발/Spring
반응형

최근 LLM을 활용한 애플리케이션이 빠르게 늘어나면서 기존 웹 서비스에서도 ChatGPT, Claude, Gemini 같은 AI 모델을 사용하는 경우가 많아지고 있다.

 

예를 들자면 다음과 같은 기능을 생각해볼 수 있다.

AI 챗봇
문서 기반 질의응답
사내 데이터 검색
코드 분석
문서 요약
AI Agent
외부 API 자동 호출
 

Spring Boot 애플리케이션에서도 OpenAI API를 직접 호출하면 이러한 기능을 구현할 수 있다.

구조만 보면 간단하다.

Spring Application
        │
        │ HTTP Request
        ▼
     OpenAI API
        │
        │ Response
        ▼
       LLM
 

하지만 실제 서비스를 만들기 시작하면 단순히 HTTP 요청 한 번 보내는 것으로 끝나지 않는다.

OpenAI뿐만 아니라 Claude나 Gemini 같은 다른 모델을 사용해야 할 수도 있고, 대화 기록을 관리하거나 사내 문서를 검색하고, AI가 외부 API를 호출하도록 만들어야 할 수도 있다.

Prompt 관리
Streaming 응답
모델 변경
대화 Memory
Structured Output
RAG
Vector DB
Tool Calling
MCP
Observability
 

이러한 AI 애플리케이션의 공통 기능을 매번 직접 구현하면 코드와 구조가 빠르게 복잡해진다.

이 문제를 Spring 방식으로 해결하기 위해 등장한 것이 Spring AI다.


Spring AI란?

Spring AI는 Spring 애플리케이션에서 생성형 AI 기능을 쉽게 사용할 수 있도록 지원하는 AI 애플리케이션 프레임워크다.

LLM뿐만 아니라 Embedding Model, Vector Database, RAG, Tool Calling, MCP 등의 기능을 Spring의 방식으로 사용할 수 있도록 여러 추상화와 API를 제공한다.

한 문장으로 정리하면 다음과 같다.

Spring AI는 AI 모델과 기업의 데이터 및 서비스를 Spring 애플리케이션에 연결하기 위한 프레임워크다.

Spring AI 공식 문서에서도 핵심 문제를 기업의 Data와 API를 AI Model에 연결하는 것으로 설명하고 있다.

중요한 점은 Spring AI 자체가 AI 모델은 아니라는 것이다.

Spring AI ≠ ChatGPT
Spring AI ≠ LLM
Spring AI ≠ AI 모델
 

Spring AI는 OpenAI, Anthropic, Google 등의 AI 모델을 Spring 애플리케이션에서 편리하게 사용할 수 있도록 연결해주는 계층에 가깝다.

Spring Application
        │
        ▼
    Spring AI
        │
        ▼
   AI Provider
        │
        ▼
       LLM
 

예를 들어 실제 모델은 다음과 같은 것들이 될 수 있다.

OpenAI
→ GPT

Anthropic
→ Claude

Google
→ Gemini

Ollama
→ Local LLM
 

Spring AI는 이 모델들과 애플리케이션 사이에서 요청과 응답을 중재한다.


왜 Spring AI가 필요한가?

사실 Spring AI가 없어도 LLM API를 호출할 수 있다.

Spring에는 이미 다음과 같은 HTTP Client가 존재한다.

RestClient
WebClient
RestTemplate
 

따라서 OpenAI API를 직접 호출하는 코드도 충분히 만들 수 있다.

문제는 애플리케이션이 커질수록 나타난다.

예를 들어 처음에는 OpenAI만 사용했다고 해보자.

Application
     │
     ▼
 OpenAI API
 

그런데 이후 Claude도 사용해야 한다면?

Application
   │
   ├── OpenAI API
   │
   └── Anthropic API
 

각 AI 제공업체마다 API의 요청 구조와 응답 구조가 다를 수 있다.

OpenAI

{
  "model": "...",
  "messages": [...]
}
 
Claude

{
  "model": "...",
  "system": "...",
  "messages": [...]
}
 

인증 방법이나 Streaming 방식, 모델 옵션 등도 서로 차이가 있다.

결국 개발자는 모델마다 별도의 코드를 작성해야 한다.


기존 방식의 문제점

Spring 애플리케이션에서 LLM API를 직접 사용하면 여러 문제가 발생할 수 있다.

대표적으로 다음과 같다.

API 파편화

OpenAI, Anthropic, Bedrock, Gemini 등 AI Provider마다 API 구조가 다르다.

OpenAI API
     │
     ├─ Request 형식
     └─ Response 형식

Claude API
     │
     ├─ Request 형식
     └─ Response 형식
 

모델을 변경하면 관련 코드도 함께 변경해야 할 가능성이 커진다.


반복되는 구현

AI 애플리케이션에서는 반복적으로 필요한 기능들이 있다.

Prompt 구성
Streaming
Retry
Timeout
응답 Parsing
Token 사용량
Logging
 

이러한 기능을 프로젝트마다 직접 구현하면 중복 코드가 늘어난다.


AI 패턴을 직접 구현해야 함

서비스가 조금 복잡해지면 단순한 질문과 답변만으로는 부족하다.

이전 대화 기억
→ Memory

사내 문서 검색
→ RAG

외부 API 실행
→ Tool Calling

외부 도구 연결
→ MCP
 

이러한 구조까지 모두 직접 설계하면 AI 관련 코드가 상당히 복잡해진다.

Spring AI는 이러한 문제를 Spring의 추상화, DI, Auto Configuration 방식으로 해결하려는 프레임워크다.


Spring의 추상화를 AI에 적용한다

Spring AI를 이해할 때 가장 중요한 개념이 바로 추상화다.

Spring 개발을 해봤다면 Spring Data를 떠올려볼 수 있다.

Spring Data에서는 사용하는 데이터베이스가 달라져도 공통된 방식으로 데이터를 다룰 수 있도록 여러 인터페이스를 제공한다.

             Repository

                 │
       ┌─────────┼─────────┐
       ▼         ▼         ▼

      JPA      MongoDB    Redis
 

Spring AI도 비슷한 구조를 사용한다.

예를 들어 다양한 AI 모델을 ChatModel이라는 공통 인터페이스로 추상화한다.

               ChatModel

                  │
       ┌──────────┼──────────┐
       ▼          ▼          ▼

     OpenAI    Anthropic    Gemini
 

개발자는 각 Provider의 HTTP API를 매번 직접 처리하기보다는 Spring AI가 제공하는 공통 API를 사용한다.

공식 문서 역시 Spring AI가 AI Provider에 대한 공통 Model API를 제공해 구현체를 비교적 쉽게 교체할 수 있도록 설계되어 있다고 설명한다.


Spring AI의 기본 구조

전체 구조를 단순화하면 다음과 같이 볼 수 있다.

                Application

                     │
                     ▼

                 ChatClient
                     │
                     ▼

                  Prompt
                     │
                     ▼

                 ChatModel
                     │
                     ▼

                AI Provider

           OpenAI / Claude / Gemini
                     │
                     ▼

                    LLM
 

여기에서 중요한 개념들이 하나씩 등장한다.

ChatClient
→ LLM을 편리하게 호출하기 위한 고수준 API

Prompt
→ AI 모델에 전달할 요청 정보

ChatModel
→ 다양한 Chat AI Model을 추상화한 인터페이스

ChatResponse
→ AI 모델의 응답을 Spring AI 형식으로 표현한 객체
 

앞으로 Spring AI를 공부할 때 이 구조를 먼저 기억해두면 이해하기 쉽다.


ChatModel

ChatModel은 다양한 LLM의 요청과 응답을 공통된 방식으로 사용할 수 있도록 추상화한 인터페이스다.

예를 들어 애플리케이션 입장에서는 다음처럼 생각할 수 있다.

            ChatModel

               │
     ┌─────────┼─────────┐
     ▼         ▼         ▼

   OpenAI    Claude     Gemini
 

각 Provider가 내부적으로 사용하는 API는 다르지만 Spring AI가 중간에서 이를 변환한다.

Spring AI Prompt
       │
       ▼
    ChatModel
       │
       ▼
Provider Native Request
       │
       ▼
      LLM
 

그리고 LLM에서 받은 응답도 Spring AI의 공통 응답 형태로 변환한다.

LLM Response
     │
     ▼
Provider Native Response
     │
     ▼
Spring AI
     │
     ▼
ChatResponse
 

따라서 애플리케이션 코드가 특정 AI Provider의 API 구조에 지나치게 종속되는 것을 줄일 수 있다.


ChatClient

실제 애플리케이션에서는 ChatModel을 직접 사용하는 것보다 ChatClient를 사용하는 경우가 많다.

ChatClient는 ChatModel을 보다 편리하게 사용할 수 있도록 만든 고수준 Fluent API다.

예를 들어 다음과 같이 사용할 수 있다.

 
String result = chatClient
    .prompt()
    .user("Spring AI란 무엇인가?")
    .call()
    .content();
 

코드를 읽어보면 동작을 거의 그대로 이해할 수 있다.

prompt()
→ AI 요청 생성

user()
→ 사용자 질문 전달

call()
→ AI 모델 호출

content()
→ 응답 내용 추출
 

전체 흐름은 다음과 같다.

사용자 질문
    │
    ▼
ChatClient
    │
    ▼
ChatModel
    │
    ▼
   LLM
    │
    ▼
ChatResponse
    │
    ▼
응답 Content
 

Spring AI에서는 이러한 Fluent API를 통해 AI 호출 코드를 Spring 개발자가 익숙하게 사용할 수 있도록 구성한다.

공식 문서에서도 ChatClient를 WebClient, RestClient와 유사한 방식으로 사용할 수 있는 Fluent API로 설명하고 있다.


Spring AI는 어떤 기능을 제공할까?

Spring AI는 단순히 LLM API를 호출하는 기능만 제공하지 않는다.

AI 애플리케이션을 만들 때 필요한 여러 기능을 함께 제공한다.

대표적인 기능은 다음과 같다.

Model API

다양한 AI Model을 공통 인터페이스로 사용할 수 있다.

Chat Model
Embedding Model
Image Model
 

현재 공식 문서에서는 Chat, Embedding뿐만 아니라 이미지 생성, 음성 인식, 음성 생성 등 다양한 모델 유형을 지원하고 있다.


Prompt

LLM에게 전달하는 입력을 관리한다.

System Message
User Message
Assistant Message
ChatOptions
 

예를 들어 다음과 같은 정보를 AI에게 전달할 수 있다.

너는 Spring 전문가다.
        ↓
System Message

Spring AI가 무엇인지 설명해줘.
        ↓
User Message
 

Structured Output

LLM의 자유로운 문자열 응답을 Java 객체와 같은 정형화된 데이터로 변환할 수 있다.

LLM

"홍길동의 나이는 30살입니다."

        ↓

Structured Output

{
  "name": "홍길동",
  "age": 30
}

        ↓

Java Object
 

즉 AI 응답을 다른 애플리케이션 로직에서 사용하기 쉽게 만들 수 있다.


Advisor

LLM 요청과 응답 사이에 공통 기능을 끼워 넣을 수 있다.

Request
   │
   ▼
Advisor
   │
   ▼
LLM
   │
   ▼
Advisor
   │
   ▼
Response
 

이를 이용해 다음과 같은 기능을 구현할 수 있다.

Logging
Memory
RAG
요청 가공
응답 가공
 

Spring AI에서는 반복되는 생성형 AI 패턴을 Advisor라는 확장 메커니즘으로 캡슐화한다.


Embedding과 Vector Store

문장이나 문서의 의미를 Vector로 변환하고 저장할 수 있다.

"Spring AI는 AI 통합 프레임워크다"

            ↓

      Embedding Model

            ↓

[0.12, -0.45, 0.88, ...]
 

이 벡터를 Vector DB에 저장하면 의미적으로 비슷한 문서를 검색할 수 있다.


RAG

RAG는 외부 문서를 검색하여 그 정보를 LLM의 Prompt에 추가하는 방식이다.

사용자 질문
     │
     ▼
Vector DB 검색
     │
     ▼
관련 문서
     │
     ▼
Prompt에 추가
     │
     ▼
    LLM
     │
     ▼
문서 기반 답변
 

이를 이용하면 사내 문서나 서비스 데이터를 기반으로 답변하는 AI를 만들 수 있다.


Chat Memory

기본적으로 LLM 호출은 각각 독립적인 요청이다.

따라서 이전 대화를 기억하려면 애플리케이션이 대화 이력을 관리해야 한다.

Spring AI에서는 이를 위한 ChatMemory 기능을 제공한다.

사용자
"내 이름은 철수야"
      │
      ▼
 ChatMemory
      │
      ▼
사용자
"내 이름이 뭐였지?"
      │
      ▼
이전 대화와 함께 LLM 호출
 

Tool Calling

LLM이 외부 시스템의 기능을 사용하도록 만들 수도 있다.

예를 들어 사용자가 다음과 같이 질문했다고 해보자.

"서울의 현재 날씨 알려줘"
 

LLM 자체에는 실시간 날씨 정보가 없을 수 있다.

이때 Weather API를 Tool로 등록할 수 있다.

사용자

"서울 날씨 알려줘"

      ↓

     LLM

"Weather Tool이 필요하다"

      ↓

Spring AI

      ↓

Weather API

      ↓

현재 날씨

      ↓

     LLM

      ↓

"서울의 현재 기온은 ...입니다."
 

Tool Calling은 AI가 단순히 텍스트를 생성하는 것을 넘어 외부 데이터를 조회하거나 실제 작업을 수행하도록 만드는 중요한 기반이다.


MCP

MCP(Model Context Protocol)는 AI 애플리케이션과 외부 Tool 및 Resource를 연결하기 위한 표준 프로토콜이다.

Spring AI는 MCP Client와 MCP Server를 모두 지원한다.

개념적으로는 다음과 같다.

AI Application
      │
      ▼
  MCP Client
      │
      ▼
  MCP Server
      │
      ├─ Tool
      ├─ Resource
      └─ 외부 시스템
 

이 부분은 이후 별도의 글에서 자세히 살펴볼 예정이다.


결국 Spring AI가 해결하려는 것은 무엇일까?

Spring AI의 핵심을 다시 단순하게 생각해보면 된다.

기업의 기존 Spring 애플리케이션에는 이미 수많은 데이터와 기능이 존재한다.

Database

Service

Repository

REST API

Kafka

Batch

사내 문서
 

그리고 외부에는 AI Model이 존재한다.

GPT

Claude

Gemini

Local LLM
 

Spring AI의 중요한 역할은 이 둘을 연결하는 것이다.

Spring AI의 핵심 설계 철학을 기업 DATA와 기업 API를 AI 모델에 연결하는 것으로 정리한다.

기존 Spring Application

 ┌────────────────────────────┐
 │                            │
 │  Service       Database    │
 │                            │
 │  Repository    REST API    │
 │                            │
 │  사내 문서      업무 시스템   │
 │                            │
 └─────────────┬──────────────┘
               │
               ▼

           Spring AI

               │
               ▼

           AI Model

     GPT / Claude / Gemini
 

즉 기존 서비스를 버리고 AI 전용 애플리케이션을 새로 만드는 것이 아니라, 기존 Spring 생태계 위에 AI 기능을 확장하는 것이 Spring AI의 큰 목적이다.


Spring 개발자 입장에서의 장점

기존 Spring 개발자에게 Spring AI가 특히 유용한 이유는 이미 알고 있는 Spring 개발 방식을 그대로 활용할 수 있기 때문이다.

Spring IoC / DI
Spring Boot
Auto Configuration
Spring Security
Spring Data
Micrometer
MVC / WebFlux
 

AI 관련 컴포넌트 역시 Bean으로 등록하고 DI를 이용할 수 있다.

 
@Service
public class AiService {

    private final ChatClient chatClient;

    public AiService(ChatClient.Builder builder) {
        this.chatClient = builder.build();
    }
}
 

즉 완전히 새로운 개발 생태계를 배우는 것이 아니라 기존 Spring 애플리케이션 안으로 AI 기능을 가져오는 형태다.

기존 Spring 개발 방식

Controller
Service
Repository
DI
Configuration

        +

AI

ChatClient
RAG
Memory
Tool
MCP

        ↓

Spring AI Application
 

Spring Security를 이용한 인증·인가, 기존 도메인 Service와 Repository, 운영 환경과 Observability 등을 AI 기능과 함께 활용할 수 있다는 것도 Spring 기반 AI 개발의 장점이다.


Spring AI의 전체 그림

지금까지 살펴본 내용을 하나의 그림으로 정리하면 다음과 같다.

                        Spring Application

                                │
                                ▼

                            ChatClient
                                │
              ┌─────────────────┼─────────────────┐
              │                 │                 │
              ▼                 ▼                 ▼

           Prompt            Advisor            Tool

              │             Memory / RAG          │
              │                                   │
              └─────────────────┬─────────────────┘
                                │
                                ▼

                            ChatModel
                                │
              ┌─────────────────┼─────────────────┐
              ▼                 ▼                 ▼

            OpenAI          Anthropic           Gemini
              │                 │                 │
              └─────────────────┼─────────────────┘
                                │
                                ▼

                               LLM


                         별도의 데이터 영역

              Document
                  │
                  ▼
           Embedding Model
                  │
                  ▼
             Vector Store
                  │
                  ▼
                 RAG
                  │
                  └──────────→ ChatClient
 

처음 보면 구성 요소가 많아 보이지만 앞으로 하나씩 나누어 보면 어렵지 않다.

가장 먼저 이해해야 할 것은 다음 정도다.

ChatClient
→ AI와 대화하기 위한 고수준 API

ChatModel
→ AI Model을 추상화한 인터페이스

Prompt
→ LLM에 전달하는 요청

Advisor
→ 요청/응답 과정에 기능 추가

Embedding
→ 데이터를 의미 기반 Vector로 변환

Vector Store
→ Vector 저장 및 검색

RAG
→ 외부 지식을 검색해서 Prompt에 추가

Memory
→ 대화 이력 관리

Tool
→ 외부 기능 실행

MCP
→ 외부 Tool/Resource 연결 표준
 

Spring AI와 AI Agent

Spring AI를 공부하다 보면 최종적으로 AI Agent라는 개념으로 이어진다.

기존 LLM 애플리케이션이 단순히 질문에 답하는 구조였다면,

사용자 질문
    ↓
   LLM
    ↓
텍스트 답변
 

Agent는 사용자의 목표를 이해하고 필요한 데이터를 찾거나 Tool을 실행할 수 있다.

예를 들어:

사용자

"내일 비가 오면 회의 장소를 실내로 변경해줘."

              ↓

            Agent

              ↓

      내일 날씨 확인
              │
              ▼
         Weather Tool
              │
              ▼
          비 여부 판단
              │
              ▼
        Calendar Tool
              │
              ▼
        회의 장소 변경
              │
              ▼
          Email Tool
              │
              ▼
       참석자에게 알림
 

즉 AI가 단순한 글쓰기 도구를 넘어 실제 시스템과 연결되어 일을 수행하는 시스템으로 발전하는 것이다.

Spring AI는 이러한 애플리케이션을 만들기 위해 필요한 Model, RAG, Memory, Tool Calling, MCP 등의 기반 기능을 제공한다.


정리

Spring AI는 Spring Framework 기반 애플리케이션에서 생성형 AI 기능을 개발하기 위한 프레임워크다.

단순히 OpenAI API를 호출하는 라이브러리가 아니라 다양한 AI Provider와 AI 애플리케이션 패턴을 Spring 방식으로 사용할 수 있도록 추상화한다.

Spring AI

├─ Model
│   └─ 다양한 AI Model 추상화
│
├─ ChatClient
│   └─ LLM 호출을 위한 Fluent API
│
├─ Prompt
│   └─ LLM 입력 관리
│
├─ Structured Output
│   └─ AI 응답 구조화
│
├─ Advisor
│   └─ 요청/응답 기능 확장
│
├─ Embedding / Vector Store
│   └─ 의미 기반 데이터 검색
│
├─ RAG
│   └─ 외부 지식 활용
│
├─ Chat Memory
│   └─ 대화 기억
│
├─ Tool Calling
│   └─ 외부 기능 실행
│
└─ MCP
    └─ 외부 Tool과 Resource 연결
 

그리고 이 모든 기능의 중심에는 다음 목적이 있다.

기업 Data
기업 API
기존 업무 시스템

      │
      ▼

   Spring AI

      │
      ▼

   AI Model
 

한 문장으로 정리하면 다음과 같다.

Spring AI는 기존 Spring 애플리케이션의 데이터와 기능을 AI 모델과 연결하여 생성형 AI 애플리케이션을 만들 수 있도록 도와주는 Spring 기반 AI 프레임워크다.

Spring이 데이터베이스, 웹, 보안 등의 기술을 Spring 방식으로 추상화해왔던 것처럼, Spring AI는 그 방식을 AI 개발 영역까지 확장한 것이라고 이해하면 된다.

반응형

'개발 > Spring' 카테고리의 다른 글

[Spring] Swagger UI와 OpenAPI 문서화 정리  (0) 2026.07.31
[Spring] Spring Boot JPA 동작 원리와 CRUD 정리  (0) 2026.07.31
[Spring] MVC 패턴과 Spring MVC 동작 원리 정리  (0) 2026.07.28
[Spring] DTO는 무엇일까?  (0) 2025.09.08
[Spring] Spring Boot란?  (0) 2025.07.07
'개발/Spring' 카테고리의 다른 글
  • [Spring] Swagger UI와 OpenAPI 문서화 정리
  • [Spring] Spring Boot JPA 동작 원리와 CRUD 정리
  • [Spring] MVC 패턴과 Spring MVC 동작 원리 정리
  • [Spring] DTO는 무엇일까?
danieLee
danieLee
개발일지
  • danieLee
    Code log
    danieLee
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • 개발 (76)
        • C++ (3)
        • java (6)
        • JavaScript (9)
        • python (0)
        • AWS (2)
        • Docker (6)
        • git (0)
        • 백엔드 (4)
        • Spring (7)
        • Django (2)
        • AI (3)
        • 코테 준비 (13)
        • 알고리즘 (6)
        • SKALA 4기 (13)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    코테
    JavaScript
    프론트
    파이썬
    서버
    개념
    대학생
    개발
    개발자
    API
    백엔드
    프로그래머스
    vue.js
    js
    java
    4기
    spring
    skala
    Ai
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
danieLee
[Spring AI] Spring AI란? 개념부터 전체 구조까지 이해하기
상단으로

티스토리툴바