platanu***
2026-03-29

Chat API, 프롬프트 엔지니어링, 구조화된 출력을 시작으로 음성·이미지·멀티모달 처리, RAG, Tool Calling, MCP Server 구축까지 실제 AI 서비스에 필요한 기술을 하나씩 완성해 나간다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
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를 다루고 싶다면 이 책이 현재로서는 가장 체계적인 가이드다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.