1. 이번 주간의 요약

[완료된 작업]

  • 코드 피드백 모듈 고도화
  • 프로토타입 고도화

2. 이번 주간의 진행 상황

[완료된 작업]

코드 피드백 모듈 고도화: 코드 피드백 모듈을 고도화하는 과정에서 다음 세 가지 주요 기준을 도출할 수 있었습니다.

  • 첫째, 피드백이 사용자에게 명확하고 실질적인 가치를 제공해야 합니다.
  • 둘째, 모듈의 구조는 논리적이고 직관적이어야 합니다.
  • 셋째, 모듈은 성능을 유지하면서도 효율적인 길이로 최적화되어야 합니다.

이러한 기준을 바탕으로 초기 모듈 v0.1을 개선하여 v0.2와 v0.3 버전을 성공적으로 개발할 수 있었습니다.

v0.2의 주요 개선사항은 다음과 같습니다.

① 마크다운 태그를 코드 리뷰 컨셉에 적합하게 수정: ‘[코멘트필요여부]’를 ‘[리뷰필요여부]’로 ‘[코멘트]’를 ‘[리뷰]’로 변경

② 마크다운 태그를 영어로 변경하여 글자 수를 최소화: ‘[코멘트필요여부]’를 ‘[RNP]’(Review Necessity Prediction의 약어)로, ‘[수정이 필요한 코드]’를 ‘[RC]’(Review Code의 약어)로 변경

③ 프롬프트를 명사형으로 변경

④ 프롬프트의 구조와 순서를 조정하여 자연스러운 흐름으로 개선: RCGP(Review Comment Generation prompt의 약어)의 instruction을 restriction 앞에 배치

이러한 개선을 통해 v0.2는 전체 프롬프트의 길이를 124글자까지 단축하면서 v0.1과 동일한 성능을 유지했습니다. 그러나 고도화 과정에서 세 가지 문제가 확인되었습니다. 첫 번째는 응답 결과에 마크다운 누락, 두 번째는 할루시네이션(hallucination) 문제, 세 번째는 제출 코드의 작은 오류(오탈자, 공백 등)를 잡아내지 못하는 문제가 발생했습니다. 이를 해결하기 위해 v0.3(그림 1 참고)을 개발했습니다.

v0.3에서는 다음과 같이 개선되었습니다.

① RCGP에 응답 예시(Example) 추가: RCGP에 이상적인 프롬프트 예시를 추가하여 마크다운 누락 문제를 해결

② RCGP에 정답 코드(Solution) 추가: 온라인 저지의 문제 뱅크에서 출제자의 정답 코드를 추출하여 추가함으로써 할루시네이션 문제와 학생이 제출한 코드의 작은 오류 줄임

③ 프롬프트 길이 최적화: 공백 포함 722글자(공백 제외 553자)에서 701글자(공백 제외 588자)까지 단축

이러한 개선 덕분에 v0.3은 v0.2에서 다루지 못했던 코드 리뷰를 성공적으로 대응(그림 2 참고)할 수 있게 되었습니다.

image-20240627163232152

image-20240627163325619

image-20240627163452403

프로토타입 고도화: 기존 UI에 학생들이 다양한 문제를 살펴보고 열람할 수 있도록 트리 형태의 문제 보기 기능을 추가했습니다. 또한, 유지보수를 위해 기존에 한 페이지에 포함되어 있던 코드를 분리하여 프로젝트 구조(그림 3 참고)로 재구성하여, 필수 데이터와 프론트엔드 코드를 분리했습니다.

image-20240627163508333

quizList는 사용자가 문제를 보고 선택할 수 있도록 UI에 트리구조로 표현됩니다. 이를 위해 ANTD의 TreeDataNode를 활용했으며, 각 노드는 문제 제목(title), 문제 ID(key), 그리고 하위 문제 리스트(children)로 구성됩니다.

codeFeedbackModule은 코드 피드백 모듈의 설계에 따라 작성된 실제 프롬프트를 GPT API로 전송하는 요청 메시지를 포함합니다. 사용자가 문제를 선택할 때마다, 선택된 문제 ID에 해당하는 문항(Exercise)과 정답 코드(Solution)가 업데이트되어, 이는 문제 ID를 key로 하고 문항과 정답 코드를 값으로 하는 저장 방식으로 관리됩니다.

학생들이 문제를 열람하고 선택할 수 있는 기능은 그림 4에서 확인할 수 있습니다. 문제 목록에 표시된 이름과 TreeNode의 Depth는 사전에 조사했던 회사가 개발한 교재의 키워드를 기반으로 설정했습니다.

image-20240627163544895


4. 다음 주간의 계획

  • 설계 원칙 정립: 이번 주에 진행하지 못한 시스템 설계에 필요한 원칙을 수립할 예정이다.
  • 요구사항 명세서, 기능 명세서, 화면 설계서 작성

댓글남기기