▪ 생성형 AI를 Spring으로 구현하는 가장 실전적인 Spring AI 입문서 ▪ RAG, Tool Calling, MCP Server, 멀티 에이전트까지 직접 구현하며 배우는 단계별 실습 ▪ 에이전트 개발·멀티 에이전트 협업 챕터 추가, 실습 소스 및 특별 영상 제공 ▪ 텍스트 및 음성 대화, 멀티모달 비전, 이미지 생성, 대화 기억, 구조화된 출력, RAG, Tool Calling, 싱글·멀티 에이전트 오케스트레이션, MCP Server, Spring AI 실습 가이드
생성형 AI는 더 이상 별도의 기능이 아니라 애플리케이션 구조 안에 통합되어야 할 핵심 요소가 되었다. 이 책은 AI 애플리케이션의 개념과 모델 분류를 이해하는 단계에서 출발해 Spring AI 개발 환경 구축과 프로젝트 생성까지 차근차근 안내한다. Chat API, 프롬프트 엔지니어링, 구조화된 출력을 시작으로 음성·이미지·멀티모달 처리, RAG, Tool Calling, MCP Server 구축까지 실제 AI 서비스에 필요한 기술을 하나씩 완성해 나간다. Advisor를 활용한 응답 전·후처리와 대화 기억 관리로 응답 품질을 안정적으로 유지하고, 임베딩과 벡터 저장소 기반의 문서 검색 흐름을 통해 실제 서비스에 적용할 수 있는 설계 감각을 쌓아간다. 이번 개정판에서는 에이전트 관련 챕터가 새롭게 추가되었다. 스스로 판단하고 행동하는 에이전트 구현부터 오케스트레이터·병렬 실행·자기 교정을 갖춘 멀티 에이전트 협업 구조까지 단계적으로 확장해 나간다. 관광지·맛집·숙소 추천, 유튜브 검색 에이전트를 직접 완성하며 에이전트 시스템의 전체 흐름을 경험할 수 있다.
저자소개
저자
신용권
25년 동안 시스템 제어 및 애플리케이션 개발자로 활동한 베테랑 개발자이자, IT 전문 교육자이기도 하다. 메카트로닉스를 전공했으며, 삼성항공 시스템 설계 파트에서 하드웨어 제어용 소프트웨어 개발을 담당했다. 유수한 교육기관에서 재직자 및 개발자 양성 교육을 진행해 왔으며, 현재는 한국인공지능·소프트웨어산업협회 AI인재개발본부에서 교수로 근무하고 있다.
Chapter 01 Spring AI 시작 1.1 AI 응용 서비스 1.2 AI 모델 분류 1.3 Spring AI 소개 1.4 Spring AI 개발 환경 구축 1.5 예제 소스 설치 1.6 Spring AI 프로젝트 생성 1.7 Spring AI 학습을 위한 UI 구성
Chapter 02 텍스트 대화 2.1 Chat Model API 2.2 Chat Model API 사용하기 2.3 ChatModel 스트리밍 응답 2.4 ChatClient 사용하기
Chapter 03 프롬프트 엔지니어링 3.1 프롬프트 템플릿 3.2 복수 메시지 추가 3.3 디폴트 메시지와 옵션 3.4 프롬프트 엔지니어링 3.5 제로-샷 프롬프트 3.6 퓨-샷 프롬프트 3.7 역할 부여 프롬프트 3.8 스텝-백 프롬프트 3.9 생각의 사슬 프롬프트 3.10 자기 일관성
Chapter 04 구조화된 출력 4.1 구조화된 출력 변환기 4.2 List으로 변환 (ListOutputConverter) 4.3 T로 변환 (BeanOutputConverter) 4.4 List로 변환 (BeanOutputConverter) 4.5 Map으로 변환 (MapOutputConverter) 4.6 시스템 메시지와 함께 사용
Chapter 05 음성 대화 5.1 음성 변환 기술 5.2 음성 변환해 보기 5.3 입력 음성 준비와 스트리밍 음성 재생 5.4 텍스트도 같이 출력되는 음성 대화 5.5 순수 음성 대화 구현 (방법1) 5.6 순수 음성 대화 구현 (방법2)
Chapter 06 비전 및 이미지 생성 6.1 비전과 멀티모달 LLM 6.2 Spring AI 멀티모달 지원 6.3 객체 탐지 및 상태 분석 6.4 비디오 프레임 분석 6.5 이미지 생성형 모델 6.6 OpenAI 이미지 생성형 모델 6.7 Spring AI Image Model API 6.8 이미지 생성 6.9 이미지 편집
Chapter 07 모델 전·후처리 어드바이저 7.1 Advisor 소개 7.2 Spring AI Advisor API 7.3 Advisor 구현 7.4 Advisor 적용 7.5 공유 데이터 이용 7.6 내장 Advisor 7.7 로깅 Advisor 7.8 세이프가드 Advisor
Chapter 08 임베딩과 벡터 저장소 8.1 임베딩이란 8.2 벡터 저장소 설치 8.3 Spring AI Embedding Model API 8.4 OpenAI 임베딩 모델 8.5 텍스트 임베딩 8.6 VectorStore 인터페이스 8.7 Document 저장 8.8 Document 검색 8.9 Document 삭제 8.10 이미지 임베딩과 얼굴 인식
Chapter 09 대화 기억 9.1 대화 기억과 기억 저장소 9.2 대화 기억을 위한 Advisor 9.3 In-Memory 대화 기억 9.4 VectorStore 대화 기억 9.5 RDBMS 대화 기억 9.6 Cassandra 대화 기억
Chapter 10 문서 검색 기반 답변, RAG 10.1 RAG 이해하기 10.2 지식 기반 저장소와 ETL 10.3 ETL: Text, PDF, Word 파일 10.4 ETL: HTML, JSON 10.5 RAG: QuestionAnswerAdvisor 10.6 RAG: RetrievalAugmentationAdvisor 10.7 RAG: CompressionQueryTransformer 모듈 10.8 RAG: RewriteQueryTransformer 모듈 10.9 RAG: TranslationQueryTransformer 모듈 10.10 RAG: MultiQueryExpander 모듈
Chapter 11 도구 호출 11.1 도구 호출 11.2 도구 정의하기 11.3 프롬프트에 도구 정보 포함 11.4 추가 데이터 제공 11.5 도구에서 바로 응답 11.6 도구 예외 처리 11.7 이미지 분석 후 조치 도구 11.8 파일 관리 도구 11.9 인터넷 검색 도구
Chapter 12 MCP, 외부 도구 12.1 MCP란 12.2 MCP 통신 방식 12.3 STDIO 통신 방식 MCP Server 12.4 WebMVC 기반 SSE 통신 방식 MCP Server 12.5 WebFlux 기반 SSE 통신 방식 MCP Server
Chapter 13 에이전트 개발 13.1 에이전트 개요 13.2 에이전트 기본 구현 13.3 Advisor를 이용한 판단 흐름 제어 13.4 다양한 Tool로 행동 범위 확장 13.5 대화 맥락을 유지하는 에이전트 13.6 여행 도메인 에이전트 13.7 관광지 추천 에이전트 13.8 맛집 추천 에이전트 13.9 숙소 추천 에이전트 13.10 유튜브 검색 에이전트 13.11 싱글 에이전트 한계
Chapter 14멀티 에이전트로 협업하기 14.1 멀티 에이전트가 필요한 이유 14.2 오케스트레이터의 등장 14.3 오케스트레이터 구현 14.4 에이전트간의 정보 공유 14.5 SSE 메시지를 이용한 시각화 14.6 에이전트를 병렬로 실행하기 14.7 스스로 교정하는 지능형 에이전트 14.8 통제된 오케스트레이션 14.9 멀티 LLM 이용하기 14.10 멀티 에이전트 프로젝트 실행
부록 A.1 OpenAI API key 생성 및 Credits 결제 A.2 SerpApi API Key 발급 A.3 Docker Desktop 설치 A.4 Google Vertex AI Gemini 모델 사용 A.5 로컬에서 Meta Llama 모델 사용 A.6 로컬에서 DeepSeek R1 모델 사용
찾아보기
출판사리뷰
▪ [개정판] 에이전트 개발 및 멀티 에이전트 협업 챕터 전격 추가! ▪ Spring 기반 AI 서비스 설계부터 실전 아키텍처 구축까지 한 권에 ▪ OpenAI·Gemini·Llama·DeepSeek 등 주요 LLM 환경 연동
▶ 기초 완성 | Chat API부터 멀티모달까지, Spring AI의 핵심 기본기를 단계별로 완성한다! 텍스트 대화와 다양한 프롬프트 기법(제로샷·퓨샷·CoT 등)으로 시작해 구조화된 출력 변환, 음성 대화, 이미지 생성, 멀티모달 비전 처리까지 최신 AI 기술을 폭넓게 다룬다. 각 챕터마다 실습용 UI와 예제 소스를 제공해 개념과 구현을 동시에 익힌다.
▶ 고급 기능 | Advisor부터 MCP까지, 실전 AI 서비스에 필요한 고급 기능을 모두 담았다! 모델 전·후처리를 제어하는 Advisor API, 벡터 저장소 기반 임베딩, 다양한 저장소를 지원하는 대화 기억, PDF·HTML·JSON 등 다양한 문서 형식을 처리하는 RAG 파이프라인까지 체계적으로 학습한다. Tool Calling과 MCP 기반 외부 시스템 연동은 실제 서비스 연동 흐름을 직접 구현한다.
▶ 에이전트 개발 | 싱글 에이전트부터 실전 프로젝트까지, 스스로 판단하는 AI를 직접 만든다! (개정판 신규) 에이전트의 기본 구조부터 Advisor를 활용한 판단 흐름 제어, Tool을 통한 행동 범위 확장, 대화 맥락 유지까지 단계적으로 쌓아간다. 관광지·맛집·숙소 추천, 유튜브 검색 에이전트를 직접 완성하며 싱글 에이전트의 가능성과 한계를 함께 체험한다.
▶ 멀티 에이전트 | 오케스트레이터부터 멀티 LLM까지, 협업 AI 시스템의 모든 것을 다룬다! (개정판 신규) 싱글 에이전트의 한계를 넘어 여러 에이전트가 역할을 분담하고 협력하는 멀티 에이전트 아키텍처를 실습한다. 오케스트레이터 구현, 에이전트 간 정보 공유, SSE 시각화, 병렬 실행, 스스로 교정하는 지능형 에이전트, 멀티 LLM 활용까지 실무에서 바로 적용할 수 있는 고급 패턴을 직접 구현한다.
▶ 실무 적용 | Java 생태계에서 AI 전환을 꿈꾸는 개발자를 위한 완벽한 안내서! Spring Boot 백엔드 개발자로서 LLM 서비스 통합을 고민하는 분, 에이전트·멀티 에이전트 기반 AI 애플리케이션 개발을 기획 중인 분, 음성·이미지·멀티모달 서비스 구축을 원하는 분 모두에게 실질적인 도움이 된다. 부록에서는 OpenAI, Google Vertex AI Gemini, Meta Llama, DeepSeek R1 등 다양한 모델 환경 구축 방법까지 안내해 로컬 환경부터 클라우드까지 폭넓은 실습이 가능하다. 이 책을 마치면 단순한 API 호출을 넘어, 실제 서비스에 투입 가능한 AI 애플리케이션을 Spring 생태계 안에서 스스로 설계하고 구현할 수 있게 된다.
SpringCamp 2025에서 Spring AI 관련 발표를 듣고 관심이 생겨 서평 도서로 선택했습니다. 단순히 읽는 데 그치지 않고, 책의 내용을 토대로 직접 사이드 프로젝트를 하나 만들어본 뒤의 후기입니다.
이 책의 가장 큰 미덕은, AI를 특별한 무언가가 아니라 Spring 생태계 안의 하나의 계층으로 자연스럽게 녹여내는 시선에 있다고 느꼈습니다. 새로운 기술을 접할 때 흔히 빠지기 쉬운 "이것이 모든 걸 바꿀 것이다"라는 흥분 대신, 기존에 우리가 알고 있던 추상화와 설계 원칙 위에 AI를 얹는 방법을 차분하게 보여줍니다.
덕분에 책을 덮고 나서 남는 건 특정 API의 사용법이 아니라, "내 애플리케이션에서 AI가 어디쯤에 있어야 하는가"라는 감각이었습니다. 도구의 위치를 정하는 일이 도구의 사용법을 아는 것보다 먼저라는 걸, 이 책을 통해 다시 한번 느꼈습니다.
Spring을 이미 알고 있는 개발자가 AI와의 접점을 처음 만들어보고 싶다면, 좋은 출발점이 되리라 생각합니다.
배경 나는 2025년도부터 개발자들 사이에서 Spring AI에 대한 관심도가 부쩍 높아진 것을 체감했다. 아무것도 모르는 상태에서 처음 든 생각은 '파이썬이 AI 생태계를 주도하는 상황에서 Spring이 여기까지 넘본다고?' 였다. 찾아보니 대부분 개발된 모델/에이전트를 서비스 내로 포팅하는 느낌의 기능들을 가지고 있었고, 그제서야 그들의 선택을 이해할 수 있었다. 그렇게 다소 막연하게만 알고 있던 상황이었는데, 이번에 책을 받아 읽을 기회가 생겨 잠깐 훑어보니 생각보다 더 많은 기능을 지원하고 있었다.
들어가기 앞서, 내가 이해한 Spring AI의 역할을 Python을 활용한 모델 개선과 구분지어 비유를 통해 설명해보고자 한다. AI를 활용하는 단계를 크게 세 단계로 나누어 비유하면 ①수능 N등급의 학생에게 ②실무를 가르치고 ③성과를 내도록 만드는 과정이라고 생각한다. Python에서의 모델링은 더 높은 수능 등급을 가진 학생 ─ 기초 역량이 더 높은 주체로 만드는 것이다. 그러나 그래봤자 수능이고, 고졸로 취직하든 대학에서 전공을 가지든 필요한 지식을 주입해야 실무자가 될 수 있다. 또 필요한 지식을 가지고 있어도, 업무의 목표나 고객의 요구사항이 분명하지 않으면 원하는 결과물을 얻지 못한다. 이러한 맥락에서 Python은 1번과 2번, Spring은 2번과 3번 과정에 집중한다. hugging face, llama 등 오픈 소스로 모델을 활용할 수 있는 길이 열려있는 상황이 앞으로도 지속된다면, Spring AI를 잘 활용하는 것만으로도 충분히 좋은 결과를 만들어낼 수 있으리라 생각한다.
전체 아키텍처
이 책에서는 AI를 사용하는 서비스의 개략적인 구조를 제시하는데, Web Application 계층을 포함한 중간 계층의 상호작용 양상이 복잡해지는 것을 볼 수 있다. 이러한 경향성은 여기서 내부/외부 도구라고 명명되었지만, 넓게 보면 많은 수의 마이크로서비스가 필수적인 환경으로 변화하고 있다는 느낌을 받았다. 일부 도구들은 필요에 따라 자체적으로 만들어 사용되지만, 대부분의 경우에는 벤더에서 제공하는 것을 가져다쓰고, 이런 저런 상황들을 고려하다보면 결국 웹 통신 계층에서 통합하는 것이 가장 깔끔하기 때문일지도 모른다. 더불어 소규모의 목적 지향적인 도구 또는 에이전트들을 조합하는 것이, 하나의 큰 에이전트를 학습시키는 것보다 더 효율적이라는 측면도 있을 것이다. 이러한 생각의 흐름에 따라 Spring AI에서는 이러한 흐름을 어떻게 통합하고 있을지 궁금해졌다.
Chapter 11. 도구 호출
특별한 기능이 있는 건 아니다. 프레임워크로서 쉽고 빠르게 시작할 수 있는 구조를 제공하는 것은 예외 없이 Spring AI에서도 이어진다. `@Tool` 어노테이션은 메서드를 도구로 정의하고, `@ToolParam` 어노테이션은 그 도구를 사용하기 위한 파라미터, ToolContext는 Map 타입의 객체로 민감한 데이터 등 추가 데이터를 실어보내기 위해 인자로 활용한다. 경우에 따라서는 5번 과정을 거치지 않고, 바로 6번으로 향하도록 호출 흐름을 수정할 수도 있다. Chapter 12. MCP, 외부 도구 지금까지 다룬 내용은 내부 도구 - 우리가 코드 수준에서 직접 정의한 도구에 대한 것이었다. 따라서, 외부라고 하면 벤더 사에서 제공하거나 오픈소스로 공개된 MCP 서버를 의미하는 것이 일반적이다. 이것도 본질적으로는 내부 도구와 큰 차이가 없다. 기존의 아키텍처의 관점으로 보았을 때에는 특별한 업무를 담당하는 마이크로서비스 중 하나일 뿐이다. 물론 내부 도구와 비교하면 통신 방식과 규모에 있어 차이가 생긴다. 크게 표준 입출력(STDIO) 방식과 SSE 방식으로 나뉘는데, 현재 운영중인 서비스의 성숙도 또는 의존 MCP 서버의 규모에 따라 자연스럽게 전자에서 후자로 넘어가는 것을 고려해보면 좋을 것 같다.
Chapter 13. 에이전트 개발 이 책의 내용에 의하면 에이전트를 크게 3가지 - 사용자의 지시(Prompt), 에이전트의 기억 및 맥락(Advisor), 그리고 활용 가능한 도구(Tool)로 분해하여 보고 있다. 앞서 개요에서도 명시했듯이, Spring AI는 주어진 모델을 잘 튜닝하는 것에 초점을 두고 있다. 따라서, 여기서의 `개발`은 각 에이전트에게 부여된 목표를 위해 사전에 지시를 내리고, 에이전트가 그 지시를 잘 기억하는지, 그리고 맥락에 따라 적절한 도구를 활용할 수 있는지가 성능 평가 지표가 될 것이다.
이러한 작업을 흔히 `프롬프트 엔지니어링`이라 부르는데, AI의 활용도가 점차 성숙해짐에 따라 성능을 얻기 위한 전형적인 방법들이 많이 연구되었으나, 하나의 에이전트로는 원하는 결과를 안정적으로 얻는 것이 어려운 것이 현실이다. 애초에 자연어가 규약만을 서술하기 위해 고안된 것도 아니고, 심지어 우리의 요구사항 자체도 자연어로 쓰여질 때 의미가 모호해지기 때문이다. 또한 아무리 엄밀하게 지시한다고 한들, 결국 에이전트가 기억해야 하는 맥락은 요구사항이 추가됨에 따라 지수적으로 상승할 것이며, 그에 따라 응답 속도나 컴퓨팅 자원에서 손해를 보게 될테니, 그냥 일찌감치 싱글 에이전트의 한계를 인지하는 편이 낫다.
Chapter 14. 멀티 에이전트로 협업하기 개인적으로 AI를 활용한 서비스를 고안할 때 가장 재미있는 부분이 아닌가 싶다. 오케스트레이터를 활용해서 다양한 에이전트 간의 상호작용을 거치며 응답을 생성하는 과정이다. 개인적으로는 멀티 에이전트를 잘 사용하려면 응답은 잘 분해하고 출력은 적절히 제한시켜야 하며, 응답을 생성하는 것보다 잘 평가하다고 생각하는 입장이다. LLM은 태생적으로 할루시네이션을 발생시킬 수 밖에 없는데, UX의 관점에서 이런 무가치한 답변을 그대로 내보내는 순간 고객의 신뢰도가 급감할 것이기 때문이다. 물론 서비스의 성격에 따라 예능적인 요소를 갖는 경우에는 이러한 부담이 덜하겠지만, '이 답변 잘못된 거 아니야?'라는 의심이 커지다보면, 고객 입장에서는 서비스 이용의 피로도가 자연스레 높아질 수 밖에 없다.
예를 들어, 지도 앱에서 '이 근처에 맛집은 어디야?'라고 물어본다면 에이전트는 일차적으로 이 질문이 단순 장소 검색이 아니라는 것을 인지해야 한다. 다음에는 `근처`, `맛집`이라는 키워드에 착안하여 이를 '반경 1km 이내 맛집 위치'로 바꿀 수 있어야 한다. 다음에는 그 질문을 사용자의 현재 위치 파악, 지리적 정보 기반으로 설계된 데이터베이스에 음식점 질의, 맛집 별점 및 후기 정보 평가로 작업을 분해할 수 있어야 한다. 마지막 단계에서 `맛집`이라는 매우 주관적인 키워드를 어떻게 해석할 지가 관건이 되며, 보통 이러한 하나의 관심사가 하나의 MCP 서버로서 관리된다. 리뷰 신뢰도를 AI로 평가하여 필터링하고 맛집은 단순히 별점 순으로 정의한다든지, 또는 고객을 프로파일링하고 유사도 기반 추천 알고리즘을 활용하는 등의 다양한 방법이 가능하다.
하지만 앞서 `평가`를 강조한 것처럼, 피드백 루프가 없는 AI 앱은 실속없는 수다쟁이가 되버리기 쉽다. 가장 좋은 것은 짧은 피드백 루프 - 즉, 검색 즉시 고객에게 피드백을 받는 것이지만, 사용자를 피곤하게 만든다는 점에서 바람직하지만은 않다. 결국 그 사람이 실제로 방문하기 위해 길찾기를 했는지, 지리적 정보로 실제 이동했는지, 다음에 또 검색을 했는지 등의 정보를 토대로 이전 에이전트의 응답이 적절했는지에 대한 사후 평가도 필요하다는 생각이다. 그리고 평가가 되었더라도 출력이 장황하면, 이것을 다음의 개선된 응답을 위한 데이터로 활용하기가 어렵다. 따라서, 응답에 사용된 하위 에이전트들의 응답을 제한시켜 표준화된 파라미터 A, B, C로 정의하고, 그에 대한 평가 D를 기록해두는 식의 방향성을 갖고 다음에는 더 나은 응답이 나올 수 있는 루프를 설계할 필요가 있다고 생각한다.
후기: 새로운 시대 Spring은 현재 정부 표준이라는 점에서 대한민국 웹 개발 시장에서 경쟁력이 있는 프레임워크이다. 23년도부터는 기존 7급만 뽑던 전산 데이터직이 9급 공무원까지 확장되었으며, 이러한 경향에 따라 향후 Spring AI가 국가 표준으로 자리잡을 수도 있다. 사용자 친화적이라는 관점에서 LLM은 앞으로 고객과 맞닿은 영역에서 필수 불가결한 존재가 될 것이며, 모든 B2C 사업에 고부가가치를 창출하기 위한 핵심 아이템으로 자리잡을 것이다. Spring AI는 앞으로 더 널리 활용될 것이라 생각하며, 이러한 관점에서 책이 제공해주는 소스 코드를 기반으로 컨셉과 실제 활용 사례를 빠르게 확인해볼 수 있어 새롭게 접하는 이들을 위한 좋은 시작점이 되겠다고 느꼈다.
연간 수십에서 수백 개에 이르는 신규 플랫폼과 프레임워크 그리고 개발 툴들이 등장하고 사라지고 선택받는다. 그중에서 선택받는 특히나 오랜 기간 사랑받아온 개발 프레임워크들은 구현의 편의성 뿐만 아니라, 구현 이후에 가장 중요한 유지 보수에 있어서 유의성을 다분히 가지고 있을 가능성이 크다.
필자가 이번에 리뷰하기로 한 이것이 spring AI도 그런 맥락에서는 정말로 훌륭한 기술이다. 왜냐하면 방대하며 오랜 역사를 갖춘 spring 프레임워크에 ai 기술을 녹여냈기 때문이다. (어찌 보면 당연한 수순이었을지 모른다.)
익숙하다는 것은 어찌 보면 진보적인 입장에서 보면 후퇴되는 것일 수 있지만, 반대의 의미에서는 그만큼 입증되고 검증되었음을 의미할 수 있다. 그런 면에서 spring 프레임워크에 ai를 녹여냈다는 것은 훌륭한 접근이라 할 수 있다.
【책 내용 요약】
이 책은 다음과 같이 구성되어 있다.
Spring을 이용한 AI 기술 접목 방법 (디펜던시 설치, 모델 설정, 대화형 구현 방법, api 설계 등)
단, flux에 대해서 어느 정도 지식을 갖추고 있으면 훨씬 이해하기 쉬우므로 참고해두자
프롬프트 엔지니어링 + RAG 구성 방법
LLM 메모리 구성 방법, Spring Advisor 사용 방법 등
LLM 사용에 필요한 기본적인 + 심화된 지식 내용
Spring 프레임워크에 대해서 어느 정도 배경지식이 있는 사람이라면 위 책을 통해 Sprign AI를 학습하기에 큰 어려움이 없을 것이란 생각이 든다. 왜냐하면 굉장히 기초적인 API 설계에서 시작하여 점점 심화시키는 과정의 커리큘럼으로 구성되어 있기 때문이다.
또한 덤으로 위의 책에서 Spring AI 사용 방법을 설명하기 위해서 기본적인 혹은 심화된 LLM 지식 설명도 같이 곁들여져 있기 때문에 (System, User, Assistant Message 등등) LLM의 배경을 어느 정도 모르고 있어도, 책의 커리큘럼을 따라가다 보면 자연스레 학습할 수 있다.
마지막으로 이 책은 다양한 예시가 수록되어 있기에 따라 하다 보면 기본적인 기능들에 대해서 어떻게 사용해야 할지 쉽게 파악할 수 있다. 가령 사진을 이용한 인물 검색, 텍스트 기반의 AI 대화형 GUI 프롬프트 구성, 음성 대화, 멀 테 모달 등이 그러하다.
【 이것이 Spring 이다를 읽고 나서 】
한때는 신규 플랫폼이나 신규 프레임워크가 나오면 그 기법이나 그 기능을 반드시 사용해야만 한다고 생각을 했었다. 하지만 어느 정도 연차가 쌓이고 경험이 쌓이게 되니, 신규 기술보다 더 중요한 것이 추후 유지 보수가 원활히 이루어지는가. 그리고 사용자에게 동일한 서비스의 질을 꾸준히 제공해 줄 수 있느냐가 가장 중요하다는 것 깨닫게 되었다.
만약 스프링 프레임워크로 서비스 개발을 기획/계획하고 있다면 한 번쯤 Spring AI를 사용해 보는 것은 어떠할까?
자바 진영에서 AI를 지원하는 속도가 심상치 않다. 2023년 Spring AI 프로젝트를 시작으로 2년 뒤인 2025년 5월 Spring AI 1.0 GA를 세상에 선보였다. 그리고 나서 6개월 만에 2025년 11월 Spring AI 1.1 GA를 발표했다. 그리고 2026년 Spring AI 2.0이 나올 예정이다. 2026년 초에 정식으로 배포하게될 전자정부표준프레임워크도 정식으로 Spring AI를 지원한다. 자바 개발자가 파이썬을 몰라도 AI를 개발할 수 있는 세상이 온 것이다.
랭체인 초창기에 API가 자주 바뀌어서 사용하는데 고생을 많이한 경험이 있다. 하지만 Java 진영에서는 그 부분을 충분히 고려한 것 같다. Spring AI는 텍스트뿐만 아니라 음성, 멀티 모달(이미지 분석/생성), 메모리, RAG, 도구 호출, MCP, 싱글/멀티 이이전트를 모두 지원한다. 추가로 전처리/후처리 어드바이저, 임베딩, 벡터 저장소, 메모리, 스트리밍, Reasoning 모드도 지원한다. LLM은 기존 OpenAI, Claude, Gemini와 Ollama로 대표되는 오픈소스도 지원한다. 기존 프로덕트가 자바로 개발되었다면 이제는 파이썬을 몰라도 AI 기능을 기존의 스프링 프레임워크방식으로 쉽게 추가할 수 있다.
[책의 구성]
이 책은 전체 14개 장과 부록으로 구성되어 있다. (524페이지 분량)
예제 코드(7.5GB)는 윈도우/맥 환경에서 모두 구동되며, projects/ 폴더에는 29개로 프로젝트가 포함되어 있다. VSCode, Java21, Gradle 기반으로 되어 있으며 구동할 때 에러가 난다면 Copilot등의 AI 지원도구를 사용하여 질문하면 쉽게 수정할 수 있다.
<Chapter 01 Spring AI 시작, p025~p026>
Spring AI 핵심 Object #1. ChatModel/StreamingChatModel 인터페이스
<Chapter 02 텍스트 대화, p043~p044>
Spring AI 핵심 Object #2. Spring AI Message API
<Chapter 02 텍스트 대화, p045~p046>
Advisor
<Chapter 07 모델 전후처리 어드바이저, p192~p193>
멀티 에이전트를 위한 오케스트레이터
<Chapter 14 멀티 에이전트로 협업하기, p462~p463>
맥OS에서 구동한 화면
[소감]
LLM애플리케이션을 개발하는데 필요한 기초 이론(프롬프트 엔지니어링, 임베딩, RAG, 도구 호출, MCP, 에이전트, 병렬처리, 스트리밍)과 스프링 프레임워크에서 AI를 지원하는 추상화 개념을 도표와 풍부한 예시로 자세히 설명한다. 스프링 개발 경험이 있다면 AI를 자세히 몰라도 적용하는데 어렵지 않을 것이다. 특히, 소스 코드에서 핵심 부분만 집중해서 친절하게 설명한다.
[추천]
AI를 도입하기 위한 자바 개발자는 꼭 이 책을 읽는 것을 추천드린다. 앞으로의 코딩은 AI가 맡아서 처리할 것이다. 사람 개발자는 아키텍처를 설계하고 AI를 활용해서 구현한 것을 검토할 수 있어야한다. 이 책이 여러분의 프로덕트에 AI 기능을 추가할 수 있도록 이끌어 줄 것이다.
나는 "이것이 자바다" 라는 도서로 자바를 처음 배웠다. 그때가 2022년 후반기 쯤이였는데, "JAVA의 정석"은 2016년 이후 개정판이 나오지 않은 상태였고, "이것이 자바다"는 막 따끈따끈한 개정판이 출판되던 시점이었다. 이후 한빛미디어의 "이것이 XXX" 시리즈는 굉장히 두껍고 내용 업데이트가 잘되는 도서라는 인상을 심어주었다.
이번 개정판에서 추가된 내용은 챕터 13 에이전트 개발과 챕터 14 멀티 에이전트로 협업하기, 그리고 부록으로 로컬에서 Meta Llama, DeepSeek R1 모델 사용하기 등이 추가되었다.
도서 내용은 OpenAI API 키 발급 받아서 프롬프트 설정부터 시작하여 음성 대화, 이미지 생성 편집, RAG, MCP 등등을 다룬다. 자바와 Spring AI를 사용하기 때문에 아직 자바와 스프링에 익숙하지 않은 분들이라면 우선 자바와 스프링을 배우고 읽는 것을 추천한다. AI를 잘 몰라도 읽는데 크게 지장은 없었다.
사실 이런 도서는 한번 따라친다고 해서 기억에 남기 쉽지 않다. 나의 것으로 만드려면 챕터 13의 여행 도메인 에이전트, 관광지 추천 에이전트, 맛집 추천 에이전트, 숙소 추천 에이전트, 유튜브 검색 에이전트 등등 다양한 에이전트 예제를 경험해보고 나만의 에이전트를 만들면 더 좋을 듯 하다.
Java, Spring 기반으로 개발된 웹 기반 애플리케이션 또는 웹사이트들이 AI와 통합된다면,
어떤 기술로 통합할 수 있는 걸까? "Spring AI"는 LLM을 Java 생태계에 통합하려는 Spring 프로젝트라고 한다.
나는 이 책을 통해서 Spring AI를 처음 접했다. 기존 프로그래밍 모델을 뒤집어 엎지 않더라도 웹 프레임워크 Spring 위에 AI 통합 프레임워크를 얹은 개념이다. 파이썬이나 Tensorflow 같은 파이썬 도구를 써서 연동하는 것이 아니라 Spring 환경에서 최신 AI 기능들을 쉽고 안정적이고 효율적으로 구현할 수 있다는 것이다.
어떻게 AI 모델에 입력 데이터를 전달하고, 모델의 결과를 사용자에게 보여줄 것인가? 에 대한 기능을 할 수 있는 AI 애플리케이션을 위한 프레임워크를 파이썬에서는 "랭체인(LangChain : Python 언어와 Node.js 플랫폼)"이라고 하면 자바에서는 "Spring AI(Java 언어와 Spring Boot 플랫폼)"인 것이다. 이 책에서는 Spring AI 개발환경 세팅과 지원하는 모델 API (Chat Model, Image Model, Speech Model, Embedding Model)를 사용하여 애플리케이션을 개발하는 방법을 실습코드를 통해서 직접 해볼 수 있도록 코드화면과 함께 상세하게 설명되어 있다.
또한 음성 변환, 이미지 생성, 임베딩, 대화기억 저장소, RAG, MCP, 에이전트 개발, 멀티에이전트까지
다양하게 구현할 수 있도록 풍부한 코드와 설명이 들어가있고, 개념은 표 또는 도식, 또는 별도의 용어설명을 통해서 이해할 수 있도록 잘 설명되어 있어 비단 개발자만이 아니라 생성형 AI에 관심이 있는 사람이라면 여기에 챕터별 개념만 잘 읽어도 현재의 기술동향을 잘 이해할 수 있을 것 같아 도움이 되는 책이라 생각이 든다.
최근 생성형 AI 기술이 빠르게 발전하면서, 단순히 모델을 사용하는 수준을 넘어 기존 백엔드 시스템에 어떻게 적용할 것인지에 대한 고민이 커지고 있습니다. 특히 SI 환경이나 기업 시스템에서는 여전히 Java와 Spring 기반 구조가 중심이기 때문에, AI를 실제 서비스에 적용하려면 Spring과의 결합이 중요한 상황입니다. 이런 흐름에서 이 책은 Spring 개발자가 AI를 실무에 적용하는 데 필요한 방향을 제시해주는 책입니다.
이 책은 Spring AI를 활용해 LLM 기능을 애플리케이션에 적용하는 과정을 단계별로 설명합니다. 단순히 API를 호출하는 수준이 아니라, 프롬프트 구성, 컨텍스트 관리, 벡터 데이터 활용, RAG 구조까지 실제 서비스에 필요한 요소를 Spring 코드와 함께 설명합니다. 특히 기존 Spring Boot 프로젝트에 AI 기능을 자연스럽게 추가하는 흐름으로 구성되어 있어, 기존 시스템을 운영하는 개발자 입장에서 이해하기 쉽습니다. 단순히 AI 기능을 붙이는 것이 아니라, 기존 구조 안에 어떻게 안정적으로 녹여낼 것인지 고민하게 만든다는 점이 인상적입니다.
기존에 읽었던 'LLM 엔지니어링'이나 'LLM 서비스 설계와 최적화'가 AI 시스템의 구조와 설계 관점을 중심으로 설명했다면, 이 책은 Spring 기반 애플리케이션에 AI를 실제로 적용하는 방법에 초점을 맞춘 책입니다. 또한 'AI 엔지니어링'이 전체 흐름과 운영 관점을 다뤘다면, 이 책은 코드 수준에서 어떻게 구현할 것인지에 대한 구체적인 방법을 보여줍니다. 개념과 설계를 이해한 뒤 실제로 구현하는 단계에서 참고하기 좋은 책입니다.
이 책의 가장 큰 특징은 Spring 개발자 관점에서 AI를 설명한다는 점입니다. Python 중심의 AI 환경에 익숙하지 않은 개발자도, 기존에 사용하던 Spring 구조 안에서 AI 기능을 이해하고 적용할 수 있도록 구성되어 있습니다. 실습 예제도 단순히 따라 해보는 수준이 아니라 실제 서비스로 확장할 수 있는 형태로 구성되어 있어 활용도가 높습니다. 프롬프트를 어떻게 구성할지, 벡터 검색을 어떻게 적용할지, 그리고 AI 응답을 서비스 로직에 어떻게 연결할지까지 흐름이 자연스럽게 이어집니다. 덕분에 단순 구현을 넘어 AI를 서비스 기능으로 설계하는 관점까지 익힐 수 있습니다.
또한 Spring AI의 구조와 동작 방식도 함께 설명하고 있어, 단순히 기능을 사용하는 데 그치지 않고 이후 확장이나 커스터마이징에도 도움이 됩니다. 실무 적용을 전제로 한 구성이라는 점이 잘 드러나는 부분입니다.
이 책은 Spring 기반 백엔드 개발자, SI 개발자, 그리고 기존 시스템에 AI 기능을 추가해야 하는 실무자에게 특히 도움이 됩니다. AI를 Python 중심으로만 접해봤던 개발자나, 반대로 AI 경험은 부족하지만 Spring 개발에는 익숙한 개발자 모두에게 유용한 내용입니다.
'이것이 Spring AI다(개정판)'는 AI를 별도의 시스템으로 두는 것이 아니라, 기존 서비스 안에 자연스럽게 녹여내는 방법을 알려주는 책입니다. Spring 기반 시스템에서 AI 도입을 고민하고 있다면, 방향을 잡는 데 도움이 되는 실용적인 책입니다.
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 에이
전트 요소에 대한 전반적 이해가 필요한 사람.
각 개념이 코드 레벨에서 어떻게 구현되는지를 보면서 이해할 수 있기 때문에, 이론만으로는 와닿지 않던 개념들이 구체적으로 다가온다.
Spring AI 1.0 GA는 2025년 5월, Python LangChain이 시장을 빠르게 굳혀가던 시기에 약 2년간의 프리릴리즈를 거쳐 정식 출시됐다. 이 책은 텍스트 Spring AI의 주요 구성요소를 처음부터 끝까지 실습하는 입문서다.
12장 MCP 챕터를 직접 따라해보면서, 기존에 Python FastMCP로 만들어뒀던 MCP 서버를 Spring AI 기반으로 마이그레이션해보았다. McpTool, McpToolParam 어노테이션으로 Tool을 정의하고 의존성 주입으로 서비스를 구성하는 방식은 Python 쪽과 개발 경험 차이가 크지 않았다.
AI 커뮤니티는 여전히 Python 강세지만, 기업 시스템에 AI를 네이티브하게 접목해야 한다면 Spring AI는 피할 수 없는 선택지다. LangChain4J, Semantic Kernel 같은 경쟁자도 있지만 국내 레거시 현실을 고려하면 본격적인 승부는 Java8이 EEoS되는 2030년 전후가 될 것 같다. 미리 익혀두고 차세대를 대비하려면, 지금이 입문하기 딱 좋은 시점이다.
AI를 활용한 서비스를 만들어야 한다는 이야기는 어디서든 들리는데, 막상 구현하려고 하면 대부분의 레퍼런스가 Python 기반이다. Java 개발자 입장에서는 익숙한 생태계에서 AI를 다룰 수 있으면 그게 제일 좋은데, 이 책이 딱 그 자리를 채워준다. Spring Boot 프로젝트 안에서 바로 AI를 다루는 방법을, 프롬프트 엔지니어링부터 멀티 에이전트 오케스트레이션까지 꽤 넓은 범위로 알려준다.
읽으면서 가장 먼저 든 생각은 "Spring 개발자가 쓰기 편하게 만들었구나"였다. ChatModel 인터페이스가 Model을 상속받고, AI 모델이 변경되더라도 소스 변경이 최소화되는 설계는 Spring의 인터페이스 기반 추상화 그대로다. 특히 Advisor 개념이 눈에 띈다. 애플리케이션과 LLM 사이의 상호작용을 가로채서 프롬프트를 강화하거나 응답을 변환하는 구조인데, Spring AOP나 Servlet Filter를 떠올리면 바로 이해가 된다. 대화 기억, RAG, 세이프가드 같은 기능이 전부 이 Advisor 위에 올라간다. LangChain이 체인 개념으로 단계를 연결한다면, Spring AI는 스프링 빈으로 자동 주입된 API를 메소드 호출 방식으로 처리한다. 사고방식 자체가 다르다.
책 구성도 단순 나열이 아니라 인과관계가 있다. 텍스트 대화, 프롬프트 엔지니어링, 구조화된 출력, Advisor를 쌓아가고, 그것들을 합쳐서 임베딩, RAG, 도구 호출, MCP, 에이전트, 멀티 에이전트를 구현한다. 뒤에서 등장하는 개념이 앞에서 배운 것 위에 올라가는 구조라서 중간에 챕터를 건너뛰면 이후 내용이 이해가 안 될 수 있다.
프롬프트 엔지니어링 챕터에서 제로-샷, 퓨-샷, 역할 부여, 스텝-백, 생각의 사슬, 자기 일관성까지 6가지 기법을 Spring AI 코드로 보여준다. 평소에 "역할을 지정하면 답변이 더 좋아진다"거나 "질문을 단계별로 나누면 낫다" 같은 건 경험적으로 알고 있었는데, 이것들에 정식 명칭이 있다는 건 이 책에서 처음 알았다.
RAG 파트의 모듈화도 깔끔하다. 검색 전, 검색, 검색 후, 생성 네 단계를 독립 모듈로 나눠서 필요한 것만 조합할 수 있다. 모호한 질문을 변환하는 모듈, 질문을 재작성하는 모듈, 번역하는 모듈이 각각 독립적이라 상황에 맞게 골라 쓸 수 있다.
14장 멀티 에이전트가 이 책의 클라이맥스다. 하위 에이전트들을 각각 하나의 도구로 취급하는 Agents as Tools 패턴, 공유 상태 객체로 에이전트 간 결과를 공유하는 구조, CompletableFuture로 독립적인 에이전트를 병렬 실행하는 방식, 예산 초과 시 자동으로 재계획하는 피드백 루프까지 실서비스에서 참고할 만한 패턴이 나온다. LLM이 즉흥적으로 실행 순서를 결정하는 방식 대신, 실행할 에이전트의 종류와 순서가 코드로 정해져 있는 통제된 오케스트레이션 개념이 현실적이다. 디버깅이 쉽고 일관된 결과를 보장할 수 있다.
다만 API 사용법 설명에 상당 부분을 할애하는 만큼, 그 지면을 실무 시나리오나 트러블슈팅에 더 할애했으면 하는 아쉬움이 있다. 테스트 전략이나 비용 관리에 대한 내용도 부족하다.
Java와 Spring Boot로 개발하고 있으면서 AI 기능을 서비스에 붙여야 하는 개발자에게 추천한다. Python을 거치지 않고 익숙한 Spring 생태계 안에서 AI를 다루고 싶다면 이 책이 현재로서는 가장 체계적인 가이드다.
AI 서비스의 본질은 모델 그 자체가 아니라, 모델을 감싸고 있는 데이터 처리와 비즈니스 로직입니다. 이미(또는 아마도) 잘 알고 있는 Spring MVC, WebFlux 등을 이용하여 AI 서비스의 품질를 유지하고 확장하는 방안을 알려줍니다. Java 진영에서 LLM 기반 서비스를 고민하는 백엔드 개발자에게 추천하여 가장 익숙한 도구로 AI엔진을 하네스(Harness)하시길 바랍니다.
AI 개발 얘기가 나오면 주변에서 파이썬, 랭체인, FastAPI 이야기가 먼저 나옵니다. 스프링을 공부하던 저로서는 그 대화가 남의 얘기 같았습니다. '나중에 파이썬으로 해야지' 하며 미뤄두고 있었는데, 책 첫 페이지에서 만난 문장 하나가 그 생각을 바꿔놓더군요.
"Spring AI는 LLM을 Java 생태계에 통합하기 위한 Spring 프로젝트입니다. Spring Boot의 친숙한 프로그래밍 모델을 유지하면서도 복잡한 기능들을 손쉽게 구현할 수 있도록 도와줍니다. "
말 그대로였습니다. @Service, @Autowired 정도 써본 스프링 개발자라면 따라가기 어렵지 않았습니다. 파이썬 지식이 필요 없었고, 복잡한 AI 이론보다 '스프링답게 구현하는 법'에 집중된 구성이었습니다.
1장에서 아키텍처를 잡고 나면 2장부터 바로 실습에 들어갑니다. 책에서 기본 모델로 사용하는 gpt-4o-mini 환경에서 temperature를 0.3으로 낮춰보니, 답변이 확실히 차분하고 일관되게 바뀌었습니다. 이론으로만 알던 파라미터가 실제로 작동하는 걸 보니 납득이 됐습니다. WebFlux 기반 스트리밍 구조를 살펴본 뒤에는, ChatGPT가 어떤 원리로 돌아가는지도 이해됐습니다.
10장 RAG 파트가 실습 중 가장 생각할 거리가 많았습니다. 'PDF를 업로드하면 끝'이라고 단순하게 생각했는데, 청크 크기 설정을 조금만 바꿔도 AI 답변이 확연히 달라졌습니다. pgAdmin에서 벡터 유사도 점수를 대조하며 어떤 설정이 어떤 결과를 만드는지 직접 추적해보는 과정이 재미있었습니다. 코드와 수치로 확인하고 나니 RAG가 익숙해졌습니다.
개정판에서 추가된 MCP(Model Context Protocol)와 에이전트 챕터도 볼 만했습니다. MCP는 STDIO, SSE 등 다양한 방식으로 외부 도구를 연결하는 표준 프로토콜이고, Tool Calling은 AI가 내가 정의한 스프링 빈을 직접 골라서 실행하는 개념인데, 두 챕터를 함께 읽고 나니 스프링 안에서 AI가 어디까지 행동할 수 있는지 윤곽이 잡혔습니다.
나중에 채용 정보를 수집해 조건에 맞는 공고를 알림으로 보내주는 작은 서비스를 직접 만들어보고 싶습니다. WeatherAgent 예제에서 시작해 Advisor와 세션 id로 대화 맥락을 유지하는 구조로 발전시키는 흐름은 공부하면서 봤던 리팩토링과 비슷했습니다.
실습 전에 미리 알아두면 좋은 점이 있습니다. 소스 코드에 실습 환경까지 미리 포함되어 있어 용량이 7.5GB입니다. docker/face-embed-api(3.55GB)와 python311(1.77GB)이 대부분이라 핵심 예제 코드 자체는 가볍지만, 다운로드 시간을 여유 있게 잡아두는 편이 좋습니다. 책의 개발 환경 설명이 VS Code 기준이라, IntelliJ를 쓰는 제 환경에서는 환경 변수 설정 위치와 플러그인 구성이 달라서 설정이 적용되지 않는 원인을 찾는 데 헤맸습니다.
파이썬으로 갈아타기엔 막막하고, AI 개발을 어디서 시작해야 할지 모르겠는 스프링 공부 중인 분들께 출발점이 될 만한 책입니다. 이미 배우고 있는 스프링 환경 위에서 생성형 AI를 시작해보고 싶은 분들께 추천합니다.
AI 쪽이 워낙 빠르게 변하다 보니, 관심은 있어도 막상 실무에서 어떻게 써야 할지 감이 잘 안 잡혔다. 특히 Spring 기반으로 서비스를 만드는 입장에서는 AI 요소를 어디에 어떻게 끼워 넣어야 적합할까?하는 고민이 항상 있었는데, 이 책은 그 지점을 꽤 현실적으로 풀어준다.
읽으면서 가장 좋았던 점은, AI 기초개념에서 출발해서, 이걸 실제 애플리케이션 흐름 안에서 어떻게 녹여내는지를 보여준다는 점이었다. ex) LLM 호출 하나로 끝나는 게 아니라, 프롬프트를 어떻게 구성하고, 사용자 입력을 어떻게 가공하고, 필요하면 벡터 DB를 붙여서 RAG 형태로 확장하는 과정까지 설명한다. 덕분에 단순히 이 기능은 이렇게 쓰는 거구나~가 아니라 서비스를 만들 때 이런 식으로 설계하면 되겠구나 하는 감각이 생긴다.
특히 인상 깊었던 건, AI를 단순한 외부 API가 아니라 하나의 컴포넌트처럼 다루는 접근이다. Spring 애플리케이션 안에서 Bean처럼 관리하고, 서비스 레이어에 녹여내고, 필요하면 다른 시스템과 연계하는 구조를 보여주니까 기존 백엔드 개발 흐름과 크게 어긋나지 않으면서, 낯선 요소를 추가하는 느낌보다는 기존 코드에 하나 더 얹는다는 느낌에 가까웠다.
또 하나 장점은 실습 중심 구성이다. 코드 예제를 제공하는데, 실제로 따라 치면서 결과를 확인할 수 있게 되어 있어서 이해가 훨씬 빠르다. UI까지 포함된 예제도 있어서, 작은 서비스 하나를 끝까지 만들어본다는 경험을 주는 것도 좋았다. 이게 생각보다 중요한 게, AI 쪽은 문서만 주구장창 읽으면 감이 안 오는데, 한 번이라도 전체 흐름을 직접 돌려보면 이해도가 확 올라간다.
기본적인 Spring 구조나 웹 애플리케이션 흐름에 익숙하지 않다면 중간중간 설명이 빠르게 느껴질 수 있다. 완전 초보자를 위한 책이라기보다는, 이미 Spring을 이용한 백엔드 개발 경험이 있는 사람을 대상으로 쓰인 느낌이다. 그리고 일부 파트는 개념 설명이 압축적으로 지나가서, 처음 접하는 사람은 별도로 찾아봐야 할 수도 있다.
그래도 전체적으로 보면, AI 개념을 배운다기보다는, AI를 어떻게 써먹을지 배운다는 쪽에 더 가까운 책이다. 특히 Java/Spring 기반에서 일하는 개발자라면, 다른 언어나 프레임워크 예제를 억지로 번역해서 이해할 필요 없이 바로 자기 환경에 적용해볼 수 있어 이게 큰 장점인 것 같다.