Skip to content

release: 1.3.0 #116

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 20, 2025
Merged

release: 1.3.0 #116

merged 1 commit into from
Feb 20, 2025

Conversation

cjeongmin
Copy link
Contributor

@cjeongmin cjeongmin commented Feb 20, 2025

Release 1.3.0 (2025.02.20)

Note

  • AI 기능 성능을 개선했습니다.
  • LLM 응답 생성시 스트림 방식을 통한 사용자 경험 개선을 진행했습니다.
  • 토큰 기반의 악의적인 요청 차단과 함께 IP 기반 정책을 추가했습니다.
  • 비속어 탐지 기능을 추가했습니다.

개선 사항

스트림 방식 전환 (PR #98, #103)

클라우드 서비스에서 제공되는 LLM 모델을 이용하여 응답을 생성시 완성된 응답을 받기까지 지연시간이 오래 걸려, 사용자 경험이 저하되는 문제가 있습니다.

클라우드 서비스에서 토큰 단위로 데이터를 받을 수 있기에, 해당 방법으로 전환하여 사용자가 응답을 받아보는 첫 시점을 이전보다 개선했습니다.

2025-02-18.20.26.19.mov

질문/답변 개선 모델 튜닝

튜닝을 했음에도 불구하고 개선된 질문과 답변이 만족스럽지 않은 경우가 있어 성능을 더 높이고자 학습 데이터셋을 추가하고 프롬프트 문장을 개선하였습니다.

질문과 답변을 개선하는 과정에서 발생한 문제는 다음과 같았습니다.

  1. 정중하지 못한 표현 사용

  2. 질문 개선 요청 시 답변을 내놓는 문제

    Q) 오후 2시는 점심인가 저녁인가

    image

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 서버를 추가하여, 문장들을 입력으로 주면, 문장을 분류하여 확률과 함께 응답으로 제공하도록 개발했습니다.

입력 출력
image (1) image (2)

배치 작업을 통한 비속어 필터링 (PR #101)

classifier 서버를 활용하여 채팅의 비속어를 필터링 기능을 만들었습니다. 다만, 채팅 50개에 30초 가량의 검사 시간이 걸리기 때문에 매 채팅이 생성될 때마다 classifier 서버로 검사를 진행하게 되면 서버 전체의 블로킹 우려가 있었습니다. 이러한 특징을 고려하여 비속어 필터 작업을 배치 작업으로 구현했습니다.

매 분 당 50개의 채팅 검사를 진행할 수 있도록 하였습니다. classifier 서버를 토대로 비속어 여부를 검사하고 그 결과를 DB에 저장한 뒤, 비속어 채팅 리스트들을 브로드캐스트하여 사용자들의 화면에 실시간으로 반영될 수 있도록 하였습니다.

필터링 작업에 대한 프론트엔드 작업 (PR #96)

클라이언트에서는 부적절한 표현이 담겨 있는 채팅이라면 해당 채팅을 다른 문장으로 변경하여 표시하도록 변경했습니다.

또한, 필터링 기능을 토글로 제공하여 사용자가 가시여부를 결정할 수 있도록 제공합니다.

image (3)

@Copilot Copilot AI review requested due to automatic review settings February 20, 2025 06:51
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.

Files not reviewed (1)
  • package.json: Language not supported

Copy link
Contributor

@wlgh1553 wlgh1553 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

Copy link
Collaborator

@shl0501 shl0501 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

최근 좋은 릴노에 대해 고민이 많았습니다.

@cjeongmin cjeongmin merged commit 43872ca into main Feb 20, 2025
2 checks passed
@cjeongmin cjeongmin deleted the release branch February 20, 2025 09:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants