본문으로 건너뛰기
페이지 목차
이 페이지에서 검색

로컬 LLM

이 페이지에 묻기

로컬 LLM · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.

생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.

LOCAL · LLM

로컬 LLM

생성 수정

로컬 모델 실행과 GPU·메모리 이해부터 서빙·RAG·도구 호출·업무형 앱 구현까지 차례로 살펴봅니다.

42개 문서 · 5일차 · 34 / 42

33차시 · 프로젝트 요구사항 분석

지도 위치 : 5일차 · 프로젝트 1단계 · 다섯 층 전체의 설계도 | 이전: 32차시 AI 애플리케이션 통합 | 다음: 34차시 LLM 모델 선정 및 최적화 키워드 : 업무 시나리오 선정, 사용자 요구사항 분석, 서비스 기능 정의

이 차시를 다 읽으면

  1. 5일차 여덟 차시가 각각 무엇을 산출 하고, 그 산출물이 다음 차시의 입력 이 되는 순서를 말할 수 있다.
  2. 내 업무 시나리오가 로컬 LLM에 맞는지 판별 기준 표 로 가를 수 있다.
  3. "빠르게", "정확하게" 같은 요구를 측정 가능한 완료 기준 으로 바꿀 수 있다.
  4. 평가셋 을 프로젝트의 첫 산출물로 만들고, 가명 처리 규칙을 정할 수 있다.
  5. 기능마다 완료 기준을 형식 기준과 의미 기준으로 따로 적을 수 있다.
  6. 범위 밖 목록 을 왜 따로 쓰는지 설명할 수 있다.

0. 이 차시의 판별 축

#축왼쪽 (0)오른쪽 (1)이 축으로 갈리는 것큰 축 (README 5장)
1형식이 맞나 뜻이 맞나형식 기준 (JSON이 파싱되는가, 분류값이 목록 안에 있는가)의미 기준 (분류가 정답과 같은가, 주문번호가 본문에 실제로 있는가)완료 기준을 두 줄로 적어야 하는 이유⑧ 구문론 ↔ 의미론
2말인가 숫자인가형용사 요구 ("빠르게", "정확하게")완료 기준 ("동시 10명 TTFT p95 < 1초")검사로 끝을 판정할 수 있는가이 차시의 축 (3절)
3어디서 실행되는가로컬클라우드 API이 시나리오를 로컬로 할 이유가 있는가④ 로컬 ↔ 원격
4사람이 손을 대는가사람이 확정자동 실행어느 기능에 사람이 남는가사람이 손을 대는가 (파생 축)

앞에서 이어집니다 — 1~4일차는 다섯 층을 하나씩 깊게 팠습니다. 5일차는 README 4장의 "넓게 → 깊게 → 다시 넓게 "의 마지막 칸입니다. 그 첫 차시인 33차시는 새로 배우는 시간이 아니라, 앞에서 배운 1차시(로컬이 맞는가) , 6 · 28 · 31차시(평가셋) , 29차시(형식 ↔ 내용) 를 문서 한 장으로 회수 하는 시간입니다.


1. 5일차 전체 지도 — 산출물이 다음 차시의 입력이다

1.1 여덟 단계와 산출물 ⭐

차시단계이 단계의 산출물다음에 누가 쓰나회수하는 앞 차시
33요구사항시나리오 한 장, 요구사항표(ID · 완료 기준), 평가셋 v1 , 범위 밖 목록34(품질 하한), 36(점수표), 39(SLO)1, 6, 28, 31
34모델 선정VRAM 예산표, 비교 매트릭스, 결정 기록35(기동 옵션)9~16
35서빙기동 명령 · 서비스 파일, API 테스트 체크리스트36(호출 대상)17~20
36AI 기능프롬프트 파일, 출력 스키마, 평가 점수표 before/after37(화면에 띄울 결과)28, 29, 31
37애플리케이션상담원 화면, 스트리밍, 세션 분리, 행동 시험 결과38(도구를 붙일 자리)25~27
38도구 · 통합도구 정의, 권한 규칙, 도구 호출 로그, 통합 시나리오 표39(전체 흐름 측정)30, 32
39성능부하 테스트 표, before/after, 품질 회귀 결과40(성능 표)14, 22, 23
40발표발표 자료, 정산표, 개선사항(KPT)—전체

