LangChain 챗봇과정 로드맵과 STEP 요약← 이전목차다음 →MetaContents

과정 안내

과정 로드맵과 STEP 요약

8개 장을 4개 STEP 으로 묶었습니다. 이 쪽에서는 STEP 마다 무엇을 배우고 무엇을 만드는지, 장끼리 어떻게 이어지는지를 한눈에 봅니다. 장의 자세한 내용은 표의 장 번호를 눌러 봅니다. 실습을 돌리기 전에 필요한 것은 실습 코드 사용 안내에 있습니다.

과정 한눈에

동네 식당 하나를 여는 일에 빗대 볼 수 있습니다. 먼저 요리사가 어떤 사람인지 알고 주방 기구를 들여놓습니다. 다음에는 주문을 받아 요리로 내는 순서를 정하고, 단골의 취향을 기억하게 합니다. 그다음 창고의 재료(데이터)와 요리책(문서)을 요리사가 꺼내 쓰게 합니다. 마지막으로 손님이 앉는 홀과 키오스크를 차리고 문을 엽니다. 여기서 요리사가 LLM 이고, 주방 기구가 가상환경과 API 키, 요리 순서가 LCEL 체인, 창고와 요리책이 도구(MCP)와 문서 검색(RAG), 홀과 키오스크가 Streamlit 웹 화면입니다. 실제 식당과 다른 점은, 이 요리사는 단골을 스스로 기억하지 못해서 우리 코드가 매번 지난 주문을 일러 줘야 한다는 것입니다.

STEP 1부터 STEP 4까지를 ㄹ자 길로 이은 과정 로드맵

정거장 하나가 STEP 하나이고, 정거장 안에 그 STEP 의 장 번호와 아래에 짧은 설명이 있습니다. 화살표를 따라가면 앞 STEP 에서 만든 부품이 뒤 STEP 에서 하나의 챗봇으로 합쳐집니다.

STEP이름장한 줄 요약
1챗봇과 개발 환경1~2장LLM 의 성질을 알고, 가상환경과 API 키를 갖춰 첫 질문을 보낸다
2LCEL 체인과 대화 기억3~4장프롬프트·모델·파서를 체인으로 잇고, 구조화된 출력과 메모리 전략을 익힌다
3도구와 문서로 넓히기5~6장도구 호출과 MCP 로 데이터를, RAG 로 문서를 모델에 잇는다
4웹 화면과 나만의 챗봇7~8장Streamlit 웹 화면에 올려 배포하고, 나만의 챗봇을 설계해 시연한다

장을 건너 이어지는 실습

과정 내내 가상의 여행사 "구름다리여행"을 소재로 씁니다. 회사, 상품, 규정, 대화는 모두 지어낸 것입니다.

소재지나는 장하는 일
자주 묻는 질문 faq.csv1장 → 3장 → 5장규칙 챗봇의 정답표에서, Q&A 체인의 프롬프트로, MCP 서버가 읽는 자료로 쓴다
상담 대화 chat_log.json1장 → 4장보내는 토큰을 세는 데서, Window·Summary 메모리를 견주는 데로 이어진다
상품 목록 trip_products.csv5장상품 찾기·요금 계산 도구와 MCP 서버의 자료가 된다
여행 약관 travel_terms.pdf6장 → 7장조각 내어 FAISS 로 색인하고, 같은 검색을 웹 화면의 문서 챗봇에 붙인다
연습용 임베딩 BigramEmbeddings6장 → 7장 → 8장키 없이 검색을 돌려 보는 대역으로 쓰고, 진짜 임베딩과 견준다
약관·FAQ·상품 목록5장·6장 → 8장종합 상담 챗봇에서 약관 검색, 상품 찾기 도구, 대화 기억, 웹 화면으로 묶는다

STEP 1. 챗봇과 개발 환경

새 식당의 주인이 요리사를 뽑고 주방을 차리는 단계입니다. 요리사(LLM)가 무엇을 잘하고 무엇을 못하는지 알아야 메뉴를 짤 수 있고, 가스와 칼(가상환경과 API 키)이 갖춰져야 첫 요리를 낼 수 있습니다.

STEP 1 에서 배우는 것, 만드는 것, 다음 STEP 으로 가져가는 것을 세 칸으로 모은 인포그래픽

왼쪽 칸이 이 STEP 에서 배우는 개념, 가운데 칸이 실습과 프로젝트에서 만드는 것, 오른쪽 칸이 다음 STEP 에서 다시 쓰는 것입니다. 아래 STEP 의 그림도 같은 순서로 읽습니다.

