"면접해조"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(설계)
(상세설계 내용)
412번째 줄: 412번째 줄:
  
 
===상세설계 내용===
 
===상세설계 내용===
내용
+
◇ 아키텍처도
 +
 
 +
[[파일:면접왕아키텍처도.JPG]]
 +
 
 +
1) 클라이언트 어플리케이션
 +
 
 +
- 면접왕 서비스 인터페이스가 제공된다.
 +
 
 +
- JavaScript 및React프레임워크를 사용하여 구현한다.
 +
 
 +
 +
2) NestJS 서버 어플리케이션
 +
 
 +
- 본 서비스에서 사용하는 생성형 AI모델인 OpenAI사의 GPT-4 API와 직접적으로 통신하는 역할을 수행하는 서버 어플리케이션이다.
 +
 
 +
- TypeScript 및 NestJS프레임워크를 사용하여 구현한다.
 +
 
 +
 +
3) SpringBoot 서버 어플리케이션
 +
 
 +
- 면접왕 서비스 운영에 사용되는 각종 데이터베이스를 처리 및 제공하며, 클라이언트와 NestJS 서버 어플리케이션 간의 통신을 담당한다.
 +
 
 +
- Kotlin 및 SpringBoot어플리케이션을 사용하여 개발되었다.
 +
 
 +
- RDBMS인 MySQL 데이터베이스를 사용한다. 본 데이터베이스는 AWS RDS 환경에서 생성 및 연결된다.
 +
 
 +
 +
4) 서버 및 네트워크
 +
 
 +
- AWS EC2 서버 인스턴스를 사용하여 어플리케이션을 호스팅한다. Docker를 사용해 컨테이너 형태로 패키징된 어플리케이션을 배포한다.
 +
 
 +
- Git 및 Github를 통해 소스코드 및 형상을 관리한다.
 +
 
 +
◇ 데이터베이스
 +
 
 +
[[파일:데이터베이스스키마.JPG]]
 +
 
 +
[[파일:면접왕DB1.PNG]]
 +
 
 +
[[파일:면접왕DB2.PNG]]
 +
 
 +
[[파일:면접왕DB3.PNG]]
 +
 
 +
[[파일:면접왕DB4.PNG]]
 +
 
 +
[[파일:면접왕DB5.PNG]]
 +
 
 +
 
 +
◇ 클래스 설계
 +
 
 +
[[파일:면접왕클래스1.PNG]]
 +
 
 +
[[파일:면접왕클래스2.PNG]]
 +
 
 +
[[파일:면접왕클래스3.PNG]]
 +
 
 +
 
 +
◇ 데이터 흐름도
 +
 
 +
1. 모의면접 생성 및 시작
 +
 
 +
[[파일:면접왕데이터흐름도1.JPG]]
 +
 
 +
2. 답변 및 질문 진행
 +
 
 +
[[파일:면접왕데이터흐름도2.JPG]]
 +
 
 +
3. 모의면접 종료
 +
 
 +
[[파일:면접왕데이터흐름도3.JPG]]
  
 
==결과 및 평가==
 
==결과 및 평가==

2023년 12월 21일 (목) 08:48 판

프로젝트 개요

기술개발 과제

국문 : 면접왕(LLM 기반 모의면접 연습 서비스)

영문 : 00000000..

과제 팀명

면접해조

지도교수

이동희 교수님

개발기간

2023년 9월 ~ 2023년 12월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20196100** 민*정(팀장)

서울시립대학교 컴퓨터과학부 20169200** 이*경

서울시립대학교 컴퓨터과학부 20209200** 권*혜

서울시립대학교 컴퓨터과학부 20179200** 박*수

서울시립대학교 컴퓨터과학부 20209200** 김*람

서론

개발 과제의 개요

개발 과제 요약

◇ 본 과제는 LLM 기반의 생성형 인공지능을 활용한 작품이다.

◇ 본 서비스는 소프트웨어 개발직군 취업 준비생을 대상으로 한다.

◇ 사용자의 이력서와 프로젝트 경험을 토대로 소프트웨어 기술 직무 면접 질문을 생성 및 제공한다.

◇ STT(Speech-to-Text) 및 TTS(Text-to-Speech) 기술을 사용하여 음성으로 모의 면접을 진행한다.

◇ 실제 면접 상황과 유사하게 사용자 답변에 대한 꼬리질문을 제공한다.

