25차시. Generator Node 분리
이번 차시에서 배우는 것
출처: 원본 PDF 25차시_GeneratorNode분리.pdf 1쪽 · 쪽 그림 1쪽
Generator Node 분리 — 못 하겠으면 못하겠다고
✓ 프롬프트와 LLM 호출을 하나의 모듈로 캡슐화한다 ✓ 근거가 부족하면 스스로 신고하게 만든다
✓ 출처 인용을 코드로 검증한다
✓ 프롬프트를 버전으로 관리해 A/B 비교한다
✓ 재생성 시 이전 실패를 반영하게 만든다
✓ LLM 호출 오류를 안전하게 처리한다
교안 해설: 이 시간에 하는 일
출처: 교안 25_GeneratorNode분리.md
생성 노드는 지식을 만들지 않습니다. 이미 고른 근거를 문장으로 옮깁니다. 근거가 없으면 LLM을 부르지 않고 안내 문장만 돌려줍니다. 호출해도 '없습니다'가 나오는데 요금과 지어낼 위험만 남기 때문입니다.
반환 키는 answer, 근거 부족을 스스로 적는 insufficient, 인용 번호가 유효한지 has_citation입니다. 인용 검사는 번호가 있는지, 그 번호가 조각 개수 안에 있는지를 봅니다. 내용이 근거와 맞는지는 다음 차시 Verifier가 봅니다.
다시 쓸 때 같은 프롬프트를 반복하면 temperature 0에서 거의 같은 답이 나옵니다. generator2.py는 이전 실패 이유를 재시도 프롬프트에 넣습니다. 그 틀은 PROMPTS["retry"]가 아니라 RETRY_PROMPT를 직접 가져옵니다. PROMPTS에 넣으면 13차시 compare_prompt.py와 validators.py가 {reason} 없이 모든 틀을 돌려서 멈춥니다. 두 파일 모두 API 예시입니다.
강의 PPT 흐름
출처: 강의 PPT 25차시_GeneratorNode분리.pptx (17장)
| 장 | 꼬리표 | 슬라이드 제목 |
|---|---|---|
| 1 | - | 실습으로 배우는 LangGraph : 내 손으로 RAG 시스템 만들기 |
| 2 | LEARNING GOALS | 이번 차시에서 배우는 것 |
| 3 | WHY SEPARATE | 검색과 생성이 붙어 있으면 |
| 4 | THE ROLE | 생성 노드의 역할을 한마디로 |
| 5 | GOOD GENERATOR | 좋은 생성 노드의 정의 |
| 6 | KEY TERMS | 핵심 용어 |
| 7 | FOUR POINTS | Generator Node의 설계 포인트 |
| 8 | SELF-REPORT | 부족 신호가 왜 중요한가 |
| 9 | CHECK CITATIONS | 인용 검증 — 두 가지를 함께 봅니다 |
| 10 | SKIP THE CALL | 근거가 없으면 LLM을 부르지 않는다 |
| 11 | THE OUTPUT | 생성 노드가 남기는 것 |
| 12 | FEEDBACK LOOP | 재생성 시 이전 실패를 반영하기 |
| 13 | VERSIONS | 프롬프트를 버전으로 관리하기 |
| 14 | TROUBLESHOOTING | 자주 겪는 문제 |
| 15 | CHECKLIST | 이번 차시 체크리스트 |
| 16 | NEXT | 다음 차시 미리보기 — 26차시 Verifier Node 설계 |
| 17 | - | 마무리 |