이 표를 세로로 읽으면 평가셋이 세 번 등장합니다. 34차시에 모델을 거르고, 36차시에 프롬프트를 고르고, 39차시에 최적화가 품질을 망가뜨리지 않았는지 확인합니다. 그래서 평가셋이 33차시의 가장 중요한 산출물 입니다(5절).

⭐ 이 순서는 AI에게 개발을 맡길 때의 기본 순서이기도 합니다. ① 무엇을 만들지 적은 문서(md 파일)를 먼저 쓰고, 이 단계에서는 코드를 쓰지 않게 한다 → ② 범위와 경계(무엇을 하고 무엇을 하지 않는가)를 확정한다 → ③ 그 문서를 AI에게 함께 주고 코드를 만들게 한다. 33차시의 요구사항 문서가 그 ①번 문서입니다. 이 문서 없이 AI에게 "문의봇 만들어줘"라고 하면, AI가 범위와 기준을 대신 정합니다.

1.2 💡 내 업무로 바꿔 적용하는 법

이 노트의 예제는 README 8.1절의 문의봇 입니다. 하지만 표의 칸은 그대로 두고 내용만 바꾸면 어떤 업무에도 씁니다.

문의봇의 자리내 업무로 바꾸면 (예)
고객 문의 메일민원 접수 글, 사내 요청 티켓, 회의록, 보고서 초안
분류값 5개민원 유형, 티켓 우선순위, 부서
추출 필드(고객명 · 주문번호 …)접수번호, 요청 부서, 마감일
주문 조회 도구사내 시스템의 읽기 전용 조회 API
상담원 10명내 업무의 실제 동시 사용자 수

2. 업무 시나리오 선정 — 로컬 LLM에 맞는 일인가

2.1 정의

업무 시나리오 — [요구사항 문서의 출발점]인데, [ 누가 · 어떤 입력을 받아 · 무엇을 만들고 · 누가 확인하는지를 한 흐름으로 적는다 ]는 점에서 기능 이름만 나열한 기능 목록과 구별된다.

"요약 기능, 분류 기능"은 기능 목록입니다. "상담원이 문의 메일을 붙여넣으면 분류 · 추출 결과와 답변 초안이 뜨고, 상담원이 고쳐서 확정한다"가 시나리오입니다. 확인하는 사람 이 문장 안에 들어 있어야 합니다.

2.2 ⭐ 판별 기준 표 — 1차시 회수

앞에서 배운 로컬이 맞지 않는 경우(1차시 3.2) 와 SLM (1차시 1.1 — GPU 한 장으로 돌릴 수 있는 작은 언어 모델) 의 한계 를 시나리오 선정 기준으로 바꾼 표입니다. SLM은 업무 하나로 좁힌 일(분류 · 추출 · 요약)은 잘하지만, 여러 단계를 거치는 어려운 추론이나 학습 때 보지 못한 최신 지식에는 약합니다. 아래 표의 마지막 두 줄이 그 한계입니다.

기준로컬에 적합 (1)로컬에 부적합 (0)문의봇은
입력 · 출력의 종류텍스트 중심이미지 · 음성이 핵심⭕ 메일 텍스트
반복성같은 형태의 일이 매일 반복매번 다른 일, 한 달에 몇 번⭕ 하루 수백 건
사람 검토 가능성결과를 사람이 보고 고칠 수 있음결과가 바로 밖으로 나감⭕ 상담원이 확정
데이터 민감도개인정보 · 영업비밀이 섞임공개 정보뿐⭕ 이름 · 연락처 · 주소
필요한 추론 수준업무 하나로 좁혀짐최고 수준의 다단계 추론⭕ 분류 · 추출 · 초안
필요한 지식입력 안에 답의 재료가 있음실시간 외부 지식 · 최신 정보 필요⭕ 메일 본문 + 주문 조회

