LangChain 챗봇실습 코드 사용 안내← 이전목차다음 →MetaContents

과정 안내

실습 코드 사용 안내

실습 코드를 직접 돌리기 전에 장마다 무엇이 필요한지 한곳에 모았습니다. API 키가 필요한지, 무엇을 설치하고 받아 두어야 하는지, 앞의 어떤 실습을 먼저 돌려야 하는지를 표로 봅니다. 설치 방법은 환경설정에, 데이터 파일의 설명은 실습 데이터에 있습니다.

먼저 알아 둘 것

  • 작업 폴더는 data 폴더입니다. 과목 폴더를 C:\chatbot-course 로 정했다면 C:\chatbot-course\data 입니다(환경설정의 "작업 폴더 정하기"). 실습 코드는 파일 이름만 적어 읽고 쓰므로 cd data 로 들어간 뒤 실행합니다. API 키 파일 .env 는 과목 폴더에 두고, 코드의 find_dotenv(usecwd=True) 가 data 폴더에서 위로 올라가며 찾습니다.
  • 실습 코드 파일: 원고의 실습과 프로젝트 코드는 장마다 code/chNN/ 에 파일로도 있습니다(lab1.py, project1_solution.py 등). 프로젝트 풀이는 solutions/ 에 모여 있습니다.
  • out_ 로 시작하는 파일은 실습이 만듭니다. 없다는 오류가 나면 아래 "먼저 할 실습"을 먼저 돌립니다. 5장의 MCP 서버 파일(out_ch05_server.py)과 7장의 앱 파일(out_ch07_*.py)도 실습 코드가 글로 써서 만듭니다.
  • 패키지는 `requirements.txt` 로 설치합니다. pip 대신 uv 를 써도 됩니다. uv 를 쓰는 법은 환경설정의 부록에 있고, 같은 목록에서 같은 판이 설치됩니다. uv 가 만든 가상환경에는 pip 가 없으므로 uv pip install 로 설치합니다.
  • 데이터는 다시 만들 수 있습니다. tools/make_data.py 가 씨앗을 고정해 만들어서 다시 실행해도 같은 파일이 나옵니다. 약관 PDF 는 Windows 의 맑은 고딕 글꼴로 만들므로 다른 OS 에서는 data 폴더의 PDF 를 그대로 씁니다.
  • 예상 출력 절이 있습니다. 교안을 만든 PC 에는 API 키가 없어서, 모델을 부르는 절은 실행하지 않고 유추한 예상 출력을 실었습니다. 그런 절은 첫 문단 끝에 그렇게 적혀 있습니다. 키를 넣고 돌리면 답의 글과 숫자가 원고와 조금씩 다릅니다.

API 키와 비밀 값

1장은 진짜 키 없이 모두 돌아갑니다. 2장부터는 모델이나 진짜 임베딩을 부르는 절만 .env 의 OpenAI API 키가 있어야 돌아가고, 나머지 절은 가짜 모델(FakeListChatModel)과 연습용 임베딩(BigramEmbeddings)으로 키 없이 돌아갑니다.

장나오는 값진짜 키가 필요한가어떻게 다루나
1장없음아니요가짜 모델과 tiktoken 만 쓴다
2장OPENAI_API_KEY, OPENAI_MODEL실습 3·4·5, 프로젝트만 예.env 에 넣고 load_dotenv 로 읽는다. 실습 2의 연습 파일은 지어낸 시험용 키 sk-test-0000… 을 쓴다
3장OPENAI_API_KEY, OPENAI_MODEL실습 3·4, 프로젝트만 예2장와 같은 준비 코드
4장OPENAI_API_KEY, OPENAI_MODEL실습 2·4·6, 프로젝트만 예2장와 같은 준비 코드
5장OPENAI_API_KEY, OPENAI_MODEL실습 3·5, 프로젝트만 예MCP 서버는 키를 쓰지 않는다. 서버가 data 폴더 밖(.env 등)을 읽지 못하게 막는다
6장OPENAI_API_KEY, OPENAI_MODEL, OPENAI_EMBED_MODEL실습 5, 프로젝트만 예임베딩 모델 이름은 없으면 text-embedding-3-small 을 쓴다
7장st.secrets["OPENAI_API_KEY"] 또는 .env실습 4만 예클라우드에서는 Secrets 칸, 내 PC 에서는 .env 에서 읽는다. 배포 폴더에는 값이 발급받은_인증키 인 견본만 넣는다. 프로젝트의 실수 폴더는 지어낸 가짜 키(sk-proj- 뒤에 0)를 쓴다
8장OPENAI_API_KEY, OPENAI_MODEL, OPENAI_EMBED_MODEL프로젝트 2·3만 예프로젝트 1은 연습용 임베딩과 가짜 모델로 키 없이 돈다. 프로젝트 3의 앱은 키가 없으면 경고를 띄우고 멈춘다

키를 이 채팅이나 코드, 원고에 붙여 넣지 않습니다. 원고에는 발급받은_인증키 라는 자리표시만 있습니다.

