[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. 처리 단계 요약

  1. 쿼리 랜덤 선택 (select_query_node)
  2. RAG 기반 유사 쿼리 검색 (rag_node)
  3. LLM 미션 생성 (generate_mission_node)
  4. 후처리 (DBSCAN, 필터링, 태그) 적용 (postprocess_node)
  5. LLM 평가 모델로 정량 점수화 (evaluate_node)
  6. 목표 개수 충족 여부 판단 (check_completion_node)
  7. 충족 안되면 반복 (update_state_node)

6. 기대 효과

  • 난이도 균형 유지: 각 그룹마다 난이도별로 지정 개수 생성
  • LLM 품질 통제: 평가 점수를 기준으로 불량 미션 자동 필터링
  • 중복/부적절 미션 제거: DBSCAN 및 키워드 필터 포함
  • 확장 가능 구조: 각 노드에 다양한 모델/로직 삽입 가능

7. 향후 확장 전략

  • 유저 성향 기반 쿼리 추천 (MBTI/취미/활동 기반)
  • 평가 모델 교체 실험 (JudgeLM, QWEN 등)
  • 후처리 강화: 맥락 일관성, 감정 부하 미션 필터링
  • LangGraph persistence 연동: 실행 기록 저장

8. 핵심 변화 요약

기존 방식 LangGraph 기반 개선
LLM 단순 생성 → 수작업 후처리 유사도 기반 검색 → 생성 → 평가 → 후처리까지 자동화
생성 수량/품질 불안정 난이도별 개수 조절 + 평가 점수 기준 필터링
단일 Prompt로 구성 다단계 LangGraph 상태 기반 흐름
수작업 반복 필요 자동 반복 + 상태 업데이트 + 반복 종료 판단 가능