◇ 사용자 답변에 대한 생성형 인공지능의 평가 및 피드백을 제공한다.

개발 과제의 배경

◇ 능률적인 학습: AI를 활용하여 사용자는 자신의 약점과 강점에 대해 즉각적인 피드백을 받아 본인만의 맞춤형 학습 경로를 설정할 수 있다.

◇ 면접 역량 강화: 실질적인 면접 상황에서 요구되는 역량들(문제 해결, 커뮤니케이션 능력 등)을 키울 수 있다.

◇ 면접 독학 준비 도움: 면접을 혼자 준비할 때, 자신에게 실시간으로 질문하고 직접 대답하는 것이 불가능하지만, 해당 웹 서비스를 사용하면서 자신을 임의의 면접 상황에 놓이게 할 수 있다.

개발 과제의 목표 및 내용

◇ 본 서비스는 크게 두 가지 기능으로 구성된다.

- 입력한 정보와 선택한 옵션에 의해 면접 환경을 만들고, 만들어진 면접 환경에서 연습할 수 있는 기능

- 진행했던 모의 면접 목록을 확인하고, 각 면접의 대화 내용, 기록 영상 그리고 코멘트를 확인할 수 있는 기능


◇ 사용자 인터페이스는 웹 기반으로 작동하며, GUI와 AI 기반 음성인식 인터페이스를 제공한다.

- 회원가입 및 로그인을 통해 고객의 정보를 저장 및 활용한다. (면접 이력 조회)

- 직군, 원하는 면접 질문 개수, 원하는 질문을 설정하여 면접을 생성할 수 있다.

- 생성된 면접을 시작한 뒤, 면접을 중단하거나 끝낼 수 있다.

- 면접 이력 목록을 조회할 수 있으며, 답변에 대한 피드백을 확인할 수 있다.


관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

◇ React

• React는 가상 DOM을 활용하여 효율적인 업데이트를 가능하게 하며, 애플리케이션의 성능을 향상시킵니다.

• 컴포넌트 기반 아키텍처로 코드 재사용이 간단하며, 개발 생산성을 높입니다.

◇ Spring Boot

• 빠른 개발을 지원하며 기본 설정을 제공하여 복잡한 구성 작업을 줄여 개발 생산성을 향상시킵니다.

• 내장 웹 서버를 통해 배포와 실행이 간편하며, 다양한 기능 및 라이브러리를 쉽게 활용할 수 있습니다.

• 자동 구성과 스프링 부트 스타터 등의 기능으로 개발자가 복잡한 설정 작업에 시간을 소비하지 않고 빠르게 안정적인 애플리케이션을 개발할 수 있습니다.

◇ Kotlin

• Kotlin의 간결한 문법은 코드의 가독성을 향상시키고 생산성을 높입니다.

• Null 안정성을 제공하여 NullPointerException 오류를 방지하며 애플리케이션 안전성을 향상시킵니다.

◇ LLM

• 오픈 소스 LLM: 공개된 LLM을 그대로 사용하는 방법.

• LLM 파인튜닝: 대규모 언어 모델을 특정 작업이나 도메인에 맞게 미세 조정하는 프로세스.

• LLM API: LLM을 웹 또는 응용 프로그램을 통해 액세스하고 사용할 수 있게 해주는 프로그래밍 인터페이스.

• 프롬프트 엔지니어링: LLM을 사용하여 원하는 결과를 얻기 위해 입력 프롬프트를 설계하고 조정


  • 특허조사 및 특허 전략 분석

◇ 음성인식 기반의 가상 면접 처리 시스템 및 방법 ( SYSTEM AND METHOD FOR PROCESSING VIRTUAL INTERVIEW BASED SPEEDCH RECOGNITION )

- 출원인: (주)컴버스테크

- 출원번호: 10-2015-0044495

- 질문에 대응하여 사용자가 입력한 음향신호에 대해 분석하고 평가하는 특허


◇ 자기소개서를 기반으로 면접 질문을 생성하는 서버 및 방법 ( Server and Method for Generating Interview Questions based on Letter of Self-Introduction)

- 출원인: 주식회사 무하유

- 출원번호: 10-2281161

- 자기소개서의 핵심을 파악하여 질문을 생성 및 보정하는 AI 모델에 관한 특허


