gg-friggin-ez — Fast & free profanity and toxicity screening via Jev & Laya
gg-friggin-ez — Jev·Laya를 활용한 빠른 무료 욕설·유해성 탐지
gg-friggin-ez는 Node.js용 다국어 욕설·유해성 탐지 도구로, 로마자 표기된 인도어 욕설이나 leetspeak, ASCII 그림 같은 우회 표현을 걸러냅니다. 제작자는 500ms 미만 응답과 낮은 비용을 내세우지만, 공개한 벤치마크는 14개 언어, 42개 메시지로 초기 검증 단계입니다.
- 주제
AI 요약
gg-friggin-ez는 Node.js 애플리케이션에 붙이는 다국어 욕설·유해성 탐지 도구입니다. Jev와 Laya 같은 System 1 모델을 활용해 실시간 분류를 목표로 하며, leetspeak, 문자 사이를 띄운 표현, ASCII 그림, 인도어 욕설의 로마자 표기 등을 탐지한다고 소개합니다. 결과에 따라 ALLOW, REVIEW, CENSOR, BAN 조치를 적용하며, 신뢰도와 우회 탐지 여부, 주요 언어 정보도 반환합니다. npm 패키지로 배포하고 오픈소스이며, 자체 모델을 연결하는 BYOM 구조도 지원합니다.
처리 속도와 비용
제작자는 처리 시간이 500ms 미만이라고 설명합니다. 제품 소개에는 메시지당 약 0.000004달러가 적혀 있지만, 댓글에서는 Jev 사용 시 메시지당 약 0.000042달러라고 밝혔습니다. 자체 호스팅 오픈소스 모델을 쓰면 추론 비용이 없다고 설명합니다.
초기 벤치마크와 오탐 대응
다국어 탐지에서 오탐이 우려된다는 질문에 제작자는 14개 언어, 언어별 3개씩 총 42개 메시지를 시험한 결과를 제시했습니다. 전체 정확도는 41/42, 97.6%였고 인도어·로마자 표기 사례에서는 94.4%였습니다. 표본이 작아 초기 근거로만 봐야 한다고 덧붙였습니다. 정상 메시지가 자동 차단된 사례는 없었고, 보지푸리 문장 하나가 허용 대신 검토 대상으로 분류됐습니다. ‘Scunthorpe’ 문장도 차단하지 않았다고 설명했습니다. 각 호출은 확률과 판단 근거를 반환하며, 모호한 사례는 즉시 차단하지 않고 검토로 보냅니다. 다만 제작자가 든 42개 사례 중 마라티어 문장 하나는 임계값 바로 아래로 분류돼 모델이 놓쳤고, 사람이 확인해야 했습니다.
Product Hunt 반응
- @itisshikhar — 안녕하세요, Product Hunt! 저는 gg-friggin-ez를 만든 Shikhar입니다. 실머니 게임 업계에서 일할 때 채팅 검열에는 제대로 된 답이 없었습니다. 너무 느리거나 비싸거나, 고정 키워드 목록을 벗어난 표현을 잡지 못했습니다. 이후 백엔드와 AI 엔지니어링으로 옮겼고, 예전 문제와 현재 기술 스택을 결합해 이 도구를 만들었습니다. 기존 필터와 ML·NLP 모델은 빠르지만 취약했습니다. 로마자 표기 인도어, 속어, ASCII 그림, 창의적인 우회 표현을 다루기 어려웠습니다. LLM은 똑똑하지만 대규모로 돌리기에는 비용이 큽니다. Jev와 Laya 같은 System 1 모델은 실시간 분류를 위한 단일 순전파 판단 엔진입니다. 500ms 미만 처리, 결정론적 출력, 토큰 백만 개당 몇 센트 수준을 목표로 합니다. gg-friggin-ez는 로마자 표기 인도어 욕설, leetspeak, ASCII 그림 우회를 탐지하고, 유해성에 따라 ALLOW, REVIEW, CENSOR, BAN을 반환합니다. 신뢰도 점수, 우회 탐지 표시, 주요 언어 분류도 제공합니다. 기본 엔진은 TypeSafe AI의 Jev지만, 자체 System 1 모델을 연결할 수 있습니다. 100% 무료 오픈소스입니다.
npm i gg-friggin-ez로 설치할 수 있습니다. GitHub와 데모도 공개했습니다. 채팅 필터를 속여 본 적이 있나요? 어떻게 했는지 알려주세요. gg-friggin-ez가 잡는지 보겠습니다. - @galdayan — 다국어 leetspeak와 문자 간격 탐지는 이 문제에서 어려운 부분이며, 오탐이 자주 생기는 지점이기도 합니다. 지명이나 사용자 이름, 다른 언어에서는 평범한 단어인데 우회 표현처럼 보이는 단어도 실제 우회 시도를 잡는 패턴 매칭에 함께 걸릴 수 있습니다. 욕설 문자열이 문맥과 무관하게 들어 있는 ‘Scunthorpe’가 필터에 걸리는 사례가 대표적입니다. 실머니 게임처럼 음소거나 이용 정지가 따르는 채팅에서 잘못 차단된 이용자는 별도의 고객 지원 비용을 만듭니다. 언어별 오탐률을 기록한 자료가 있나요? 아니면 검열을 적용하기 전에 게임 쪽에서 무엇이 왜 표시됐는지 확인할 방법이 있나요? 조용히 통과·실패만 반환하는 방식이 아닌지 궁금합니다.
- @itisshikhar — 기록은 있습니다. 다만 표본이 아직 작습니다. 14개 언어에 메시지 42개, 언어별 세 개씩이므로 엄밀한 연구가 아니라 초기 근거로 봐주세요. 전체 정확도는 97.6%(42개 중 41개), 인도어·로마자 표기 사례 정확도는 94.4%입니다. 질문하신 부분과 관련해 정상 메시지가 자동 차단된 사례는 없습니다. 보지푸리 문장 하나가 바로 허용되지 않고 검토로 갔지만, 오탐에 가장 가까운 사례였습니다. ‘I live in Scunthorpe’도 문맥을 보는 모델이라 문자열 일부만 비교하는 방식과 달리 욕설·유해성 없음, ALLOW로 나왔습니다. 아무 결과도 모르게 처리하지 않습니다. 백엔드가 조치하기 전에 호출마다 확률과 판단 근거를 돌려줍니다. 자동 차단은 신뢰도가 높을 때만 실행하고, 모호한 사례는 즉시 차단하는 대신 검토로 보냅니다. 이 문제에서는 정밀도보다 재현율이 더 중요할 수 있습니다. 오탐은 검토 대상으로 표시될 수 있지만, 유해하거나 욕설이 담긴 채팅을 놓치면 라이브 스트리밍에서 수천 명이 볼 수도 있기 때문입니다. 제가 만든 42개 사례에서 놓친 한 건도 마라티어 문장이 임계값보다 조금 낮게 나와 모델이 표시하지 못했고, 사람이 잡아야 했습니다.
- @galdayan — @itisshikhar, 솔직히 정말 안심되는 답변입니다. 예상보다 훨씬 자세하네요. 라이브 스트리밍에서는 정밀도보다 재현율을 우선하는 설명이 이해됩니다. 아무 조치도 모르게 처리하는 대신 확률과 판단 근거를 반환한다는 점이 제 걱정에 답해줍니다. 42개 사례가 적다는 점도 말씀하신 대로지만, 놓친 사례가 즉시 차단이 아니라 검토로 이어진 것은 바람직한 실패 방식입니다. 벤치마크가 늘어나는지 지켜보겠습니다.
원문: Product Hunt / 번역·요약: Trawling