이번 실습은 이전 대화를 기억하고 대화를 이어나갈 수 있는 대화형 면접 챗봇 만들기 실습이다. 우선, GPT에게 부탁해 가상의 회사 채용 정보를 만들었다.
company_info = {
"company_name": "TechNova AI",
"job_position": "백엔드 엔지니어",
"requirements": "Python, Django, REST API, PostgreSQL",
"preferred": "AWS, 대규모 트래픽 처리 경험, DevOps",
"culture": "혁신적인 아이디어를 실행하는 문화, 데이터 기반 의사결정"
}
이후 지원자 정보를 입력 받고 저장할 함수와 면접 프롬프트 템플릿을 만들고 LangChain의 ConversationBufferMemory 적용해 대화 히스토리를 기억하도록 하였고 모의 면접 함수를 만든 뒤 피드백 및 평가 프롬프트를 통해 면접 종료 후 AI가 피드백과 점수를 생성하도록 하였다.
좀 더 자세히 설명하자면
interview_chain = LLMChain(llm=llm, prompt=interview_prompt, memory=memory)을 통해 이전 대화를 저장하고 면접 진행 중 답변에 따른 후속 질문을 생성하도록 하였고,
feedback_chain = LLMChain(llm=llm, prompt=feedback_prompt) 으로 면접이 끝난 후 답변을 분석하여 피드백을 생성해주도록 하였다.
# ✅ 1️⃣ 지원자 정보 수집
applicant_info = collect_applicant_info()
# ✅ 2️⃣ 면접관 스타일 선택
interviewer_style = select_interviewer_style()
# ✅ 3️⃣ 면접 진행 (대화형, "종료" 입력 시 종료)
memory = conduct_interview(company_info, applicant_info, interviewer_style)
# ✅ 4️⃣ 면접 피드백 및 점수 생성
print("\n📌 AI 면접 피드백 및 평가 점수:\n")
feedback, score = generate_feedback_and_score(memory)
print(feedback)
print(f"\n⭐ 면접 점수: {score}")
위의 과정을 통해 출력된 결과물은 아래와 같다.
면접관 스타일을 선택하세요:
1. 친절하고 조언을 많이 해주는 스타일
2. 엄격하고 날카로운 질문을 던지는 스타일
3. 실무진 스타일 (기술적 질문 중심)
4. 임원진 스타일 (비즈니스적 질문 중심)
🚀 AI 면접 시작!
🗣️ 면접관 질문: 김도연 님, 안녕하세요. 저희 TechNova AI에 지원해주셔서 감사합니다. 지원자님의 이력서를 보니 파이썬에 대한 기술을 보유하고 계신 것으로 보입니다. 하지만 백엔드 엔지니어 포지션의 필수 조건인 Django, REST API, PostgreSQL에 대한 경험이 언급되어 있지 않네요. 이러한 기술들에 대해 어떻게 학습하고 적용할 계획이신지 설명해 주실 수 있을까요? 또한, 대규모 트래픽을 처리하는 시스템을 구축하거나 유지보수한 경험이 없으신데, 이 부분에 대해서 어떻게 준비하고 계신지 궁금합니다.
📝 지원자 답변: 입사해보고 생각해보겠습니다.
--------------------------------------------------
🗣️ 면접관 질문: 김도연 님, 백엔드 엔지니어로서 Django, REST API, PostgreSQL과 같은 기술 스택을 빠르게 습득하고 적용하기 위해 구체적으로 어떤 학습 계획을 세우고 계신가요? 예를 들어, 온라인 강의, 프로젝트 실습, 혹은 관련 서적 등을 활용할 계획이신지 궁금합니다.
📝 지원자 답변: 항상 매번 남아서 스터디를 하며 개인 프로젝트를 매주 진행하고 있습니다.
--------------------------------------------------
🗣️ 면접관 질문: 김도연 님, 개인 프로젝트를 통해 Django, REST API, PostgreSQL을 학습하고 계신다고 하셨는데, 최근에 진행한 프로젝트 중에서 가장 도전적이었던 부분은 무엇이었으며, 그 문제를 어떻게 해결하셨는지 자세히 설명해 주실 수 있을까요?
📝 지원자 답변: 가장 도전적인 부분은 인간관계였으며 저의 전공인 인간공학적 지능으로 잘 헤쳐나갔습니다.
--------------------------------------------------
🗣️ 면접관 질문: 김도연 님, 개인 프로젝트를 진행하며 기술적인 도전 과제를 해결하는 과정에서 구체적으로 어떤 전략이나 방법론을 사용하셨는지 설명해 주실 수 있을까요? 예를 들어, 문제 해결을 위해 어떤 리소스를 활용했는지, 그리고 그 과정에서 얻은 교훈이 있다면 무엇인지 궁금합니다.
🔹 면접이 종료되었습니다. AI 피드백과 점수를 생성합니다...
📌 AI 면접 피드백 및 평가 점수:
지원자 김도연 님의 면접 답변을 평가한 결과는 다음과 같습니다.
**강점:**
1. **학습 의지:** 김도연 님은 개인 프로젝트를 통해 기술을 학습하고 있다고 언급하셨습니다. 이는 새로운 기술을 습득하려는 적극적인 자세로 볼 수 있습니다.
2. **자기주도 학습:** 매주 개인 프로젝트를 진행하면서 지속적으로 학습하고 있다는 점은 자기주도적인 학습 능력을 보여줍니다.
**개선점:**
1. **구체적인 학습 계획 부족:** Django, REST API, PostgreSQL 등 백엔드 엔지니어로서 필수적인 기술을 습득하기 위한 구체적인 학습 계획이 부족해 보입니다. 온라인 강의, 관련 서적, 실습 프로젝트 등 구체적인 계획을 제시하는 것이 필요합니다.
2. **질문에 대한 명확한 답변 부족:** 대규모 트래픽 처리 경험에 대한 질문에 대한 답변이 명확하지 않았으며, 기술적 도전 과제에 대한 설명에서도 구체적인 기술적 문제보다는 인간관계에 대한 언급이 있었습니다. 기술적 문제 해결에 대한 구체적인 사례와 접근 방식을 설명하는 것이 중요합니다.
3. **직무 관련성:** 현재의 경험과 백엔드 엔지니어 포지션의 요구 사항 간의 관련성을 명확히 설명할 필요가 있습니다. 특히, 기술 스택과 관련된 경험을 더 구체적으로 제시하는 것이 좋습니다.
**종합 피드백:**
김도연 님은 새로운 기술을 배우고자 하는 의지가 있으며, 자기주도적으로 학습하려는 노력을 하고 계신 점에서 긍정적입니다. 그러나 백엔드 엔지니어로서 요구되는 구체적인 기술 습득 계획과 경험을 명확히 설명하는 것이 중요합니다. 앞으로의 면접에서는 질문에 대한 구체적이고 명확한 답변을 준비하시고, 기술적 경험을 중심으로 답변을 구성해 주시기 바랍니다. 이를 통해 지원하신 포지션과의 적합성을 더 명확히 할 수 있을 것입니다.
⭐ 면접 점수: 이 면접에서 지원자의 답변은 기술적 역량과 관련된 질문에 충분히 구체적이지 않으며, 문제 해결 능력과 논리적 사고력에 대한 명확한 설명이 부족합니다. 또한, 커뮤니케이션 능력 측면에서도 질문에 대한 직접적이고 관련성 있는 답변을 제공하지 못한 부분이 있습니다. 이러한 점들을 고려했을 때, 이 면접의 평가는 다음과 같습니다:
점수: 3점
평가 이유:
- 기술 역량: Django, REST API, PostgreSQL에 대한 구체적인 학습 계획이나 경험이 부족하게 언급되었습니다.
- 문제 해결 능력: 기술적 문제 해결에 대한 구체적인 사례나 방법이 제시되지 않았습니다.
- 논리적 사고력: 질문에 대한 답변이 논리적 연결성이 부족하고, 질문의 핵심을 벗어난 답변이 있었습니다.
- 커뮤니케이션 능력: 질문에 대한 명확하고 관련성 있는 답변이 부족했습니다.
LangSmith에 들어가면 아래 사진과 같이 지금까지 했던 모든 대화의 히스토리 확인도 가능하다.