장제목실습과 프로젝트에서 만드는 것
1장과정 소개와 LLM 의 이해규칙 챗봇, 다음 낱말 맞히기 모델, 토큰·요금 어림, 온도 실험, 대화 비용 계산기
2장개발 환경 준비가상환경 점검, .env 읽기, OpenAI 라이브러리와 ChatOpenAI 로 첫 질문, 오류 안내, 내 PC 점검표
  • 규칙 챗봇은 사람이 정한 낱말에만 답합니다. 1장 실습 1의 규칙 챗봇은 손님 질문 20개 가운데 11개만 맞혔습니다.
  • LLM 은 "다음 낱말 맞히기"를 되풀이해 글을 쓰고, 글을 토큰 조각으로 셉니다. 요금, 길이 제한, 속도가 모두 토큰 수로 정해집니다.
  • LLM API 는 기억하지 못하므로 앞의 대화를 매번 함께 보내야 하고, 대화가 길어질수록 보내는 토큰이 늘어납니다.
  • API 키는 코드에 적지 않고 .env 에 두며, load_dotenv(find_dotenv(usecwd=True)) 로 읽습니다. .gitignore 가 .env 를 올리지 않게 막습니다.
  • 오류는 번호로 읽습니다. 401 은 키, 429 는 한도, 404 는 모델 이름을 확인합니다.

STEP 2. LCEL 체인과 대화 기억

주문을 받아 요리로 내는 순서를 정하고, 단골의 지난 주문을 기억하는 단계입니다. 주문서(프롬프트), 요리사(모델), 담는 접시(파서)를 한 줄로 세우면 같은 순서로 몇 번이고 요리가 나옵니다.

STEP 2 에서 배우는 것, 만드는 것, 다음 STEP 으로 가져가는 것을 세 칸으로 모은 인포그래픽
장제목실습과 프로젝트에서 만드는 것
3장LangChain 기본 구조와 LCEL프롬프트 템플릿, 가짜 모델 체인, 구름다리여행 Q&A 체인, 프롬프트 견주기, 요약·키워드 갈래 체인, 여행지 소개 체인
4장대화형 챗봇과 메모리 전략Pydantic 틀, 요청 글에서 조건 뽑기, 세션별 기록, 기억하는 여행 비서, Window·Summary 메모리, 세 전략 견주기
  • LCEL 은 부품을 | 로 이어 체인을 만드는 방식입니다. prompt | model | parser 에서 앞 부품의 결과가 뒤 부품의 입력이 됩니다.
  • 모든 부품은 invoke(하나), batch(여럿), stream(조각) 세 손잡이를 가집니다.
  • 역할·형식·제약 지시와 퓨샷 예시는 답의 꼴을 잡습니다. 3장 실습 4에서 보내는 토큰은 13, 91, 173 으로 늘었습니다.
  • 구조화된 출력은 답을 정해 둔 칸으로 받는 것이고, Pydantic 틀이 조건을 어긴 값을 걸러 냅니다. 4장 실습 1에서 일부러 틀린 값 넷은 모두 걸렸습니다.
  • 모델은 기억하지 않으므로 우리 코드가 세션마다 기록을 들고 다닙니다. 짧은 상담은 모두 보내기, 긴 상담은 Summary, 앞의 일이 필요 없는 FAQ 는 Window 가 알맞습니다.

STEP 3. 도구와 문서로 넓히기

요리사가 창고의 재료 장부를 직접 들여다보고, 요리책을 펼쳐 정확한 분량을 확인하게 하는 단계입니다. 요리사는 "장부에서 이것을 찾아 달라"고 말하고, 찾는 일은 주방 직원(우리 코드)이 합니다.

STEP 3 에서 배우는 것, 만드는 것, 다음 STEP 으로 가져가는 것을 세 칸으로 모은 인포그래픽
장제목실습과 프로젝트에서 만드는 것
5장LLM 외부 도구 연동@tool 상품 찾기·요금 계산 도구, 도구 실행기, bind_tools 모델, 상품 자료 MCP 서버, MCP 도구를 쓰는 에이전트, 데이터를 찾아 답하는 챗봇
6장문서 기반 챗봇약관 PDF 읽기, 청킹 견주기, 연습용 임베딩과 FAISS 색인, RetrievalQA·LCEL 체인, 진짜 임베딩 견주기, 여행 약관 챗봇
  • Tool Calling 에서 모델은 도구 이름과 인자만 돌려주고, 실행은 우리 코드가 합니다. 결과는 같은 tool_call_id 를 단 ToolMessage 로 돌려줍니다.
  • MCP 는 AI 앱이 도구를 꽂아 쓰는 열린 규격입니다. 5장 실습 4에서 FastMCP 로 만든 서버의 도구 셋이 LangChain 도구가 되었고, 폴더 밖 경로는 모두 거절됐습니다.
  • RAG 는 질문과 관련된 문서 조각을 먼저 찾아 프롬프트에 넣고 그 조각으로 답하게 하는 방법입니다. 색인 단계(읽기 → 나누기 → 임베딩 → 저장)와 질문 단계(검색 → 프롬프트 → 답)로 나뉩니다.
  • 6장 실습 3에서 머리글을 지우고 조항 단위로 나누자 연습용 임베딩의 1위 적중이 12개 가운데 6개에서 8개로 올랐습니다. 낱말이 다른 질문은 놓쳐서 진짜 임베딩과 견줍니다.
  • 출처는 코드가 metadata 에서 붙이고, 문서에 없는 질문은 프롬프트 규칙과 거리 문턱으로 "찾지 못했습니다"라고 답하게 합니다.

