본문 바로가기

CSE/Capstone Design

[Chat GPT - prompt engineering] LLM으로 유저의 학습을 분석하는 NLP 작업을 수행해보자! (1/2)

학습을 목적으로 On-line으로 노트를 작성하는 대학생을 위한, 작성된 노트로 AI 기반 퀴즈를 자동 생성하고 결과를 분석하여 복습을 통해 학습 효과를 높이는 웹 서비스


우리 팀이 기획한 서비스를 한 줄로 요약하면 다음과 같다.

 

핵심 기능을 구현하기 위해서는 chat GPT에게 잘 물어보는 게 매우 중요하다. 즉, 프롬프트 엔지니어링을 잘 해야한다. 

 

이번 포스팅에서는 서비스의 핵심 기능 중 하나인 [학습 분석하기] 에서 프롬프트 엔지니어링을 어떻게 수행할 건지를 살펴볼 것이다. 


1. 서비스 소개

  • 내가 기획한 서비스의 로직을 간단히 설명하면 다음과 같다.
  1.  사용자가 퀴즈를 생성하고 싶은 블로그 게시글 / 노션 페이지의 링크 혹은 pdf, 이미지를 업로드한다.
  2.  chat GPT가 그 내용을 바탕으로 퀴즈를 생성한다. 
  3. GPT에게 퀴즈 내용과 퀴즈 채점 결과를 알려주면, GPT는 사용자가 취약한 부분이 무엇인지, 어떻게 공부하면 좋을지 등을 알려주는 학습 분석을 수행한다.

 

내가 저장한 노트에 대한 퀴즈를 생성하고 퀴즈를  풀면 정/오답 기록이 데이터베이스에 기록된다. 

[학습 분석 페이지] 에서는 DB에 있는 정/오답 기록을 바탕으로 사용자가 어떤 카테고리의 문제에서 약하고 강한지를 판단하여 취약한 카테고리에 해당하는 추가 문제를 추천해주고, 학습 방법을 제안해준다. 

 

학습 분석하기는 다음과 같은 순서로 수행된다.


 

1. CNN은 어떤 분야에서 주로 사용되는 Deep Learning 신경망 아키텍처의 한 유형인가요? (쉬움)

a. 자연어 처리(Natural Language Processing)
b. 컴퓨터 비전(Computer Vision)
c. 음성 인식(Speech Recognition)
d. 강화 학습(Reinforcement Learning)

답: b. 컴퓨터 비전(Computer Vision)

풀이: CNN은 주로 컴퓨터 비전 분야에서 사용되는 Deep Learning 신경망 아키텍처 중 하나입니다.

요약: CNN은 컴퓨터 비전 분야에서 사용되는 Deep Learning 신경망 아키텍처 중 하나입니다.
  1. 위와 같이 퀴즈 생성 시에 문제, 답, 풀이와 더불어 퀴즈에 대한 한줄 요약을 받는다.
  2. 사용자가 푼 전체 퀴즈에 대하여, 한줄 요약과 해당 퀴즈의 정/오답 여부를 입력한다.
  3. AI가 한줄 요약된 퀴즈들을 가지고 대분류를 수행한다.
    1. 사용자가 이후에 또다른 퀴즈들을 풀어 학습 분석을 새로 수행해야 할 때는 해당 퀴즈가 이미 카테고라이징 된 대분류에 속하면 해당 대분류에 속하는 것으로, 대분류에 속하지 않는 새로운 퀴즈라면 새롭게 대분류를 추가하여 그 대분류에 속하도록 만든다.
  4. 파인튜닝과 프롬프트 엔지니어링을 이용해 chat gpt를 [학습 분석] 용도에 맞게 학습시키고 사용자가 취약한 부분을 보여준다.
  5. 사용자가 취약한 부분을 극복할 수 있도록 해결방안을 제시해준다. (ex. "~님은 데이터베이스 파트가 부족해요! ~~웹사이트에 방문하여 추가 정보를 확인해보면 어떨까요?", "~님은 컴퓨터알고리즘 파트의 학습이 부족해요! 특히, dynamic programming 관련 문제에 취약하니, [백준] 2775, 14916 문제를 풀면 훨씬 도움이 될 거예요!" )

자, 그렇다면 실제로 위와 같은 로직이 제대로 구현될 수 있는지 검증을 해보자.

우선 프롬프트 엔지니어링으로 응답이 어느정도의 수준으로 나올지 확인해볼 것이다.

1. 데이터셋 설정

데이터셋은 다음과 같다.

 

우선, user1, user2, user3가 있다고 가정할 것이다.

 

user1 : 주전공 - 컴퓨터공학과, 복수전공 - 경영학과 학생

 

user1은 컴퓨터공학과 관련 기술 블로그 글 3개, 경영학과 관련 기술 블로그 1개, 주전공과 복수전공과 관련 없는 교양 수업을 정리한 기술 블로그 1개의 링크를 입력하고 해당 노트를 바탕으로 퀴즈를 생성했다. 

카테고리 노트 내용 퀴즈 생성 개수
컴퓨터공학 CNN (Convolutional Neural Network) 관련 기술블로그 5개
도메인 이름 시스템(DNS) 관리, 트래픽 라우팅, 로드 밸런싱, DNS 레코드 유형 및 라우팅 정책에 관한 노트 5개
Amazon EC2를 사용하여 Linux 인스턴스를 시작하고 관리하는 방법에 관한 노트 5개
경영학 다국적 기업의 외국인 비용에 관한 노트 5개
전자전기공학 (랜덤) 물질의 전하(charge), 전압, 전류, 저항과 같은 전자공학을 이루는 기본적인 요소들에 대한 노트 5개

 

user2와 3도 각각 퀴즈를 생성하길 원하는 노트의 링크를 입력 혹은 파일을 업로드하여 저장소에 저장하고 각 노트를 바탕으로 퀴즈를 생성했다.

 

user2 : 주전공 - 전자전기공학과, 복수전공 - 심리학과

 

카테고리 노트 내용 퀴즈 생성 개수
전자전기공학 수 체계, 연산, 코드 및 핵심 용어 관련 노트 10개
심리학과 상담의 본질과 원리, 상담사의 역할과 덕목에 관한 노트 10개
불어불문학 (랜덤) 프랑스어 문법과 관련된 노트 5개
중어중문학 (랜덤) 중국어 문법과 관련된 노트  5개
독어독문학 (랜덤) 독일어 문법과 관련된 노트 5개

 

user3 : 주전공 - 경제학과, 복수전공 - 정치외교학과
카테고리 노트 내용 퀴즈 생성 개수
경제학 완전경쟁시장과 관련된 경제이론에 관한 노트 10개
정치외교학 비교정치학에 관한 노트 10개
컴퓨터공학 (랜덤) 선형 회귀에 관한 노트 10개
건축학 (랜덤) 건축법 및 건축 규정에 관한 노트 5개
식품영양학 (랜덤) 식품 위생학 관련 정리 노트 5개

 

우리는 사용자가 이 퀴즈들을 다 풀었다는 전제 하에 그 결과를 이용해 사용자의 학습을 분석할 것이므로, 이 데이터셋을 바탕으로 생성한 퀴즈의 요약본을 가지고 프롬프트 엔지니어링을 진행할 것이다. 

 

프롬프트 엔지니어링은 다음 포스팅에서 자세히 다루니 다음 페이지에서 계속하겠습니다! 🚩