◇ 딥러닝에 기반한 교육 목적의 사용자 맞춤형 면접 피드백 제공 방법 및 시스템 ( METHOD AND SYSTEM FOR PROVIDING USER-CUSTOMIZED INTERVIEW FEEDBACK FOR EDUCATIONAL PURPOSES BASED ON DEEP LEARNING )

- 출원인: 박경호

- 출원번호: 출원번호: 10-2023-0126390

- 이미 평가되어 있는 질의응답을 학습하여 새로운 질의응답을 평가하는 특허


  • 기술 로드맵

면접왕기술로드맵.jpg

시장상황에 대한 분석

  • 경쟁제품 조사 비교

◇ 사람인 社 AI 면접 코칭

• 자체 NLP/NLU 기술을 GPT와 결합하여 자기소개서 기반 5종의 질문 생성

• 사용자의 답변에 따른 피드백 제공

• 텍스트 형태로 모의 면접 진행


◇ 원티드 社 AI 면접 코칭

• 채용공고 링크 입력 시 AI가 이를 요약 및 분석하고 관련 질문 생성

• 직무 능력 관련 '하드 스킬', 적응 및 소통 능력 관련 '소프트 스킬' 질문 제공

• 사용자의 답변에 따른 피드백 제공

• 텍스트 형태로 모의 면접 진행


◇ 위드마인드 社 인터뷰마스터IM

• 지원한 직군 및 직무에 따른 면접질문 생성

• 자기소개, 직무, 역량 및 성향에 관한 질문으로 구성

• 답변 분석 및 점수화 후 심층질문 제시

• 영상으로 모의면접 진행


  • 마케팅 전략 제시

◇ 자신의 경력과 경험에 맞는 기술 면접을 준비하려는 웹 개발자 및 취업 준비생들에게 사용자 맞춤형 질문을 제공한다는 점을 강조한다.

◇ 답변에 대한 꼬리질문을 생성하여 실제 면접과 유사한 경험을 제공한다는 점을 강조한다.

◇ 면접 전 과정을 문서화하며, 답변에 대한 분석 및 평가를 제공한다는 점을 강조한다.

◇ 적절한 홍보 수단을 사용한다.


개발과제의 기대효과

기술적 기대효과

◇ 음성 기술의 발전: 사용자 음성을 인식하고, TTS(Text-to-Speech) 및 ASR(Automatic Speech Recognition) 기술을 활용하여 음성으로 면접 질문을 전달하는 것은 음성 기술의 최신 동향을 반영하였다는 점에서 의의가 있다.

◇ 면접 스크립트의 다양성: GPT를 이용한 면접 질문 생성은 다양한 질문 유형과 난이도를 제공할 수 있습니다. 이는 사용자가 더 다양한 상황에 대비하고 자신의 역량을 향상시킬 수 있도록 도움을 줄 것이다.

◇ 맞춤형 피드백 시스템: 사용자 응답을 분석하고 피드백을 제공하는 기술은 사용자에게 자신의 답변을 개선하고 능력을 향상시킬 수 있는 기회를 제공한다.


경제적, 사회적 기대 및 파급효과

◇ 고용 기회 확대: "면접왕"을 통해 취업을 준비하는 수많은 사용자들에게 새로운 기회를 제공함으로써 고용 기회를 확대할 수 있다.

◇ 인공지능 기술의 보급: 이 프로젝트는 AI 기술을 대중이 보다 쉽게 접근 가능하게 만들어, 기술 보급에 기여할 수 있다.

◇ 다양성과 인클루전 강화: "면접왕"은 지리적, 경제적으로 다양한 사용자들에게 열려 있어서 다양성과 인클루전을 촉진하며, 다양한 배경을 가진 사람들이 취업 시장에서 더욱 공평한 기회를 얻을 수 있도록 돕는다.


기술개발 일정 및 추진체계

개발 일정

Wbs.PNG

프론트개발일정.PNG

백엔드개발일정.png


구성원 및 추진체계

면접왕구성원및추진체계.PNG

설계

설계사양

제품의 요구사항

면접왕요구사항.PNG

◇ 계정 관리

- 사용자는 비밀번호, 이메일을 통해 회원가입 할 수 있다.

- 사용자는 이메일, 비밀번호로 로그인 할 수 있다.


◇ 이력서 관리

- 이력서는 이력서 관리 페이지에서 관리할 수 있다.