STEP 4. 웹 화면과 나만의 챗봇

주방이 다 갖춰졌으니 손님이 앉는 홀과 주문 키오스크를 차리고 간판을 거는 단계입니다. 그리고 내가 고른 메뉴로 나만의 가게를 여는 연습을 합니다.

STEP 4 에서 배우는 것, 만드는 것, 현업으로 가져가는 것을 세 칸으로 모은 인포그래픽

마지막 STEP 이라 오른쪽 칸은 "다음 STEP 으로" 대신 "현업으로"입니다.

장제목실습과 프로젝트에서 만드는 것
7장웹 UI 연동과 배포첫 화면, 채팅 화면, 스트리밍 답, 진짜 모델 채팅 화면, 문서 챗봇 웹 화면, 배포할 폴더와 배포 점검
8장최종 프로젝트설계서와 평가 질문, 사내 규정 도우미(키 없이 실행), 정보통신 학습 도우미, 구름다리여행 종합 상담 챗봇, 시연 점검표와 피드백 기록
  • Streamlit 은 손님이 위젯을 만질 때마다 스크립트를 맨 위부터 다시 돌립니다. 그때 남는 것은 위젯의 값과 st.session_state 입니다.
  • 대화 기록을 st.session_state 에 두고 다시 돌 때마다 st.chat_message 로 다시 그리면 채팅 화면이 됩니다.
  • 모델과 문서 색인처럼 무거운 부품은 st.cache_resource 로 한 번만 만듭니다. 7장 실습 5에서 스크립트는 세 번 돌았지만 약관 색인은 한 번만 만들었습니다.
  • 키는 클라우드에서는 Secrets 칸(st.secrets), 내 PC 에서는 .env 에서 읽습니다.
  • 배포할 폴더에는 앱, 앱이 읽는 파일, requirements.txt, 비밀 값 견본, .gitignore 가 갖춰져야 합니다.
  • 나만의 챗봇은 코드보다 설계서(사용자와 질문, 문서, 부품, 범위 밖 질문에 할 말, 평가)를 먼저 씁니다. 8장 프로젝트 1에서 별칭 사전을 넣자 평가 질문의 1위 적중이 10개 가운데 6개에서 9개로 올랐지만, 새 말투 질문은 4개 가운데 2개만 찾았습니다.
  • 시연은 정해 둔 순서로 하고, 피드백은 "받은 피드백 | 고친 것 | 다시 잰 결과"로 적은 뒤 같은 평가를 다시 돌려 나빠지지 않았는지 봅니다.

장 사이 이어지는 것

앞 장에서 만든 것쓰는 곳
1장 실습 1의 out_rule_bot_result.csv(규칙 챗봇의 채점 결과)3장 실습 3(LLM 체인과 견주기)
1장 실습 2의 out_next_word.json(낱말 횟수표)1장 실습 4(온도 실험)
2장의 .env 와 ChatOpenAI 준비 코드3장부터 모델을 부르는 모든 실습
4장의 세션별 기록과 메모리 전략7장의 st.session_state 채팅 기록
6장의 약관 PDF 와 BigramEmbeddings, 검색 체인7장 실습 5·6의 문서 챗봇 앱(앱이 PDF 에서 직접 색인을 만든다)
1~7장의 부품(문서 검색, 대화 기억, 도구, 화면, 배포 점검)8장의 세 프로젝트. 프로젝트 3은 faq.csv, travel_terms.pdf, trip_products.csv 를 다시 쓴다

과정을 마친 뒤

  • 내 문서로 바꾸기: 약관 자리에 회사 규정, 제품 설명서, 수업 노트를 넣고 색인을 다시 만듭니다. 문서를 쓰기 전에 공개해도 되는 자료인지, 개인정보가 들었는지 먼저 확인합니다.
  • 평가표로 고치기: 평가 질문과 정답 위치를 표로 만들어 적중률을 재고, 청킹·k·프롬프트를 하나씩 바꿀 때마다 다시 잽니다.
  • 진짜 임베딩과 모델로 바꾸기: 연습용 임베딩과 가짜 모델을 쓴 실습은 OpenAIEmbeddings 와 ChatOpenAI 로 바꿔 끼우면 됩니다. 부품의 손잡이(invoke, embed_query)가 같아서 나머지 코드는 그대로입니다.
  • 더 배울 것: 대화 기록을 오래 저장하는 법(LangGraph 의 저장 기능), 여러 도구를 오가는 에이전트, 답의 품질을 자동으로 재는 법이 다음 걸음입니다.
← 이전환경설정다음 →실습 코드 사용 안내