⭐ 위 네 줄(텍스트 · 반복 · 사람 검토 · 민감)이 모두 1 이고 아래 두 줄이 0이 아니면 로컬 LLM 프로젝트로 좋은 시나리오입니다. 앞에서 배운 로컬 LLM이 필요한 다섯 가지 이유(1차시 3.1) 중 "데이터 보안"이 결정타인 경우입니다.

2.3 반례 — 이런 시나리오는 이번 프로젝트로 고르지 마세요

시나리오왜 이번엔 아닌가
"사내 규정을 물으면 답하는 챗봇"답의 재료가 입력 밖(규정 문서)에 있음 → RAG가 필요 . RAG(검색 증강 생성)는 질문과 관련된 문서를 먼저 찾아 프롬프트에 함께 넣어 주는 기법으로, 이 과정의 범위 밖입니다(README 1.2, 40차시 예고)
"뉴스를 보고 오늘 할 일을 정해 주는 비서"실시간 외부 지식 필요
"계약서를 읽고 최종 법률 판단"최고 수준 추론 + 사람 검토 없이 쓰면 위험
"한 달에 열 번 쓰는 보고서 요약"반복이 적어 GPU 선불 비용을 회수하지 못함 (1차시 3.2)

2.4 시나리오 한 장 양식

[시나리오 이름]  문의봇 — 고객 문의 1차 처리 도우미
[사용자]        상담원 10명 (동시 사용)
[입력]          고객 문의 메일 본문 (한국어, 길면 수천 자)
[출력]          ① 분류  ② 추출 필드  ③ 3줄 요약  ④ 답변 초안
[사람이 확인]    상담원이 ①~④를 보고 고친 뒤 '확정'을 누름. 자동 발송 없음
[도구]          주문 조회 (읽기 전용)
[왜 로컬인가]    본문에 개인정보 → 외부 API 전송 불가 (1차시 3.1 이유 1)
[빈도]          하루 약 N건 (실제 숫자로 채울 것)

🔍 읽는 포인트 : [사람이 확인] 줄이 비어 있으면 그 시나리오는 아직 덜 쓴 것입니다. 0절 축 4의 어느 쪽인지 처음부터 정합니다.


3. ⭐ 요구사항을 측정 가능한 완료 기준으로

3.1 정의

완료 기준 (Acceptance Criteria) — [요구사항의 일부]인데, [ 측정 방법과 통과 숫자가 함께 적혀 있어 느낌이 아니라 검사로 끝을 판정할 수 있다 ]는 점에서 바람을 적은 요구 문장과 구별된다.

좋은 요구사항은 두 가지를 갖춥니다.

성질뜻❌ → ⭕
명확성읽는 사람마다 다르게 해석할 여지가 없다"빠르게 처리" → "응답 시간 40% 단축"
검증성끝났는지를 검사로 판정할 수 있다"잘 되면 됨" → "평가셋 정확도 90% 이상"

그리고 완료 기준에는 "정상적으로 쓰면 동작하는가"만 넣지 않습니다. "잘못 쓰이거나 공격당했을 때 막는가" 도 넣습니다. 정상 입력으로만 시험한 서비스는, 실제 운영에서 처음 들어온 이상한 입력에 무너집니다. 아래 표의 "본문에 없는 주문번호 생성 0건", "되돌릴 수 없는 작업 자동 실행 0건"이 그런 기준입니다.

3.2 변환표 — 사용자의 말 → 완료 기준

사용자의 말무엇으로 재나완료 기준 (목표 예시)어디서 재나
"빠르게"TTFT (첫 글자까지)동시 10명에서 TTFT p95 < 1초39차시 (22차시 방식)
"답이 술술 나오게"TPOT (토큰 간 시간)동시 10명에서 TPOT p95 < 목표값39차시
"정확하게 분류"분류 정확도평가셋 분류 정확도 90% 이상36차시
"주문번호를 놓치지 말고"필드별 정확도주문번호 추출 정확도 95% 이상, 본문에 없는 주문번호 생성 0건36차시
"형식이 깨지지 않게"JSON 파싱 · 스키마 검증 성공률평가셋 전체에서 100%29, 36차시
"여러 명이 같이"동시 요청 오류율동시 10명에서 오류 0건39차시
"개인정보가 밖으로 안 나가게"외부 전송 경로외부 API 호출 0건, 모델 서버 외부 노출 없음35차시
"마음대로 취소하지 않게"되돌릴 수 없는 작업의 자동 실행0건 (사람 버튼으로만)38차시

