1.1.0 (2025. 02. 06)
Release 1.1.0 (2025. 02. 06)
LLM을 활용해 사용자의 질문을 개선하고 축약하는 기능을 추가하는 것을 중점적으로 진행했습니다. 그와 함께 일부 이슈를 해결하고, UI/UX를 개선했습니다.
추가된 기능
질문 개선
사용자가 작성한 질문이 호스트에게 의도대로 전달되지 않는 경우가 종종 생기기도 합니다.
질문과 답변으로 이루어지는 Ask-It 서비스는 질문을 보다 작성하기 쉽게 지원하기 위해서 AI를 활용한 질문 개선 기능을 추가하기로 결정했습니다.
- 사용자의 경험을 개선하기 위해서 질문 작성시, AI를 활용하여 현재 질문을 개선할 수 있는 기능을 추가했습니다.
- 질문 작성 중, 질문 개선하기 버튼을 통해서 질문을 보다 명확하고 이해하기 쉬운 질문으로 변환할 수 있습니다.
2025-02-06.16.45.09.mov
글자 수 제한
질문과 답글에 글자 수를 500자로 제한하여 정책상 변화가 생겼습니다.
AI 서비스의 도입에 따라 토큰 비용이 발생하기 때문에 글자수 제한을 도입하였습니다.
- 참고 서비스인 slido의 150자 제한
- 현실적인 질문의 길이
- 마크다운 지원을 위해, 500자 제한
질문 요약
질문이 너무나도 길어지면, 읽기도 이해하기도 어려울 수 있습니다. 또한 AI 질문 개선 기능을 사용시에 500자를 넘는 응답을 받을 수도 있습니다.
이를 위해 질문 요약 기능을 추가했습니다. 사용자가 직접 요약하기보단 AI를 통해 요약한다면 사용자 경험을 높일 수 있을 것이라고 판단하였습니다.
- 사용자의 질문이 500자 제한 정책에 위배되지 않도록 AI를 활용해 500자 이하로 줄입니다.
- 또한 너무 길어서 호스트가 읽기 어려운 질문을 AI를 활용해 핵심만 요약하도록 합니다.
2025-02-06.17.30.36.mov
BE
질문 개선 기능 (PR #58)
프롬프트
프롬프트를 하는 과정에서 다음과 같은 문제가 발생하였고, 아래와 같은 방법을 통해 해결하였습니다.
- 마크다운 요소와 사용자가 첨부한 링크를 누락
- 입출력 예시를 제공하여 AI가 이를 참고해 개선된 질문을 할 수 있도록 하였습니다.
- 사용자의 질문에 마크 다운 요소가 있다면 꼭 포함할 것을 0번 규칙으로 지정하였습니다.
- AI가 사용자의 질문에 대한 답변을 추가함
- 재작성한 질문만을 답변으로 내놓고, 자신의 분석, 정보 등을 포함하지 말 것을 직접적으로 명시함으로써 문제를 해결하였습니다.
- 500자 이상 작성된 글이 답변으로 반환됨
- 질문 요약 기능을 추가하여 500자 이상 작성되었을 경우 질문요약기능을 통해 다시 글을 받아볼 수 있도록 합니다.
질문 요약 기능 (PR #67)
프롬프트
프롬프트를 하는 과정에세 다음과 같은 문제가 발생하였고, 아래와 같은 방법을 통해 해결하였습니다.
- 마크다운 요소가 누락되는 문제 발생
- 질문 개선 기능과 마찬가지로 마크다운 요소가 누락되는 문제가 발생하였습니다. 해당 문제를 질문 개선 기능때와 같은 방법으로 해결하였습니다.
- 상황마다 글자수 제한 정책(500자)을 넘는 글이 작성되는 문제 발생
- 질문과 상황에 따라 요약 기능을 통해 받아온 글이 글자수 제한 정책인 500자보다 더 많은 경우가 발생하였습니다.
- 이 문제는 차후 AI를 통해 요약한 글이 500자가 넘을 경우 자동으로 재요청을 보낼 수 있도록 처리할 예정입니다.
- 질문과 상황에 따라 요약 기능을 통해 받아온 글이 글자수 제한 정책인 500자보다 더 많은 경우가 발생하였습니다.
도커 컨테이너 bcrypt 문제 (PR #61)
bcryptjs
의 도입
docker container 실행 시에 bcrypt
의존성 문제가 발생했습니다.
2025-02-05 15:44:58 Error: Cannot find module '/app/node_modules/.pnpm/bcrypt@5.1.1/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node'
2025-02-05 15:44:58 Require stack:
2025-02-05 15:44:58 - /app/node_modules/.pnpm/bcrypt@5.1.1/node_modules/bcrypt/bcrypt.js
- 다양한 해결방안을 시도했지만 대부분의 알려진 방법들이 잘 작동하지 않아
bcrypt
라이브러리를bcryptjs
라는 js전용 라이브러리로 바꾸기로 결정을 했습니다. - 다음은
bcryptjs
설명의 일부입니다.- Optimized bcrypt in JavaScript with zero dependencies. Compatible to the C++ bcrypt binding on node.js and also working in the browser.
bcryptjs
를 사용하면bcrypt
보다 30% 가량의 성능 저하가 발생할 수 있습니다.- 하지만 저희 서비스에서는 access/refresh token을 활용하기 때문에 로그인 주기가 일주일 단위로 길고, 회원 가입도 자주 일어나지 않기 때문에 성능 저하가 발생하더라도 서비스 품질에 큰 영향을 주지 않을 것이라고 판단했습니다.
출력 토큰 제한으로 인한 문제
현재 AI의 출력 토큰이 최대 1024개로 제한되어 있어, 다음과 같은 문제가 발생할 수 있습니다.
- AI가 생성한 답변이 1024 토큰을 초과할 경우, 글이 중간에 잘려 불완전한 상태로 반환됨
- 사용자가 긴 URL을 포함한 경우, AI가 이를 온전히 포함하지 못하거나 URL이 누락됨
이러한 문제를 해결할 수 있는 방안을 검토할 예정입니다.
FE
질문/답변 UI/UX 개선 (PR #57, PR #64, PR #66)
질문과 답변 지원 기능이 추가됨으로써, 기존 UI의 변경이 필요하다고 생각이 되는 지점이었습니다.
따라서, 질문/답변 UI/UX를 개선하는 작업을 진행했습니다.
개선 전
질문 | 답변 |
---|---|
![]() |
![]() |
개선 후
질문 | 답변 |
---|---|
![]() |
![]() |
- 모달 하단 AI 기능을 사용하는 버튼 추가
- 마크다운 미리보기, 답변 작성시 질문 보기와 같은 버튼은 입력 영역 우측으로 위치 변경
또한, 추가적으로 질문과 답변을 작성한 후에 실수로 삭제되는 경우를 제거하기 위해서 일부 수정을 진행했습니다.
- 드래그 상태로 모달 밖으로 나갈 경우, 모달이 닫히는 경우 수정
- 질문, 답변 작성시 모달 외부를 클릭해도 모달이 닫히지 않도록 수정
질문 개선/축약 기능 추가 (PR #64, PR #69)
질문 개선/축약 기능을 사용할 시 기존의 경우와 다르게 추가적인 플로우가 필요했습니다.
- 응답 적용
- 재요청
- 응답 거절
따라서, 개선/축약 기능을 사용하고 질문/답글 입력 화면이 응답 이후에 사용자가 선택할 수 있도록 일부 UI가 수정되었습니다.
또한, 정책상 질문/답변의 글자수를 500자 이하로 제한하여 글자수를 카운트하는 기능에서 링크 또는 이미지의 경우에 링크 텍스트 자체는 제외하도록 추가적인 작업이 진행되었습니다.
What's Changed
- refactor(fe): split QuestionItem, ReplyItem components into multiple files by @cjeongmin in #48
- feat(fe): add skeleton UI by @cjeongmin in #50
- refactor(fe): improve code quality using SonarLint, SonarQube by @cjeongmin in #52
- docs: update system architecture by @wlgh1553 in #53
- feat(be): ai question enhancement by @wlgh1553 in #58
- fix(fe): modify modal UI that create question and reply by @cjeongmin in #57
- refactor(be): update markdown prompt by @wlgh1553 in #61
- refactor:(be) update prompt content by @wlgh1553 in #63
- feat(fe): Integrate question improvement API and enhance question/reply writing UI by @cjeongmin in #64
- feat(be): implement question shortening feature by @shl0501 in #67
- fix(fe): enhance UX by adding new features during question/reply creation by @cjeongmin in #66
- feat(fe): integrate question shortening API by @cjeongmin in #69
Full Changelog: v1.0.1...v1.1.0