한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.
AI라고 하면 일반적 사용자들은 ChatGPT, Claude, Gemini 같은 챗봇 형태의 서비스를 생각할텐데, 개발자 입장에서는 좀 더 다양한 층위를 보게 된다. 그런 서비스들은 가장 최신의 모델(훈련된 AI 버전)을 쓰는데 이런 걸 프론티어 모델 혹은 SOTA (State-of-the-Art)라고 한다. SOTA는 말 그대로 '현재 기술 수준에서 가장 앞서있는 모델'을 의미하고, 프론티어 모델은 그 중에서도 성능의 최전선에 있는 것들을 지칭한다. 일반적으로 이것들은 좀 더 호출 당 단가가 비싸서 실제 서비스에 부차적으로 붙이기엔 부담스럽다. 찾아보면 이런 모델들의 열화 버전(mini, nano…) 등이 있는데 이 친구들은 경량화되어 있기에 속도도 빠르고 호출 당 비용도 적지만 자원을 덜 쓰는 만큼 내가 원하는 대로 작동을 안할 확률이 높다.
이런 저렴이 모델을 쓸 경우 대표적인 문제가 환각(Hallucination), Knowledge Cutoff, GIGO 같은 것들이다. 환각은 LLM이 실제로 존재하지 않는 정보를 마치 사실인 것처럼 생성하는 현상이다. 없는 논문을 만들어내거나, 존재하지 않는 API 메서드를 자신있게 알려주는 식이다. Knowledge Cutoff는 모델이 학습된 시점까지의 데이터만 알고 있기 때문에 그 이후의 정보에 대해서는 답변할 수 없는 한계를 말한다. GIGO는 'Garbage In, Garbage Out'의 약자로 입력이 부실하면 출력도 부실하다는 컴퓨팅/데이터 기반 솔루션에 있어 오래된 원칙인데 LLM에서도 그대로 적용된다. 프롬프트를 대충 넣으면 결과도 대충 나온다는 뜻이다.
이런 것들을 최소화하기 위해 LLM에 이것저것 프로그래밍적 술수(?)를 쓰게 되는데 이런 걸 AI 에이전트 코딩이라고 한다. 에이전트 코딩이란 LLM이 단순히 텍스트를 생성하는 것을 넘어서, 외부 도구를 호출하고, 검색을 수행하고, 코드를 실행하는 등 자율적으로 작업을 수행하도록 프로그래밍하는 것을 말한다. 가장 유명하면서 여러 플랫폼/언어에서 쓰이고 있는 LangChain 프레임워크다. 그런데 이게 명목상으로는 JS/Java/Python을 지원하지만 실질적으로는 Python 중심이다 보니 이제 자바/스프링 공화국인 한국에서는 외부 모듈이나 api 서버로 구현하지 않는 한 조금 뭔가 머시기 했던게 사실이다. 그러다 작년(2025년) 즈음해서 Spring AI가 릴리즈 되었고, ChatModel/ChatClient 등을 활용해서 기존에 스프링 컨테이너를 활용한 의존성 주입 및 스프링 부트의 스타터를 통한 편한 패키지/의존성 관리가 가능해졌다.
시중에 LangChain 관련 책들은 많이 존재하는데 Spring AI를 전문적으로 다루는 교재가 없었던게 사실이다. 그러다가 만나게 된게 이 '이것이 Spring AI다 (개정판)'이다. 이게 2025년에 나오고 바로 2026년에 개정판으로 한 번 더 나온 버전이다.

책의 구성
책의 구성은 상당히 튼실하다. 기본적인 Spring AI의 설정과 주요 인터페이스/클래스들부터 프롬프트 엔지니어링을 지나 멀티 모달(이미지, 음성)을 다루며 최종적으로 RAG, Tool Calling/MCP, 에이전트 오케스트레이션까지 나아간다.
프롬프트 엔지니어링(Prompt Engineering) : LLM에게 원하는 결과를 얻기 위해 입력(프롬프트)을 설계하고 최적화하는 기술이다. 단순히 질문을 잘 하는 것을 넘어서, 시스템 프롬프트 설정, few-shot 예시 제공, 출력 형식 지정 등 LLM의 응답 품질을 제어하기 위한 체계적인 접근법 전체를 포괄한다.
멀티 모달(Multimodal) : 텍스트뿐만 아니라 이미지, 음성, 영상 등 여러 형태의 데이터를 동시에 처리할 수 있는 AI의 능력을 말한다. 예를 들어 이미지를 보고 설명하거나, 음성을 텍스트로 변환하거나, 텍스트로부터 이미지를 생성하는 것이 모두 멀티 모달의 영역이다.
RAG(Retrieval-Augmented Generation) : LLM의 가장 큰 약점인 환각과 Knowledge Cutoff를 보완하기 위한 기법이다. 사용자의 질문이 들어오면 먼저 외부 데이터소스(문서, DB 등)에서 관련 정보를 검색(Retrieval)한 후, 그 정보를 LLM의 컨텍스트에 함께 넣어 응답을 생성(Generation)하는 방식이다. 이를 위해 문서를 수치 벡터로 변환하는 임베딩(Embedding) 과정과, 그 벡터들을 저장하고 유사도 기반으로 검색할 수 있는 벡터 스토어(Vector Store)가 필요하다. 가르치다보면 이미지 생성이나 음성 인식 같은 것은 곧잘 하지만 RAG, 임베딩, 벡터 파트에서 많이 막히는 편인데 이 책에서 그쪽에 대한 설명이 상세하게 되어 있어서 좋았다.
Tool Calling : LLM이 직접 수행할 수 없는 작업(실시간 데이터 조회, 계산, 외부 API 호출 등)을 외부 함수/도구를 호출해서 처리하는 메커니즘이다. LLM이 "이 작업은 이 도구로 처리해야겠다"고 판단하면 함수 호출 형태로 요청하고, 그 결과를 받아서 최종 응답에 반영하는 구조다.
MCP(Model Context Protocol) : LLM이 외부 도구나 데이터소스에 접근할 때의 표준화된 인터페이스를 정의한다. Tool Calling이 개별 함수 호출이라면, MCP는 그것을 표준화된 규격으로 묶어서 다양한 도구 제공자와 LLM 사이의 상호운용성을 확보하려는 시도다.
에이전트 오케스트레이션(Agent Orchestration) : 여러 AI 에이전트를 조합하여 복잡한 작업을 수행하도록 관리하는 것이다. 하나의 에이전트가 계획을 세우고, 다른 에이전트가 실행하고, 또 다른 에이전트가 결과를 검증하는 식으로 역할을 분담시키는 패턴이다. LangChain에서는 이런 구조를 LangGraph 등으로 구현하는데, Spring AI에서도 이제 자체적으로 이런 오케스트레이션이 가능해진 것이다.

