초기 구현 상태는 여러 에이전트가 순차적으로 협업하는 구조이며, 각 노드는 State에 저장된 질문 목록(questions)과 각 에이전트별 결과(answers, follow_ups, reviews, scores)를 공유하면서 자신의 역할만 수행합니다.
핵심 전략: 하나의 에이전트가 모든 일을 처리하는 방식이 아니라, 다음 단계들을 역할 별로 분리한 멀티 에이전트 입니다.
문맥 준비 → 문서 분석 → 질문 생성 → 답변 예측 → 꼬리질문 생성 → 품질 검토 → 채점 → 선별 → 최종 조립
| 에이전트 / 노드 | 역할 | 주요 미션 |
|---|---|---|
| BuildState (문맥 준비 노드) | 입력 문맥 정리 | 세션 정보, 지원자 정보, 문서 텍스트를 하나의 공통 문맥(candidate_context)으로 병합. 추출 텍스트가 없으면 메타데이터 중심으로 처리한다는 경고를 node_warnings에 기록 |
| Analyzer (문서 분석자) | 문서 분석 | candidate_context와 채용 기준을 바탕으로 강점, 약점, 리스크, 검증 포인트를 구조화해 document_analysis를 생성. 이후 모든 에이전트가 이 분석 결과를 공유 입력으로 사용 |
| Questioner (질문자) | 기초 질문 설계 | document_analysis 기반으로 핵심 질문과 평가 가이드 초안 생성. 질문 생성 근거(generation_basis)와 문서 근거(document_evidence)를 함께 기록. human_action 값에 따라 신규 생성 / 부분 재생성을 분기 처리 |
| Predictor (예측자) | 답변 시뮬레이션 | 지원자의 입장에서 가장 현실적인 예상 답변(predicted_answer)을 생성하고, 답변 신뢰도(answer_confidence)와 위험 포인트(answer_risk_points)를 함께 기록. 실패 시 fallback 답변으로 안전하게 처리 |
| Driller (추적자) | 꼬리 질문 생성 | 예상 답변의 빈틈, 역할 범위, 수치, 의사결정 지점을 파고드는 심층 꼬리질문(follow_up_question) 설계. 꼬리질문 목적(drill_type)도 함께 기록. 실패 시 fallback 꼬리질문으로 안전하게 처리 |
| Reviewer (검토자) | 품질 보증 (QA) | 채용 기준과 질문 품질 루브릭에 따라 각 질문을 검토하고 approved / needs_revision / rejected 판정 부여. 반려 사유(reject_reason)와 수정 제안(recommended_revision)도 함께 기록. 실패 시 fallback 리뷰로 처리 |
| Scorer (채점자) | 점수 산정 | 리뷰 판정, 문서 근거 존재 여부, 평가 가이드, 역량 태그, 꼬리질문 연결성, 중복 여부를 종합해 질문별 0~100점 품질 점수 계산. review_summary(승인 수, 저점수 ID 목록, 평균 점수, 품질 이슈 목록)를 생성해 라우터에 전달 |
| Review Router (분기 노드) | 재시도 여부 판단 | Scorer 결과(review_summary)를 보고 Driller 재시도 / Questioner 재시도 / Selector 진행 중 하나로 분기 결정 |
| Selector (선별자) | 최종 질문 선별 | 중복 질문 제거 후, 리뷰 승인 여부와 점수를 기준으로 정렬하여 리스크 질문을 우선 포함한 상위 5개 질문 선별 |
| FinalFormatter (최종 조립 노드) | 결과 조립 | 선별된 질문에 answers, follow_ups, reviews, scores를 매핑하고 QuestionGenerationResponse 스키마로 조립해 최종 응답 반환 |
questions, answers, follow_ups, reviews, scores는 각 에이전트가 별도 리스트에 기록하고, question_id로 매핑합니다. 단일 QuestionSet 객체에 모든 필드를 임베드하는 방식을 사용하지 않습니다.human_action, target_question_ids, additional_instruction, existing_questions를 조립해 재호출하는 구조입니다.