더 똑똑한 마켓플레이스, 온디바이스로.
판매자의 설명으로 판매글을 완성하고, 업로드 전에 NSFW 사진을 잡아내고, 구매자와의 채팅에서 전화번호와 계좌 정보를 감지합니다. 처리는 전부 기기에서 이뤄집니다.
마켓플레이스를 위해 만든 AI 모델
아무것도 기기를 벗어나지 않습니다
모든 모델이 구매자나 판매자의 휴대폰, 태블릿, 노트북에서 실행됩니다. 메시지, 계좌 정보, 사진은 보내거나 올리기 전에 검사하므로 서버에서 처리되지 않습니다.
호출당 비용 없음
모든 판매글, 사진, 메시지를 검사해도 호출당 요금이 없고, 운영할 인프라도 없습니다. 팀은 클라우드 비용부터 예측하지 않고도 검사를 추가할 수 있습니다.
사용자의 언어로
Redact는 27개 언어로 개인정보를 가립니다. EU의 모든 공용어에 노르웨이어와 아이슬란드어를 더한 것입니다. Toxic은 영어, 독일어, 프랑스어부터 아랍어, 일본어, 중국어까지 35개 언어로 욕설을 감지합니다.
예시
각 예시는 모델의 실제 출력을 재생합니다. 자세한 내용은 모델 페이지에서 확인하고, Schemer와 Redact는 직접 쓴 텍스트로 시험해 보세요.
Redact · 개인정보 마스킹
전화번호와 계좌 정보가 채팅에 오가지 않게
Redact는 메시지를 입력하는 동안 전화번호, IBAN, 카드 번호를 찾습니다. 이 정보를 가려 거래를 앱 안에 머물게 하거나, 보내기 전에 사용자에게 경고할 수 있습니다. IBAN과 카드 번호는 체크섬을 통과해야 하므로 이 감지는 믿을 만합니다. Redact가 가장 많이 놓치는 것은 형식이 자유로운 이름과 주소입니다.
Title · 제목과 설명
설명에서 판매글 제목을 자동으로 만들기
판매자가 물건 설명을 마치면 Title이 판매글에 쓸 짧은 제목과 요약을 씁니다. Title은 Apple 플랫폼에서만 실행되고 세부 내용을 틀릴 수 있으므로, 쓴 내용은 판매자가 고칠 수 있게 하세요.
Voz · 음성 인식
모바일 사용자가 판매글을 말로 설명하게 하기
판매자가 마이크를 누르고 물건을 설명하면, 말하는 동안 Voz가 설명을 받아 적습니다. 실시간 전사는 Apple 플랫폼에서만 실행되며, Android와 웹에서는 녹음이 끝난 뒤 Voz가 전사합니다. Voz는 유럽 언어 25개를 지원합니다.
Moderator · 콘텐츠 모더레이션
NSFW 이미지를 업로드 전에 감지하기
Moderator는 사진이 추가될 때마다 판매자의 휴대폰에서 검사하므로, 감지한 노출 사진은 서버에도 판매글에도 닿지 않습니다. 계정을 차단하기 전에 감지된 이미지는 사람이 검토하게 하세요.
Eye · 이미지 분류 · 베타
판매글에 가장 좋은 사진 고르기
Eye는 사진이 추가될 때마다 태그를 붙입니다: 무엇이 찍혔는지, 초점이 맞는지, 얼마나 보기 좋은지. 흐린 사진은 판매자에게 다시 찍어 달라고 하고, 대표 사진으로 가장 좋은 사진을 판매글 맨 앞에 두세요.
Schemer · 구조화 추출 · 비공개 베타
구매자의 메시지를 가격 제안으로 바꾸기
Schemer는 구매자의 메시지에서 가격, 직거래 시간, 장소를 읽어 내므로, 판매자는 한 번의 탭으로 제안을 수락하고 거래를 마무리할 수 있습니다. 메시지에 없는 항목은 Schemer가 비워 둡니다. Schemer는 비공개 베타 단계이며, 첫 SDK인 Swift용 SDK가 곧 출시됩니다.
Toxic · 혐오 표현 분류 · 베타
채팅 속 욕설을 감지해 숨기기
Toxic은 메시지마다 35개 언어로 혐오, 욕설, 위협 점수를 매깁니다. 표시된 메시지는 받는 사람에게 보이지 않게 하거나, 보내기 전에 보낸 사람에게 수정을 요청하세요. Toxic은 1차 선별 도구이므로, 신고는 바로 삭제하지 말고 사람이 검토하게 하세요.
시작하기
Swift, Kotlin, JavaScript용 SDK 하나로 필요한 모델을 설치하세요. 예제는 Redact로 메시지 속 개인정보를 가리고, Toxic으로 욕설 메시지를 숨깁니다.
iOS, macOS, Linux, Windows
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "4.3.0")
// target dependencies
.product(name: "Redact", package: "desert-ant-core")
.product(name: "Toxic", package: "desert-ant-core")
.product(name: "Moderator", package: "desert-ant-core")
.product(name: "Voz", package: "desert-ant-core")
import Redact
import Toxic
let redact = Redact()
let toxic = Toxic()
// before a message is sent
let r = try await redact.redaction(of: message)
if !r.items.isEmpty { holdBack(r.items) }
// when a message arrives
let check = try await toxic.analyze(incoming)
if check.isToxic { foldAway(incoming, check.content) }
Android
// build.gradle.kts (Maven Central)
implementation("ai.desertant:redact:4.3.0")
implementation("ai.desertant:toxic:4.3.0")
implementation("ai.desertant:moderator:4.3.0")
implementation("ai.desertant:voz:4.3.0")
import ai.desertant.redact.Redact
import ai.desertant.toxic.Toxic
val redact = Redact(context)
val toxic = Toxic(context)
// before a message is sent
val r = redact.redaction(message)
if (r.redactedText != message) holdBack(r)
// when a message arrives
val check = toxic.analyze(incoming)
if (check.isToxic) foldAway(incoming, check.content)
Web, Node.js
npm i @desert-ant-labs/redact @desert-ant-labs/toxic @desert-ant-labs/moderator @desert-ant-labs/voz @litertjs/core onnxruntime-web
import { Redact } from "@desert-ant-labs/redact";
import { Toxic } from "@desert-ant-labs/toxic";
const redact = await Redact.load();
const toxic = await Toxic.load();
// before a message is sent
const r = await redact.redaction(message);
if (r.items.length) holdBack(r.items);
// when a message arrives
const check = await toxic.analyze(incoming);
if (check.isToxic) foldAway(incoming, check.content);
마켓플레이스를 만들고 계신가요?
구매자와 판매자를 위해 더하고 싶은 기능을 알려 주세요. 모델 선택과 통합 계획을 도와드리겠습니다.