⚠️ 표의 숫자는 목표 입니다. 아직 아무것도 재지 않았습니다. 34 · 39차시에서 실제로 재 보고 목표가 비현실적이면 고쳐도 됩니다. 단, 고친 이유를 기록 합니다. 숫자를 조용히 바꾸면 완료 기준이 다시 "느낌"이 됩니다.

💡 지표 이름(TTFT, TPOT, p95)은 앞에서 배운 14 · 22차시 그대로입니다. 33차시에서 처음 정하는 것은 통과선 뿐입니다.

3.3 요구사항 ID — 원자성과 추적성

요구사항마다 ID를 붙입니다. 두 가지를 얻기 위해서입니다.

  • 원자성 — 요구사항 한 줄에 요구 하나만 담는다. "분류하고 추출한다"처럼 둘을 묶으면, 하나만 통과했을 때 완료인지 아닌지 말할 수 없습니다.
  • 추적성 — 요구사항 → 구현(프롬프트 파일 · 코드) → 측정 결과를 같은 ID로 따라갈 수 있다 . 40차시 발표에서 "FR-01은 어디서 어떻게 확인했나"에 바로 답할 수 있게 됩니다.
ID구분요구사항완료 기준측정 차시
FR-01기능문의 분류 (5개 값)형식: 5개 값 중 하나 100% / 의미: 정확도 90%+36
FR-02기능정보 추출 (고객명 · 주문번호 · 연락처 · 요청사항)형식: 스키마 통과 100% / 의미: 필드별 정확도, 지어낸 값 0건36
FR-03기능3줄 요약형식: 3문장 이내 / 의미: 사람 루브릭 통과율36
FR-04기능답변 초안 (스트리밍)형식: 존댓말 · 길이 / 의미: 상담원 수정 없이 확정한 비율36, 37
FR-05기능주문 조회 도구남의 주문 조회 0건, 없는 주문번호에 "없음" 응답38
NFR-01성능동시 10명TTFT p95 < 1초, 오류 0건39
NFR-02보안데이터 외부 유출 없음외부 호출 0건, API 키 필수35

FR (Functional Requirement, 기능 요구사항) — [요구사항]인데, [ 시스템이 무엇을 하는가 ]를 적는다는 점에서, 어떻게 · 얼마나 잘 하는가 (속도 · 보안 · 가용성)를 적는 NFR(비기능 요구사항) 과 구별된다.

앞으로 다시 만납니다 — 36차시에서 프롬프트 파일 맨 위에 FR-01 같은 ID를 주석으로 답니다(3.3절의 추적성). 40차시 발표의 성능 표는 NFR-01 줄을 그대로 채운 것입니다.


4. 서비스 기능 정의 — 4일차 기능 중에서 고르기

4.1 4일차 메뉴판

4일차 기능차시문의봇에서 쓰는 곳이번에 넣나
OpenAI 호환 API 호출25모든 기능의 바탕⭕
스트리밍26답변 초안이 흘러나오게⭕
대화 (기록 관리)27상담원이 "더 공손하게" 같은 후속 요청선택
프롬프트 기반 기능28요약 · 분류 지시문⭕
구조화 출력29분류 · 추출을 JSON 스키마로⭕
도구 호출30주문 조회⭕ (읽기 전용만)
업무형 앱31요약 · 분류 · 추출 · 생성 네 기능 묶음⭕
통합32다섯 층을 한 서비스로⭕

4.2 ⭐ 축 ⑧ — 형식 기준과 의미 기준을 따로 적기

앞에서 배운 29차시 의 핵심 문장은 "형식이 맞아도 내용이 틀릴 수 있다"였습니다. 완료 기준도 그래서 두 줄 입니다.