챗봇의 기본부터 심화까지의 내용을 상세히 실습해볼 수 있다.
실습과 코드
작년(2025년) 초만 하더라도 이정도를 구현하기 위해선 어쩔 수 없이 LangChain4J를 쓰거나 별도의 파이썬 모듈로 LangChain을 구현해야했는데 이제는 Spring 생태계의 통합된 모듈들을 활용해서 프로바이더를 지정하고, 설정 파일을 활용해 문서화하며 관리할 수 있다는게 상당히 놀라웠다.
내용 자체가 LangChain에서 볼 수 있던 접근법과 상당히 유사하긴 하였으나 어쨌든 자바는 자바고, 스프링은 스프링이라서 그 특색을 따라가는 것이 있는데 거기까지 하나하나 설명하기엔 너무나 방대하고 전문적 영역인지라 과감히 예제 코드 중심으로 '작동 원리'를 위주로 설명한 것이 좋았다.
이미 구현된 구조를 타임리프로 구현해놓은 화면에서 주로 실습하게 되는데 굳이 따지자면 최신의 Spring 문법을 따라가고 있진 않아서 약간 고치고 싶은 (@Autowired라든가…) 부분이 있긴한데 오히려 레거시를 관리중에 Spring AI를 통해 챗봇이나 지식 기반 시스템을 만들어야하는 상황이라면 더 유리한 부분이 있겠다 싶었다. 실습 환경이 일단은 VSCode인 것도 보면 확실히 어느정도 만들던 사람들을 타겟팅한다는게 느껴졌다. (자바 환경변수, OpenJDK 등의 문제들을 가능한 피하기 위해서 요새는 초심자 대상이라면 IntelliJ를 선택하는 교재도 많은지라…)
또한 OpenAI의 GPT 계열의 모델을 사용하는 것 뿐만 아니라 부록으로 Gemini, 로컬 모델(Llama, DeepSeek) 등의 사용방법을 소개하고 있어 벤더 의존성을 줄인 것이 좋았다. 책에는 없는 부분이지만 개인적으로는 Groq, NIM, OpenRouter 같은 여러 모델을 사용해볼 수 있는 프리티어 플랫폼을 연동하는 파트를 따로 연습해볼 생각이다.

예제코드가 잘 제공되어 있고 꼭 VSCode로 할 필요는 없다. (본인이 편한 IDE를 쓰면 된다.)
추천 독자
자바에서 LangChain을 써보고 싶었으나 대안을 찾기 어려웠던 사람
기존에는 LangChain4J라는 자바 포팅 프로젝트가 있었지만, 스프링 생태계와의 통합이 매끄럽지 않았고 커뮤니티 규모도 파이썬 쪽에 비해 현저히 작았다. Spring AI는 스프링 프레임워크의 철학(DI, 자동 설정, 스타터)을 그대로 따르기 때문에 기존 스프링 개발자라면 러닝 커브가 훨씬 낮다.
자프링(자바+스프링) 환경에서 AI 에이전트 플랫폼을 개발해보고 싶은 사람
이미 운영 중인 스프링 부트 애플리케이션에 AI 기능을 추가해야 하는 상황이라면, 별도의 파이썬 서버를 띄우는 것보다 같은 생태계 안에서 해결할 수 있다는 것은 운영 복잡도 측면에서 상당한 이점이다.
프롬프트 엔지니어링, 멀티모달, MCP/Tool Calling 등 여러 AI 에이
전트 요소에 대한 전반적 이해가 필요한 사람.
각 개념이 코드 레벨에서 어떻게 구현되는지를 보면서 이해할 수 있기 때문에, 이론만으로는 와닿지 않던 개념들이 구체적으로 다가온다.
#한빛미디어 #나는리뷰어다 #이것이SpringAI다 #SpringAI #스프링AI
#Java #Spring #SpringBoot #자바 #스프링부트 #백엔드개발
#LLM #생성형AI #AI에이전트 #프롬프트엔지니어링 #RAG #MCP #ToolCalling
#에이전트오케스트레이션 #멀티모달 #벡터스토어 #임베딩 #LangChain
#기술서리뷰 #개발서적 #개발자추천도서