참고 자료
실습 데이터 파일
실습에 쓰는 파일은 교안과 함께 받은 data 폴더에 있습니다. 모두 연습용으로 만든 작은 가상 데이터이고, 실제 회사나 고객의 데이터가 아닙니다. 가상의 여행사 "구름다리여행"의 이름, 상품, 규정, 대화는 모두 지어낸 것입니다. 장이 추가되면 이 목록도 함께 늘어납니다.
파일 목록
| 파일 | 내용 | 크기 | 쓰는 곳 |
|---|---|---|---|
faq.csv | 구름다리여행의 자주 묻는 질문과 답 | 10행 3열 | 1장 실습 1, 3장 실습 1·3 |
user_questions.csv | 손님이 쓸 법한 말투의 질문과 사람이 붙인 의도 | 20행 2열 | 1장 실습 1, 3장 실습 1 |
travel_sentences.txt | 다음 낱말 맞히기 연습용 짧은 문장. 한 줄에 한 문장 | 60줄 | 1장 실습 2 |
chat_log.json | 손님과 여행 비서가 열 번 주고받은 대화(OpenAI 메시지 꼴) | 메시지 21개 | 1장 프로젝트, 4장 본문·실습 5·실습 6·프로젝트 |
travel_spots.csv | 지어낸 여행지 8곳의 지역, 특징, 어울리는 손님, 추천 계절, 예산 | 8행 6열 | 3장 프로젝트 |
trip_requests.csv | 손님이 쓴 여행 요청 글과 사람이 정리한 조건 | 10행 8열 | 4장 실습 1, 실습 2 |
trip_products.csv | 구름다리여행의 가상 상품 12개(코드, 이름, 지역, 박수, 가격, 남은 자리, 출발일) | 12행 7열 | 5장 본문, 실습 전체, 프로젝트 |
trip_notice.txt | 상품 예약 공지 다섯 줄 | 5줄 | 5장 실습 4·5, 프로젝트(MCP 서버가 읽음) |
travel_terms.pdf | 구름다리여행 여행 약관. 4쪽, 조항 16개 | 4쪽 | 6장 본문·실습 전체·프로젝트, 7장 실습 5·6, 프로젝트 |
rag_questions.csv | 약관 검색을 채점할 질문과 정답 조항 | 12행 5열 | 6장 실습 3·5, 프로젝트 |
solmaru_rules.pdf | 가상 회사 "솔마루상사"의 복무·출장 규정. 3쪽, 조항 12개 | 3쪽 | 8장 프로젝트 1 |
rules_questions.csv | 규정 도우미를 채점할 질문과 정답 조항 | 10행 4열 | 8장 프로젝트 1 |
network_notes.pdf | 가상의 정보통신 기초 수업 노트. 3쪽, 노트 10개 | 3쪽 | 8장 프로젝트 2 |
notes_questions.csv | 학습 도우미를 채점할 질문과 정답 노트 | 10행 4열 | 8장 프로젝트 2 |
실습이 만드는 파일은 이름이 out_ 으로 시작합니다.
| 파일 | 만드는 곳 | 쓰는 곳 |
|---|---|---|
out_rule_bot_result.csv | 1장 실습 1(규칙 챗봇의 채점 결과) | 3장 실습 3(규칙 챗봇과 견주기) |
out_next_word.json | 1장 실습 2(낱말 뒤에 온 낱말의 횟수표) | 1장 실습 4 |
out_chat_history.json | 1장 실습 5(가짜 모델과 주고받은 대화 기록) | 없음 |
out_ch02_requirements.txt | 2장 실습 1(쓰는 패키지와 판) | 2장 프로젝트 |
out_ch02_demo.env | 2장 실습 2(시험용 가짜 키를 담은 연습 파일) | 2장 실습 2 |
out_ch02_checklist.csv | 2장 프로젝트(내 PC 점검표). 키를 넣은 뒤 실행하면 생긴다 | 없음 |
out_ch03_faq_prompt.txt | 3장 실습 1(FAQ 를 채운 프롬프트) | 없음 |
out_ch03_qa_answers.csv | 3장 실습 3(Q&A 체인의 답). 키를 넣은 뒤 생긴다 | 없음 |
out_ch03_prompt_compare.csv | 3장 실습 4(프롬프트 세 가지의 답). 키를 넣은 뒤 생긴다 | 없음 |
out_ch03_ticket.json | 3장 실습 5(요약과 키워드를 담은 문의 카드) | 없음 |
out_ch03_spot_intro.csv | 3장 프로젝트(여행지 소개글). 키를 넣은 뒤 생긴다 | 없음 |
out_ch04_trip_schema.json | 4장 실습 1(여행 조건 틀의 JSON 스키마) | 없음 |
out_ch04_extracted.csv | 4장 실습 2(요청 글에서 뽑은 조건). 키를 넣은 뒤 생긴다 | 없음 |
out_ch04_sessions.json | 4장 실습 3(세션별 대화 기록) | 없음 |
out_ch04_window.csv | 4장 실습 5(토큰 상한마다 남는 메시지와 토큰) | 없음 |
out_ch04_summary.json | 4장 실습 6(앞부분 요약). 키를 넣은 뒤 생긴다 | 없음 |
out_ch04_strategy_compare.csv | 4장 프로젝트(세 메모리 전략 견주기). 키를 넣은 뒤 생긴다 | 없음 |
out_ch05_tool_schema.json | 5장 실습 1(도구 두 개의 설명서) | 없음 |
out_ch05_tool_log.json | 5장 실습 2(도구 실행기의 기록) | 없음 |
out_ch05_server.py | 5장 실습 4(상품 자료 MCP 서버 파일) | 5장 실습 5, 프로젝트 |
out_ch05_mcp_tools.json | 5장 실습 4(MCP 서버의 도구 목록) | 없음 |
out_ch05_tool_usage.csv | 5장 프로젝트(질문마다 부른 도구). 키를 넣은 뒤 생긴다 | 없음 |
out_ch06_pages.csv | 6장 실습 1(쪽별 글자 수) | 없음 |
out_ch06_chunks.csv | 6장 실습 2(조항 단위로 나눈 조각) | 6장 실습 3·5, 프로젝트 |
out_ch06_hits.csv | 6장 실습 3(질문마다 검색 적중) | 6장 실습 5 |
out_ch06_faiss/ | 6장 실습 3(연습용 임베딩으로 만든 FAISS 색인 폴더) | 6장 실습 4 |
out_ch06_qa_log.json | 6장 실습 4(근거와 답의 기록) | 없음 |
out_ch06_faiss_openai/ | 6장 실습 5(진짜 임베딩 색인). 키를 넣은 뒤 생긴다 | 없음 |
out_ch06_embed_compare.csv | 6장 실습 5(두 임베딩의 적중 견주기). 키를 넣은 뒤 생긴다 | 없음 |
out_ch06_bot_answers.csv | 6장 프로젝트(약관 챗봇의 답). 키를 넣은 뒤 생긴다 | 없음 |
out_ch07_hello.py, out_ch07_chat.py, out_ch07_stream.py | 7장 실습 1~3(Streamlit 앱 파일) | 없음 |
out_ch07_openai_chat.py | 7장 실습 4(진짜 모델을 붙인 앱 파일) | 없음 |
out_ch07_docbot.py | 7장 실습 5(문서 챗봇 앱 파일) | 없음 |
out_ch07_deploy/ | 7장 실습 6(배포할 폴더: 앱, requirements.txt, .gitignore, secrets 견본, 약관 복사본) | 7장 프로젝트 |
out_ch07_deploy_bad/, out_ch07_deploy_check.csv | 7장 프로젝트(실수를 넣은 폴더와 점검 결과) | 없음 |
out_ch08_rules_eval.csv | 8장 프로젝트 1(평가 질문마다 검색 적중) | 없음 |
out_ch08_rules_bot.py, out_ch08_rules_app.py | 8장 프로젝트 1(규정 도우미의 부품 파일과 화면 파일) | 8장 프로젝트 1 |
out_ch08_rules_demo.csv | 8장 프로젝트 1(시연 점검표) | 없음 |
out_ch08_notes_faiss/, out_ch08_notes_eval.csv | 8장 프로젝트 2(진짜 임베딩 색인과 평가). 키를 넣은 뒤 생긴다 | 없음 |
out_ch08_gureum_bot.py, out_ch08_gureum_app.py, out_ch08_gureum_demo.csv | 8장 프로젝트 3(종합 상담 챗봇의 부품·화면 파일과 시연 점검표). 키를 넣은 뒤 생긴다 | 없음 |
faq.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 의도 | 질문의 갈래. 예약변경, 환불, 수하물, 여권, 결제, 집합, 보험, 상담시간, 단체, 반려동물 | 글자 |
| 질문 | 대표 질문 | 글자 |
| 답 | 구름다리여행이 정해 둔 답(지어낸 규정) | 글자 |
user_questions.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 질문 | 손님이 쓸 법한 말투로 지어낸 질문 | 글자 |
| 의도 | 사람이 붙인 정답 의도. faq.csv 의 의도 열 가운데 하나이고, FAQ 에 없는 질문은 "없음" | 글자 |
travel_sentences.txt
"제주도 여행은 즐겁습니다"처럼 낱말 서너 개로 된 문장이 한 줄에 하나씩 있습니다. 장소(제주도, 부산, 강릉, 경주)와 문장 틀 다섯 가지를 정한 비율로 골라 만들었습니다. "제주도 바다는"으로 시작하는 문장은 한 번도 나오지 않습니다. 1장 실습 4에서 "기록에 없는 낱말은 온도를 올려도 나오지 않는다"를 보이는 데 씁니다.
chat_log.json
{"role": "…", "content": "…"} 사전의 목록입니다. 첫 메시지가 시스템 메시지이고, 그 뒤로 사용자(user)와 어시스턴트(assistant) 메시지가 번갈아 열 쌍 있습니다. 제주도 2박 3일 가족 여행을 상담하는 지어낸 대화입니다.
| 키 | 뜻 |
|---|---|
| role | 역할. system, user, assistant 가운데 하나 |
| content | 메시지의 내용 |
travel_spots.csv
여행지 이름은 지어낸 것이고, 지역은 넓게만 적었습니다. 실제 관광지와 관계가 없습니다.
| 열 | 뜻 | 유형 |
|---|---|---|
| 여행지 | 지어낸 여행지 이름 | 글자 |
| 지역 | 넓은 지역(예: 제주 동쪽 해안, 강원 산간) | 글자 |
| 특징 | 그곳의 특징 한 줄 | 글자 |
| 어울리는 손님 | 가족, 연인, 혼자 등 | 글자 |
| 추천 계절 | 봄, 여름, 가을, 겨울 | 글자 |
| 예산 | 한 사람 1박의 대략적인 비용(만 원) | 정수 |
trip_requests.csv
손님이 쓴 요청 글과, 사람이 그 글을 읽고 정리한 정답 조건입니다. 5번(한 사람당 예산), 8번(제주), 9번(일주일 = 6박)은 헷갈리기 쉽게 일부러 넣은 행입니다.
| 열 | 뜻 | 유형 |
|---|---|---|
| 번호 | 요청 번호 | 정수 |
| 요청 | 손님이 쓴 글 | 글자 |
| 목적지 | 가려는 곳 | 글자 |
| 박수 | 묵는 밤의 수 | 정수 |
| 어른, 아이 | 일행의 사람 수 | 정수 |
| 예산 | 일행 전체의 예산(만 원) | 정수 |
| 관심사 | 바라는 것. 여럿이면 ; 로 잇는다 | 글자 |
trip_products.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 상품코드 | P01~P12 | 글자 |
| 상품명, 지역 | 지어낸 상품 이름과 넓은 지역 | 글자 |
| 박수 | 묵는 밤의 수 | 정수 |
| 가격 | 어른 한 사람 기준(만 원) | 정수 |
| 남은자리 | 남은 좌석. 0 이면 매진(P02, P08) | 정수 |
| 출발일 | 출발 날짜 | 글자 |
travel_terms.pdf
가상의 "구름다리여행 여행 약관" 4쪽입니다. 쪽마다 맨 위에 머리글 한 줄과 장 제목이 있고, 제1조부터 제16조까지 예약·취소·여행 중 규정·보험을 적었습니다. 내용은 faq.csv 의 답과 맞췄습니다. tools/parts/ch06_data.py 가 fpdf2 와 Windows 의 맑은 고딕 글꼴로 만듭니다.
rag_questions.csv
| 열 | 뜻 | 유형 |
|---|---|---|
| 번호 | 질문 번호 | 정수 |
| 질문 | 손님 말투로 지어낸 질문 | 글자 |
| 정답조항 | 답이 든 조항(예: 제5조) | 글자 |
| 주제, 핵심어 | 질문의 갈래와, 답에 들어가야 할 낱말 | 글자 |
8차시의 문서와 평가 질문
solmaru_rules.pdf 와 network_notes.pdf 는 travel_terms.pdf 와 같은 방식(fpdf2, 맑은 고딕, 고정한 만든 날짜)으로 만든 가상 문서입니다. 솔마루상사는 지어낸 회사이고, 수업 노트는 정보통신 기초 사실(OSI 7계층, TCP, IP 주소, 포트 번호 등)을 짧게 적은 연습용 노트입니다.
| 열 | 뜻 | 유형 |
|---|---|---|
| 번호 | 질문 번호 | 정수 |
| 질문 | 지어낸 질문 | 글자 |
| 정답조항 / 정답노트 | 답이 든 조항(예: 제2조)이나 노트(예: 노트 1) | 글자 |
| 핵심어 | 답에 들어가야 할 낱말 | 글자 |
파일을 다시 만들려면
데이터는 tools/make_data.py 로 만들었습니다. 2장부터의 데이터 함수는 tools/parts/chNN_data.py 에 있고, make_data.py 가 읽어 함께 만듭니다. 난수 씨앗을 고정해 두어서 다시 실행해도 같은 파일이 나옵니다.
python tools/make_data.py