기능형식 기준 (구문)의미 기준 (의미)누가 판정하나
분류정해진 5개 값 중 하나인가평가셋 정답과 같은가코드 / 평가셋
추출필드가 다 있는가, 주문번호가 정해진 패턴인가그 값이 본문에 실제로 있는가코드 / 평가셋
요약3문장 이내인가, 필수 항목(문의 유형 · 요청)이 들어 있는가사실을 왜곡하지 않았는가코드 / 사람 루브릭
답변 초안존댓말인가, 길이 범위 안인가회사 정책에 맞는가, 약속하면 안 되는 것을 약속하지 않았는가코드 / 상담원

❌ "JSON이 잘 나오니 추출 기능 완료" — 형식 기준만 통과한 것입니다. ⭕ "스키마 통과 100%, 주문번호 정확도 96%, 지어낸 주문번호 0건" — 두 줄 다 적힌 완료입니다.

⭐ 형식 기준은 코드가 판정 할 수 있고, 의미 기준은 평가셋이나 사람 이 판정합니다. 기능을 더 꼼꼼히 보고 싶으면 이 표에 칸을 늘리면 됩니다. 쓸 만한 칸은 다섯 가지입니다 — 형식 (스키마 통과), 근거 일치 (답이 본문에 근거하는가, 31차시 3.1), 금지 사항 (약속하면 안 되는 말을 했는가), 인젝션 방어 (28차시 5절), 범위 이탈 (맡은 일 밖의 답을 했는가). 첫 칸만 코드가 판정하고, 나머지는 평가셋과 사람이 판정합니다.

4.3 범위 밖 목록

범위 밖 목록 (Out of Scope) — [요구사항 문서의 일부]인데, [ 하지 않기로 한 것을 명시해 둔다 ]는 점에서 아직 정하지 않은 것(미정)과 구별된다.

AI에게 구현을 맡기면 AI는 범위를 넓히는 쪽 으로 움직입니다. "로그인도 넣었습니다", "자동 발송 기능도 추가했습니다". 범위 밖 목록은 그것을 막는 가이드 , 즉 AI가 일하기 전에 읽게 하는 "여기까지만" 표지판입니다.

범위 밖이유나중에 어디서
사내 규정 검색 (RAG)이 과정 범위 밖 (README 1.2)40차시 예고
파인튜닝데이터 · 시간 부족40차시 예고
답변 자동 발송사람 확정이 원칙 (0절 축 4)—
주문 취소 · 환불 실행되돌릴 수 없는 작업38차시 (버튼으로 사람이)
로그인 · 회원 관리하루 프로젝트에는 과함. 세션 ID로 대체실제 운영 전에 따로
GPU 여러 장장비 한 대 기준40차시 예고

5. ⭐ 평가셋 — 프로젝트의 첫 산출물

5.1 정의와 왜 첫 번째인가

평가셋 (Evaluation Set) — [테스트 데이터]인데, [ 실제 업무 입력과 사람이 정한 기대 결과를 짝지어 고정해 둔다 ]는 점에서 그때그때 떠오르는 질문으로 해 보는 시험과 구별된다.

앞에서 배운 평가셋(6차시 5절) 이 출발점입니다. 처음부터 수백 건을 모을 필요는 없습니다. 20~50건 이면 모델 · 프롬프트 사이의 큰 차이는 충분히 보입니다. 1.1절 표에서 본 대로 평가셋은 34 · 36 · 39차시에 다시 쓰입니다. 모델을 고르기 전에 있어야 합니다. 모델을 먼저 고르고 평가셋을 나중에 만들면, 고른 모델이 잘하는 문제만 모이기 쉽습니다.

5.2 무엇을 담나