- 이력서는 자기 소개, 직종 및 프로젝트로 구성된다.

⇒ 직종은 선택 가능 항목이며 단일 선택 가능하다.

⇒ 프로젝트는 프로젝트명, 요약, 상세설명, 관련 기술로 구성된다.

⇒ 관련 기술은 선택 가능 항목이며, 복수 선택 가능하다.

- 이력서는 비활성화 가능하다.

⇒ 비활성화 된 이력서는 면접 시작시 선택 할 수 없다.

⇒ 비활성화 된 이력서의 면접 기록은 확인 할 수 있다.


◇ 모의 면접

- 면접 시작

⇒ 사용자는 이력서를 선택할 수 있다.

⇒ 희망하는 회사의 채용공고를 입력 할 수 있다.

⇒ 면접의 총 질문 갯수를 설정할 수 있다.

⇒ 질문은 이력서 기반, 실무 경험 기반, CS 기본 지식으로 구분된다.

- 면접 진행

⇒ 사용자는 음성으로 면접관에게 답변 할 수 있다.

⇒ 사용자는 음성으로 면접관의 대답을 들을 수 있다.

⇒ 면접관은 대화 맥락에 맞게 적절한 추가 질문을 할 수 있다.

⇒ 모든 질문이 끝나면, 면접관은 면접을 종료한다.

- 면접 종료

⇒ 사용자는 면접 평가지를 확인 할 수 있다.

⇒ 면접 평가지는 전체 대화 내용 요약을 포함한다.

⇒ 면접 평가지는 답변에 대한 피드백과 점수를 포함한다.

⇒ 면접 평가지는 종합적인 한줄평과 점수를 포함한다.


◇ 면접이력 관리

- 사용자는 진행했던 면접에 제출했던 이력서를 볼 수 있다.

- 사용자는 진행했던 면접에 입력했던 채용 공고를 볼 수 있다.

- 사용자는 진행했던 면접의 평가지를 볼 수 있다.


개념설계안

◇ 유즈 케이스도

면접왕유즈케이스도.JPG


◇페이지별 상세 설명

①-1 사용자 인증: 로그인

아이디와 비밀번호를 입력하여 로그인을 진행한다.

기존 계정이 없다면, 회원가입 화면으로 이동한다.

①-2 사용자 인증: 회원가입

1. 이름, 아이디, 비밀번호를 입력하여 회원가입을 진행한다.

2. 비밀번호와 비밀번호 확인을 비교하여 비밀번호 입력 과정에서의 사용자 예외사항을 줄인다.

2. 기존 계정이 있다면, 로그인 화면으로 이동한다.

②-1 면접 생성: 면접 설정

1. 회사 이름을 입력하고, 직군을 선택한다. 모집 공고문을 넣고 이력서를 선택하며, 희망 면접 질문 개수를 조절하여 면접을 생성한다.

2. 기존에 만들어진 이력서가 없다면, '이력서 작성하러 가기' 버튼을 눌러 이력서 생성을 위한 페이지로 이동한다.

3. 면접 질문의 유형은 CS기반 질문과 이력서 기반 질문 2가지이며, 질문은 최소 1개에서 최대 10개까지 가능하다.

4. 모든 내용을 입력하였다면 '면접 생성하기' 버튼을 눌러 면접 진행 단계로 넘어간다.

②-2 면접 생성: 면접 진행

1. '면접 시작하기' 버튼을 눌러 면접을 시작한다.

2. 시작과 동시에 AI 면접관은 맞춤형 질문을 음성과 함께 텍스트 형태로 제공한다.

3. 면접자는 '대답할게요' 버튼을 누르고, 음성으로써 해당 질문에 대해 답한다.

4. 기존에 정한 질문의 수만큼 반복하며, 모든 질문에 대한 답변이 끝났을 경우 자동으로 종료된다.

5. 혹은 '면접 중단하기' 버튼을 눌러 중간에 면접을 종료할 수도 있다.

③ 면접 관리

1. 면접을 진행한 후에는 면접 관리 탭에서 면접 히스토리를 확인할 수 있다.

2. 받았던 면접 질문을 다시 확인할 수 있으며, 사용자의 답변에 대한 상세 피드백과 점수를 볼 수 있다.

3. 면접 전체에 대한 한줄평도 확인할 수 있다.

④ 이력서 관리

1. 이전에 입력한 나의 이력서 목록과 각 내용을 확인할 수 있다.

