[AI]4단계_LangChain_기반_멀티스텝_AI_구현_검토_미션_생성 - 100-hours-a-week/12-marong-Wiki GitHub Wiki
LangChain 및 LangGraph 기반 마니또 미션 생성 파이프라인 설계
1. 개요
- LangGraph 기반 다단계 생성 시스템: 쿼리 선택, RAG 검색, 생성, 평가, 후처리를 그래프 구조로 구성
- 입력값: 그룹 ID, 난이도 조건
- SBERT + ChromaDB: 유사 쿼리 검색용 RAG 기반 검색
- LoRA LLM + 평가 모델: HyperCLOVA-X 기반 미션 생성, EXAONE 기반 평가 통합
2. LangGraph 파이프라인 구성도
graph TD
A[select_query_node] --> B[rag_node]
B --> C[generate_mission_node]
C --> D[postprocess_node]
D --> E[evaluate_node]
E --> F[check_completion_node]
F --> G{충족 여부}
G -- "충족" --> H[Done]
G -- "미충족" --> I[update_state_node]
I --> A
3. 각 노드 기능 요약
노드 이름 |
역할 |
select_query_node |
난이도 조건에 맞는 쿼리를 랜덤 선택 |
rag_node |
SBERT 임베딩 기반으로 ChromaDB에서 유사 미션 쿼리 검색 (RAG) |
generate_mission_node |
LangChain PromptTemplate + LLM 사용하여 미션 생성 |
postprocess_node |
금지 키워드 필터링, DBSCAN 중복 제거, 이모지/난이도 태그 추가 등 후처리 |
evaluate_node |
생성된 미션을 EXAONE 기반 평가 모델로 채점 (일관성, 창의성, 수행 가능성 등) |
check_completion_node |
현재까지 생성된 미션 수가 난이도별 목표 개수에 도달했는지 확인 |
update_state_node |
시도 횟수 증가 및 난이도 상태 전환, 반복 여부 결정 |
4. 실행 예시 (요약)
# 초기 state 구성
initial_state = {
"attempt": 0,
"difficulty_idx": 0,
"difficulty_order": ["상", "중", "하"],
"current_diff": "상",
"mid_output": [],
"final_output": {"상": [], "중": [], "하": []},
"target_counts": {"상": 0, "중": 3, "하": 0},
"clean_tool": CleanMission(),
"emoji_generator": EmojiGen(),
"sbert_model": sbert_model,
"hated_mission_collection": hated_mission_collection,
"mission_collection": mission_collection,
"contents": contents,
"group_description": g_desc,
"user_query": None,
"random_queries": RANDOM_QUERIES,
"gen_llm_chain": gen_llm_chain,
"eval_llm_chain": eval_llm_chain
}
result = mission_graph.invoke(initial_state, config={"recursion_limit": 200})
5. 처리 단계 요약
- 쿼리 랜덤 선택 (
select_query_node
)
- RAG 기반 유사 쿼리 검색 (
rag_node
)
- LLM 미션 생성 (
generate_mission_node
)
- 후처리 (DBSCAN, 필터링, 태그) 적용 (
postprocess_node
)
- LLM 평가 모델로 정량 점수화 (
evaluate_node
)
- 목표 개수 충족 여부 판단 (
check_completion_node
)
- 충족 안되면 반복 (
update_state_node
)
6. 기대 효과
- 난이도 균형 유지: 각 그룹마다 난이도별로 지정 개수 생성
- LLM 품질 통제: 평가 점수를 기준으로 불량 미션 자동 필터링
- 중복/부적절 미션 제거: DBSCAN 및 키워드 필터 포함
- 확장 가능 구조: 각 노드에 다양한 모델/로직 삽입 가능
7. 향후 확장 전략
- 유저 성향 기반 쿼리 추천 (MBTI/취미/활동 기반)
- 평가 모델 교체 실험 (JudgeLM, QWEN 등)
- 후처리 강화: 맥락 일관성, 감정 부하 미션 필터링
- LangGraph persistence 연동: 실행 기록 저장
8. 핵심 변화 요약
기존 방식 |
LangGraph 기반 개선 |
LLM 단순 생성 → 수작업 후처리 |
유사도 기반 검색 → 생성 → 평가 → 후처리까지 자동화 |
생성 수량/품질 불안정 |
난이도별 개수 조절 + 평가 점수 기준 필터링 |
단일 Prompt로 구성 |
다단계 LangGraph 상태 기반 흐름 |
수작업 반복 필요 |
자동 반복 + 상태 업데이트 + 반복 종료 판단 가능 |