묶음건수 (예)왜 넣나
분류값별 평범한 문의분류값마다 5~10건정확도 계산의 바탕. 한 분류에 몰리지 않게 — 평가셋의 90%가 '배송지연'이면, 무조건 '배송지연'이라고 답하는 모델도 정확도 90%가 나옵니다. 분류값 사이의 건수가 크게 차이 나면(불균형) 정확도가 속입니다
긴 메일3~5건컨텍스트 잘림 확인 (13 · 27차시)
주문번호가 없는 문의3~5건모델이 지어내는지 확인
두 문의가 섞인 메일2~3건분류 경계
오타 · 반말 · 이모티콘2~3건실제 입력은 깨끗하지 않음
"이전 지시를 무시하고…" 문장이 섞인 메일2~3건프롬프트 인젝션 — 입력 안에 지시문을 숨겨 모델이 원래 규칙을 어기게 하는 공격(28차시 5절)
{"id": "E001", "input": "주문번호 20261128-0042 배송이 일주일째 안 와요...", "expected": {"category": "배송지연", "order_id": "20261128-0042", "customer_name": "고객A"}, "tags": ["평범"]}
{"id": "E017", "input": "환불해 주세요. 주문번호는 기억이 안 나요", "expected": {"category": "교환·반품", "order_id": null}, "tags": ["주문번호없음"]}

🔍 읽는 포인트 : expected 안의 "order_id": null — "없음"도 정답입니다. 모델이 여기에 번호를 채워 넣으면 지어낸 것 입니다. tags는 나중에 "어느 묶음에서 틀렸나"를 보기 위한 꼬리표입니다.

5.3 가명 처리 ⚠️

원본 항목가명 처리지킬 점
고객 이름"고객A", "고객B"같은 메일 안에서는 같은 가명
연락처010-0000-0001형식은 유지 — 추출 테스트가 형식을 봄
주소시 · 구까지만범위를 넓혀서 특정 개인을 가리킬 수 없게 만드는 비식별 처리. 업무 판단(지역별 배송 문제)에는 시 · 구로 충분합니다
주문번호형식이 같은 가짜 번호도구 목업 DB(38차시)와 번호를 맞춤

⚠️ 가명 처리 전의 원본을 코딩 도우미 AI 대화창에 붙여넣지 마세요. 코딩 도우미가 클라우드 서비스라면, 그 순간 "개인정보 때문에 로컬"이라는 이 프로젝트의 이유가 무너집니다. 가명 처리는 사람이 먼저 , 그다음에 AI에게 넘깁니다. 보관하지 않은 데이터는 유출될 수도 없습니다. 원본은 꼭 필요한 곳에만 두세요.

5.4 기대 결과는 사람이 씁니다

❌ "평가셋 정답도 AI가 만들어 줘" — 같은 계열 모델이 문제와 정답을 둘 다 만들면, 채점이 관대해집니다(README 9장 "품질 자가 채점"). 채점자가 응시자와 같은 사람이면 채점이 아닙니다. ⭕ 입력 수집 · 가명 처리 · JSONL 변환은 AI에게 맡기고, expected 칸은 업무를 아는 사람이 채웁니다.


6. 실습 — 맡기고 검수하기

이 차시는 문서를 만드는 단계 입니다. AI는 초안 작성자, 당신은 결정권자입니다.

지시

아래 [시나리오 메모]를 바탕으로 프로젝트 요구사항 문서 초안을 만들어줘.

목표: 로컬 LLM 기반 '문의봇'(고객 문의 요약·분류·추출·답변 초안 + 주문 조회 도구)의 요구사항 문서.
맥락: 상담원 10명 동시 사용, RTX 4090 24GB 한 대, 개인정보 때문에 외부 API 사용 불가.
제약:
- 요구사항마다 ID(FR-xx, NFR-xx)를 붙이고, 완료 기준은 반드시 '측정 방법 + 숫자'로 써.
- 기능 요구사항의 완료 기준은 [형식 기준 | 의미 기준] 두 칸으로 나눠 써.
- 숫자는 아직 측정 전이므로 전부 '목표(미측정)'라고 표시해. 측정값처럼 쓰지 마.
- 범위 밖 목록을 따로 만들어. 내가 쓰지 않은 기능을 범위 안에 추가하지 마.
- 평가셋 JSONL 양식(필드 이름과 예시 2줄)만 만들고, expected 값은 비워 둬.
보고 형식:
[ID | 구분 | 요구사항 | 형식 기준 | 의미 기준 | 측정 차시] 표 + 범위 밖 목록 표 + 평가셋 양식.

[시나리오 메모]
(2.4절 양식으로 쓴 내 시나리오를 붙여넣기 — 가명 처리된 것만)

