Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Release 1.3.0 (2025.02.20)
Note
개선 사항
스트림 방식 전환 (PR #98, #103)
클라우드 서비스에서 제공되는 LLM 모델을 이용하여 응답을 생성시 완성된 응답을 받기까지 지연시간이 오래 걸려, 사용자 경험이 저하되는 문제가 있습니다.
클라우드 서비스에서 토큰 단위로 데이터를 받을 수 있기에, 해당 방법으로 전환하여 사용자가 응답을 받아보는 첫 시점을 이전보다 개선했습니다.
2025-02-18.20.26.19.mov
질문/답변 개선 모델 튜닝
튜닝을 했음에도 불구하고 개선된 질문과 답변이 만족스럽지 않은 경우가 있어 성능을 더 높이고자 학습 데이터셋을 추가하고 프롬프트 문장을 개선하였습니다.
질문과 답변을 개선하는 과정에서 발생한 문제는 다음과 같았습니다.
정중하지 못한 표현 사용
질문 개선 요청 시 답변을 내놓는 문제
Q) 오후 2시는 점심인가 저녁인가
1번 문제의 경우 프롬프트 문장에 다음과 같은 문장을 추가하여 해결하였습니다.
2번 문제의 경우 데이터 셋을 400개에서 1000개로 늘려 성능을 높이는 작업을 하였습니다.
IP 기반 악의적인 요청 차단 (PR #107)
AI 기능에 소모되는 토큰을 줄이기 위해 사용자가 AI 기능 요청을 악의적으로 계속해서 보내는 경우를 막았습니다.
기존에는 서비스에서 제공하는 세션토큰을 기반으로 사용자의 무분별한 요청을 막았습니다. (PR #76)
그러나 Ask-It 서비스는 토큰의 무제한 발급이 가능하기 때문에 토큰을 바꿔가며 요청을 보낼 경우 제대로 차단하기 어려울 수 있어 사용자의 IP 를 기반으로도 요청을 차단할 수 있게 하였습니다.
따라서 사용자의 토큰과 IP 를 캐싱한 뒤, 3초 이내에 같은 토큰이나 IP 가 포함된 요청이 발생할 경우 해당 요청을 반환할 수 있도록 하였습니다.
추가된 기능
비속어 탐지 기능
여러 실험적인 도전을 진행하다가 BERT 모델이 GPU 없는 인스턴스 서버에서 동작하는데 큰 무리가 없음을 확인하였습니다.
비속어 탐지 기능 자체는 모델의 성능이 뛰어나지 않더라도 실험적으로 도전해볼 수 있을 것 같다고 판단하여 해당 기능을 추가했습니다.
classifier server (PR #92, #94)
BERT 모델을 fine tuning 을 진행하여 공격적인 문장과 그렇지 않은 문장들을 분류할 수 있는 모델로 학습하였습니다.
해당 모델을 사용할 수 있는 API 서버를 추가하여, 문장들을 입력으로 주면, 문장을 분류하여 확률과 함께 응답으로 제공하도록 개발했습니다.
배치 작업을 통한 비속어 필터링 (PR #101)
classifier 서버를 활용하여 채팅의 비속어를 필터링 기능을 만들었습니다. 다만, 채팅 50개에 30초 가량의 검사 시간이 걸리기 때문에 매 채팅이 생성될 때마다 classifier 서버로 검사를 진행하게 되면 서버 전체의 블로킹 우려가 있었습니다. 이러한 특징을 고려하여 비속어 필터 작업을 배치 작업으로 구현했습니다.
매 분 당 50개의 채팅 검사를 진행할 수 있도록 하였습니다. classifier 서버를 토대로 비속어 여부를 검사하고 그 결과를 DB에 저장한 뒤, 비속어 채팅 리스트들을 브로드캐스트하여 사용자들의 화면에 실시간으로 반영될 수 있도록 하였습니다.
필터링 작업에 대한 프론트엔드 작업 (PR #96)
클라이언트에서는 부적절한 표현이 담겨 있는 채팅이라면 해당 채팅을 다른 문장으로 변경하여 표시하도록 변경했습니다.
또한, 필터링 기능을 토글로 제공하여 사용자가 가시여부를 결정할 수 있도록 제공합니다.