“한빛미디어 서평단 <나는리뷰어다> 활동으로 도서를 제공받아 작성한 서평입니다.”
챗봇을 한 번이라도 구현해보신 적 있으신가요?
LLM을 붙여 대화는 잘 되는데, 막상 실무에서 굴리기 시작하면 ‘그 다음 단계’에서 한 번쯤 멈칫하게 됩니다.
처음에는 LLM 호출만으로도 충분히 그럴듯합니다. 그런데 실제 사용자 입력이 들어오기 시작하면 할루시네이션이 튀고, 정책 우회나 프롬프트 인젝션 같은 예외가 보이면서 프롬프트를 계속 단단하게 다듬게 됩니다. 그러다 중요한 동작은 tool/function calling으로 분리해 모델이 할 일과 시스템이 할 일을 나누는 방식으로 자연스럽게 넘어가게 되고요.
저도 딱 그 흐름을 거쳤습니다. 실무에서 간단한 챗봇을 운영해봤고, 기능은 tool/function calling으로 분리해 둔 상태였습니다. 프롬프트도 여러 번 다듬으면서 정책을 명확히 했고, 가능한 범위 안에서 인젝션을 막기 위한 장치들도 넣어두었습니다.
문제는 그 다음부터였습니다. 품질은 분명 좋아졌는데 예외 케이스가 늘어나면서 경우의 수가 빠르게 불어나고, 프롬프트는 점점 길어졌습니다. 후처리·검수·로그 같은 단계가 붙을수록 전체 흐름은 무거워졌고요.
어느 순간부터는 “이 처리는 프롬프트에서 하는 건지, 코드에서 하는 건지” 저 스스로도 헷갈리기 시작했습니다. 결국 “이걸 서비스로 확장 가능한 구조로 만들려면 어떻게 해야 하지?”라는 질문으로 돌아오게 됐습니다.
이 책이 좋았던 이유는 새로운 기능을 하나 더 알려줘서가 아니라, 그동안 따로 붙여왔던 요소들을 하나의 흐름 안에서 다시 보게 해줬기 때문입니다. 흩어져 있던 조각들이 연결되면서 구조로 보이기 시작했습니다.
챗봇을 만들어보신 분들이라면 LLM 단순 호출 → tool/function calling → 프롬프트 고도화라는 흐름을 한 번쯤 거치셨을 것 같습니다. 그리고 그 다음 단계에서 결국 “이걸 어떻게 구조로 묶을 것인가”라는 고민을 만나게 됩니다.
LCEL로 프롬프트–모델–출력 파서를 파이프처럼 연결해 체인을 만드는 과정을 따라가다 보니, 따로 관리하던 로직들이 하나의 파이프라인으로 정리되는 느낌이었습니다. 함수 단위로 흩어져 있던 흐름이 연결되면서 “아, 내가 만들고 싶었던 게 이 구조였구나” 하는 감각이 생겼습니다.
출력 파서를 통해 응답 형태를 고정하는 부분도 특히 실무적으로 와닿았습니다. 프롬프트로 형식을 강제하는 것과 구조로 통제하는 것은 유지보수 난이도 자체가 다르다는 걸 이미 겪어봤기 때문입니다.
RunnableParallel과 RunnableLambda는 문법보다 관점이 인상적이었습니다. 기존에는 tool 호출을 조건문으로 분기했다면, 체인 안에서는 데이터 흐름 자체가 구조가 됩니다. 코드의 중심이 기능에서 흐름으로 이동하는 느낌이었습니다.
RunnablePassthrough로 기존 데이터를 유지한 채 후처리나 평가 체인을 붙이는 방식도 실무적으로 바로 떠올릴 수 있는 구조였습니다. 로그 수집이나 검수 단계를 어디에 붙여야 할지 감이 잡히는 지점이었습니다.
이 부분을 보면서 “기능을 잘게 나누는 것”과 “흐름을 설계하는 것”은 완전히 다른 문제라는 걸 다시 체감했습니다.
Memory와 RAG도 인상 깊었습니다. 예전에는 필요할 때마다 기능처럼 붙였기 때문에 구조가 더 복잡해졌는데, 체인 흐름 안에서 보니 어디에 들어가야 자연스러운지가 보였습니다.
대화를 저장하는 위치, 맥락을 전달하는 방식, 외부 지식을 주입하는 타이밍이 하나의 흐름으로 연결되면서 이해됐습니다.
LangSmith와 LangChain Hub 파트는 “만드는 것”에서 끝나는 게 아니라 “운영하면서 개선하는 구조”까지 포함되어 있다는 점에서 좋았습니다.
후반부 실전 파트도 인상적이었습니다. Streamlit으로 UI를 붙이고 세션 상태를 관리하면서 스트리밍 응답까지 연결하는 흐름을 따라가다 보니, 단순 데모가 아니라 실제 서비스 형태로 묶는 감각이 분명해졌습니다.
에이전트 파트에서는 ReAct 패턴으로 도구를 선택하고 실행하는 과정을 직접 관찰하면서, tool/function calling이 ‘정적인 호출’이 아니라 ‘판단과 실행의 루프’로 확장되는 지점을 이해하게 됐습니다.
랭그래프/체크포인터로 대화 상태를 안정적으로 유지하는 방식, MCP로 도구를 서버처럼 표준화해 붙이는 흐름까지 이어지면서 후반부는 “운영 가능한 구조”를 만드는 데 초점이 맞춰져 있었습니다.
이미 랭체인을 깊게 사용하고 계신 분들께는 익숙한 내용일 수 있습니다.
추천하고 싶은 대상은
이라면 한 번 훑어보는 것만으로도 도움이 되는 책이라고 생각합니다.
랭체인을 처음 접하는 분들도 전체 흐름을 실습으로 따라갈 수 있어서 입문서로 좋습니다.
특히 후반부에서 Streamlit UI → 에이전트(ReAct) → 랭그래프/체크포인터 → MCP로 확장되는 흐름이 이어지기 때문에, 랭체인 문법을 배우는 책이라기보다 서비스를 어떻게 조립할지 감을 잡게 해주는 책에 가깝습니다.
예전에는 프롬프트를 더 잘 쓰고 모델을 바꾸면 해결될 문제라고 생각했습니다.
지금은 기능을 얼마나 붙였느냐보다 그 기능들이 어떤 구조로 설계되어 있고 어떤 흐름 안에서 움직이느냐를 먼저 보게 됩니다.
이미 가지고 있는 챗봇을 한 단계 정리하고 싶던 시점에서 읽기 딱 맞는 책이었습니다.
#한빛미디어 #나는리뷰어다 #AI에이전트마스터클래스