RAG2026-5일5차시 · LangChain 입문12 / 16← 이전목차다음 →MetaContents

5차시. LangChain 입문

실습 1 — LangChain 입문 실습 따라 하기

관련 수업 자료: 5차시 「2. Document Loader — 문서 읽기」(2~3쪽), 5차시 「4. 첫 번째 LangChain 프로젝트」(4~5쪽), 5차시 「5. Prompt Template 사용하기」(5~6쪽) · 실습 코드 05/textloader.py, 05/load_and_split.py, 05/prompt_template.py

이 실습은 교안 해설(05_LangChain입문.md)의 실습 순서를 옮긴 것입니다. OpenAI 임베딩이나 채팅 모델을 부르는 파일은 .env 에 API 키가 있어야 돌아갑니다. 키가 없으면 실행 결과 샘플로 출력 모양을 확인합니다.

수업 자료와 이어지는 곳

실습 코드원본 PDF이어지는 내용
05/textloader.py3쪽5차시 「2. Document Loader — 문서 읽기」 › 2-2) TextLoader 사용 예시 아래에 실었습니다
05/load_and_split.py5쪽5차시 「4. 첫 번째 LangChain 프로젝트」 › 4-2) load_and_split.py 작성 아래에 실었습니다
05/prompt_template.py5~6쪽5차시 「5. Prompt Template 사용하기」 아래에 실었습니다

실행 흐름

출력
notice.txt → TextLoader
TextLoader → Document
Document → Splitter
Splitter → 조각들
조각들 → PromptTemplate

실습 순서

실습/src/05에서 다음 순서로 실행합니다.

Bash
python textloader.py
python load_and_split.py
python prompt_template.py

chunk_size를 80과 150으로 바꿔 조각 수가 어떻게 달라지는지 봅니다. 값을 바꾼 뒤에는 원본 150/30으로 되돌립니다.

스스로 확인

  • Document의 두 칸을 말할 수 있는가?
  • overlap이 없을 때 문장이 어떻게 잘리는가?
  • PromptTemplate의 빈 칸은 언제 채워지는가?

코드 설명

  • TextLoader("../../data/notice.txt", encoding="utf-8") 의 encoding 은 파일을 어떤 글자 규칙으로 읽을지 정합니다. 한글 파일을 읽을 때 빼먹으면 Windows에서 읽기 오류가 나기 쉽습니다.
  • documents[0].page_content 에 [0]이 붙는 까닭은 load() 가 Document 하나가 아니라 리스트를 돌려주기 때문입니다. TXT 파일 하나를 읽었으므로 실행 결과의 문서 길이가 1입니다.
  • chunk_size = 150 이라 안내문이 조각 2개로 나뉘었습니다. [1]의 끝 "이 경우 배송비는 당사가 부담합니다. 3. 고객센터"가 [2]의 맨 앞에 다시 나오는데, 이것이 chunk_overlap = 30 이 만든 겹침입니다.
  • chuncks, chunck 는 chunks 를 잘못 적은 이름이지만, 처음부터 끝까지 같은 이름으로 쓰면 문제없이 돌아갑니다. 따라 치다가 한 곳만 바르게 고치면 NameError 가 납니다.
  • input_variables=["doc", "q"] 의 이름은 틀 안의 {doc}, {q} 와 한 글자도 다르지 않아야 합니다.
  • prompt.format(doc = ..., q = ...) 은 빈칸을 채운 문자열을 돌려줄 뿐 화면에 찍지 않습니다. 그래서 prompt_template.py 는 실행해도 아무것도 나오지 않습니다. 보고 싶으면 결과를 변수에 받아 맨 아래 # print(result) 자리에서 print 하시면 됩니다.
← 이전 절5차시 · 체크리스트와 과제다음 절 →5차시 · 퀴즈 1 — 본문과 출처로 Document 모양 딕셔너리 만들기