받을 증거

  • 요구사항표 (ID · 형식 기준 · 의미 기준 칸이 다 채워진 것)
  • 범위 밖 목록
  • 평가셋 양식 파일 (expected가 비어 있는 것)

내가 직접 볼 것

볼 것왜 내가 보는가
완료 기준에 형용사 ("빠르게", "적절히", "자연스럽게")가 남아 있는가남아 있으면 39 · 40차시에 판정할 수 없습니다
AI가 내가 쓰지 않은 기능 을 범위 안에 넣었는가범위는 사업 판단 입니다
숫자에 '목표(미측정)' 표시가 있는가목표와 측정을 섞으면 40차시 발표에서 증명할 수 없습니다
평가셋 expected를 내가 직접 채웠는가정답의 주인은 업무를 아는 사람입니다
평가셋에 실명 · 실제 연락처 가 남아 있지 않은가5.3절. 한 건이라도 남으면 프로젝트의 전제가 깨집니다

산출물 체크리스트 (33차시)

  • 시나리오 한 장 (2.4절 양식, [사람이 확인] 줄 포함)
  • 로컬 적합성 판별표 (2.2절, 내 시나리오로 채움)
  • 요구사항표 (ID, 형식 기준 · 의미 기준, 측정 차시)
  • 성능 목표(SLO) 한 줄 이상 — 예: "동시 10명 TTFT p95 < 1초" → 39차시에서 씀
  • 범위 밖 목록
  • 평가셋 v1 (30건 이상, 묶음별 태그, 가명 처리 완료, expected는 사람이 작성)
  • 가명 처리 규칙표 (5.3절)

부록 A. 스스로 확인하기

#질문답이 있는 곳
15일차에 평가셋이 다시 쓰이는 세 차시와 각각의 용도는?1.1
2업무 시나리오를 유와 종차로 정의하면? 기능 목록과 무엇이 다른가?2.1
3로컬 LLM에 맞는 시나리오의 네 조건과 맞지 않는 두 조건은?2.2
4"사내 규정 챗봇"이 이번 프로젝트에 맞지 않는 이유는?2.3
5"빠르게"와 "정확하게"를 완료 기준으로 바꾸면?3.2
6FR과 NFR은 무엇으로 갈리는가?3.3
7추출 기능의 형식 기준과 의미 기준을 하나씩 대면?4.2
8범위 밖 목록과 "미정"은 무엇이 다른가?4.3
9평가셋을 모델 선정 전에 만들어야 하는 이유는?5.1
10가명 처리할 때 형식을 유지하는 이유는?5.3

부록 B. 자주 하는 실수

실수바로잡기
"요구사항은 '빠르고 정확한 문의봇'이면 충분"❌ 형용사는 판정할 수 없습니다. 지표 + 숫자 + 측정 차시
"JSON이 나오면 추출 기능은 완료"❌ 형식 기준만 통과. 의미 기준(본문에 실제로 있는 값인가) 을 따로
"모델부터 고르고 평가셋은 나중에"⚠️ 고른 모델에 유리한 평가셋이 되기 쉽습니다. 평가셋이 먼저
"평가셋 정답도 AI에게 만들게 하자"❌ 자가 채점. expected는 사람이
"원본 메일을 AI에게 주고 가명 처리를 시키자"⚠️ 그 AI가 클라우드라면 이미 유출. 가명 처리는 사람이 먼저
"범위 밖 목록은 쓸 필요 없다"❌ AI는 범위를 넓히는 쪽으로 움직입니다. 범위 밖 목록은 가이드 입니다
"목표 숫자는 한번 정하면 못 바꾼다"⚠️ 바꿔도 됩니다. 이유를 기록 하면

부록 C. NotebookLM 복습 프롬프트

이 33차시 노트만 근거로 6문제를 내줘. 비전공자 기준으로.
"로컬 LLM에 맞는 시나리오 판별", "형용사 요구를 완료 기준으로 바꾸기", "형식 기준과 의미 기준", "평가셋이 첫 산출물인 이유"는 반드시 포함해줘.
답은 내가 답한 다음에 채점하고, 틀린 이유를 노트의 절 번호를 근거로 설명해줘.