2. 이력서 이름, 사이드 프로젝트, 설명을 입력하여 이력서를 추가할 수 있다.

3. 사이드 프로젝트는 프로젝트 이름, 한 줄 설명, 사용 스택, 상세 업무 및 성과를 입력하여 추가할 수 있다.

◇ 플로우차트 면접왕플로우차트.JPG


이론적 계산 및 시뮬레이션

프롬프트 엔지니어링 기법


◇ Chain-of-Thought Prompting

일반적으로 LLM은 복잡한 추론 능력이 떨어지는 문제가 있는데 이를 보완하기 위한 기법


주요특징

- 문제 상황을 중간 단계로 구분한다.

- 중간 단계를 하나씩 해결하여 최종적으로 문제 상황을 해결한다.

- 시작부터 최종 단계로 가능 과정을 확인할 수 있다.

- 구체적인 예시없이 Let's think step by step 지시문만으로도 효과적이다.

면접왕체인오브땃.JPG

관련 논문: https://arxiv.org/abs/2201.11903


◇ ReAct Prompting

Chain-of-Thought Prompting을 발전시킨 기법

주요 특징

- 각 단계는 Thought, Act, Obs를 갖는다.

- LLM이 외부 도구 상호작용할 수 있다.

- 인간이 새로운 작업을 학습하고 추론하는 과정과 유사하다.

면접왕리액트.JPG

관련 논문: https://arxiv.org/abs/2210.03629


◇ Tree of Toughts

기존의 문제보다 더욱 복잡한 작업에 대한 탐색이나 추론이 필요한 경우를 위한 기법

주요 특징

- 중간 단계는 트리 구조를 유지한다.

- 각 노드는 “sure/maybe/impossible” 중 하나의 상태를 갖는다.

- LLM은 self-evaluation을 통해서 다음 노드를 선택하며 탐색을 진행한다.

면접왕트리오브땃.JPG

관련 논문: https://arxiv.org/abs/2305.08291


Chain-of Toughts Structure 전체 면접 프로세스를 크게 면접 시작, 면접 진행, 면접 종료 3가지 단계로 구분 각 단계는 자신에게 맞는 Sub-Toughts를 가짐

면접왕프롬프트구성.JPG


상세설계 내용

◇ 아키텍처도

면접왕아키텍처도.JPG

1) 클라이언트 어플리케이션

- 면접왕 서비스 인터페이스가 제공된다.

- JavaScript 및React프레임워크를 사용하여 구현한다.


2) NestJS 서버 어플리케이션

- 본 서비스에서 사용하는 생성형 AI모델인 OpenAI사의 GPT-4 API와 직접적으로 통신하는 역할을 수행하는 서버 어플리케이션이다.

- TypeScript 및 NestJS프레임워크를 사용하여 구현한다.


3) SpringBoot 서버 어플리케이션

- 면접왕 서비스 운영에 사용되는 각종 데이터베이스를 처리 및 제공하며, 클라이언트와 NestJS 서버 어플리케이션 간의 통신을 담당한다.

- Kotlin 및 SpringBoot어플리케이션을 사용하여 개발되었다.

- RDBMS인 MySQL 데이터베이스를 사용한다. 본 데이터베이스는 AWS RDS 환경에서 생성 및 연결된다.


4) 서버 및 네트워크

- AWS EC2 서버 인스턴스를 사용하여 어플리케이션을 호스팅한다. Docker를 사용해 컨테이너 형태로 패키징된 어플리케이션을 배포한다.

- Git 및 Github를 통해 소스코드 및 형상을 관리한다.

◇ 데이터베이스

데이터베이스스키마.JPG

면접왕DB1.PNG

면접왕DB2.PNG

면접왕DB3.PNG

면접왕DB4.PNG

면접왕DB5.PNG


◇ 클래스 설계

면접왕클래스1.PNG

면접왕클래스2.PNG

면접왕클래스3.PNG


◇ 데이터 흐름도

1. 모의면접 생성 및 시작

면접왕데이터흐름도1.JPG

2. 답변 및 질문 진행

면접왕데이터흐름도2.JPG

3. 모의면접 종료

면접왕데이터흐름도3.JPG

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

내용

포스터

내용

관련사업비 내역서

내용

완료작품의 평가

내용

향후계획

내용

특허 출원 내용

내용