장별 실습 준비표

새 패키지는 그 장에서 처음 쓰는 것입니다. 환경설정에서 모두 한 번에 설치했다면 따로 설치할 것은 없습니다. 이 과정에는 GPU 가 필요한 실습이 없습니다.

장새 패키지받아 둘 것장비먼저 할 실습
1장langchain, tiktoken, numpy, pandas, matplotlibtiktoken 의 토큰 사전 o200k_base(처음 실행할 때 저절로 받는다, 인터넷 필요)안 씀실습 4 ← 실습 2
2장langchain-openai, openai, python-dotenv없음안 씀없음
3장없음없음안 씀실습 3 ← 1장 실습 1
4장pydantic(langchain 과 함께 설치된다)없음안 씀없음
5장mcp, langchain-mcp-adapters없음안 씀실습 5, 프로젝트 ← 실습 4
6장langchain-community, langchain-text-splitters, langchain-classic, pypdf, faiss-cpu없음안 씀실습 3 ← 실습 2, 실습 4 ← 실습 3, 실습 5 ← 실습 2·3, 프로젝트 ← 실습 2
7장streamlit없음안 씀(브라우저로 볼 때 포트 8501)프로젝트 ← 실습 6
8장없음없음안 씀없음. 프로젝트마다 부품 파일(out_ch08_rules_bot.py 등)을 먼저 쓰고 화면 파일이 sys.path.insert 로 불러 쓴다
  • 7장 실습은 브라우저를 띄우지 않고 Streamlit 의 AppTest 로 화면을 시험합니다. 직접 보려면 streamlit run out_ch07_chat.py 처럼 실행해 브라우저에서 http://localhost:8501 을 엽니다.
  • 6장와 7장의 연습용 임베딩은 따로 받을 모델이 없습니다. 진짜 임베딩(OpenAIEmbeddings)은 OpenAI 서버에서 계산하므로 받아 둘 파일이 없고 키만 있으면 됩니다.

실행하지 않은 안내 코드

장안내 코드돌리려면
환경설정Set-ExecutionPolicy -Scope CurrentUser RemoteSigned가상환경이 켜지지 않을 때만. 회사 PC 는 관리자에게 먼저 묻는다
1장프로젝트의 "실제 데이터로 해 보려면"(대화 기록 내보내기, 공개 데이터)각 서비스의 약관과 개인정보를 확인한 뒤
3장, 4장, 5장, 6장, 8장프로젝트의 "실제 데이터로 해 보려면"내 자료나 공개 자료와 API 키
2장부터 8장까지모델을 부르는 예상 출력 절.env 에 OpenAI API 키
7장streamlit run, git init·git push 등 배포 명령, Streamlit Community Cloud 에서 앱 만들기GitHub 계정과 Streamlit Community Cloud 계정. 메뉴 이름은 공식 문서에서만 확인했다

장을 건너는 의존과 순서

뒤 장앞 장에서 가져오는 것없으면
3장 실습 3out_rule_bot_result.csv(규칙 챗봇의 채점 결과)1장 실습 1을 먼저 돌린다
7장 실습 5·6, 프로젝트travel_terms.pdf(6장와 같은 약관), BigramEmbeddings 코드PDF 는 data 폴더에 처음부터 있다. 앱이 PDF 에서 직접 색인을 만들므로 6장 실습을 먼저 돌리지 않아도 된다
8장 프로젝트 3faq.csv, travel_terms.pdf, trip_products.csv모두 data 폴더에 처음부터 있어 앞 장 실습을 먼저 돌리지 않아도 된다

장 안에서 앞 실습의 파일을 쓰는 곳은 위 준비표의 "먼저 할 실습"과 장마다의 "실습 지도"에 있습니다.

오래 걸리는 곳

교안을 만든 PC 에서 걸린 시간은 재어 싣지 않았습니다. 아래는 다른 실습보다 기다림이 생기는 곳입니다.

곳까닭
1장 실습 3 등 tiktoken 을 처음 쓰는 곳토큰 사전을 인터넷에서 처음 받아 온다. 한 번 받으면 다음부터는 PC 에 저장된 것을 쓴다
5장 실습 4·5, 프로젝트MCP 서버 프로세스를 띄우고 연결한다. 도구를 부를 때마다 새 연결을 연다
6장 실습 5, 프로젝트진짜 임베딩으로 조각과 질문을 모두 OpenAI 서버에 보내 숫자로 바꾼다
7장 실습 5·6, 프로젝트, 8장 프로젝트앱이 처음 켜질 때 약관 PDF 를 읽고 색인을 만든다. st.cache_resource 덕분에 두 번째부터는 다시 만들지 않는다
모델을 부르는 모든 절질문마다 OpenAI 서버를 다녀온다. 네트워크와 서버 사정에 따라 걸리는 시간이 다르다
← 이전과정 로드맵과 STEP 요약다음 →1장 · 먼저 큰 그림부터