もっと賢いマーケットプレイスを、オンデバイスで。
出品者の説明から出品情報を仕上げ、アップロード前に NSFW 写真を検知し、購入者とのチャットに含まれる電話番号や口座情報を見つけます。すべてオンデバイスで。
マーケットプレイスのための AI モデル
端末の外には何も出ない
どのモデルも、購入者や出品者のスマートフォン、タブレット、ノートパソコン上で動きます。メッセージ、口座情報、写真は送信やアップロードの前にチェックされるので、サーバーで処理されることはありません。
呼び出しごとの費用なし
すべての出品、写真、メッセージをチェックしても、呼び出しごとの請求はなく、運用するインフラもありません。チームは、先にクラウド費用を見積もらなくてもチェックを追加できます。
ユーザーの言語に対応
Redact は 27 言語で個人データを隠します。EU のすべての公用語に、ノルウェー語とアイスランド語を加えた言語です。Toxic は、英語、ドイツ語、フランス語からアラビア語、日本語、中国語まで、35 言語で暴言を検知します。
動作例
どの例も、モデルの実際の出力を再生しています。詳しくは各モデルのページへ。Schemer と Redact は、自分のテキストで試せます。
Redact · PII マスキング
電話番号や口座情報をチャットに出さない
Redact は、入力中のメッセージから電話番号、IBAN、カード番号を見つけます。それを伏せて取引をアプリ内にとどめることも、送信前にユーザーに警告することもできます。IBAN とカード番号はチェックサムを通ったものだけを拾うので、その検出は信頼できます。Redact の見落としが最も多いのは、決まった形のない氏名や住所です。
Title · タイトルと説明
説明から出品タイトルを自動で付ける
出品者が商品の説明を終えると、Title が出品用の短いタイトルと概要を書きます。Title は Apple プラットフォーム専用です。細部を間違えることもあるので、書かれた内容は出品者が編集できるようにしてください。
Voz · 音声認識
モバイルでは、出品内容を声で説明できるように
出品者がマイクをタップして商品を説明すると、話すそばから Voz が説明文を書きます。リアルタイムの文字起こしは Apple プラットフォームのみで、Android と Web では録音が終わってから文字起こしします。Voz が対応するのは欧州の 25 言語です。
Moderator · コンテンツモデレーション
NSFW 画像を、アップロード前に検知する
Moderator は、写真が追加されるたびに出品者のスマートフォン上でチェックするので、検知したヌード画像が自社のサーバーや出品ページに届くことはありません。アカウントを停止する前に、検知された画像は人が確認するようにしてください。
Eye · 画像分類 · ベータ
出品に最適な写真を選ぶ
Eye は、写真が追加されるたびにタグを付けます。何が写っているか、ピントが合っているか、見栄えはどうか。ぼやけた写真は出品者に撮り直してもらい、メイン画像に最も向いている写真を出品の先頭に置きましょう。
Schemer · 構造化抽出 · クローズドベータ
購入者のメッセージを、オファーに変える
Schemer は購入者のメッセージから価格、受け渡しの日時、場所を読み取るので、出品者はワンタップでオファーを承諾し、取引を成立させられます。メッセージに書かれていない項目は、Schemer が空欄のまま残します。Schemer はクローズドベータで、最初の SDK(Swift 向け)は近日公開です。
Toxic · ヘイトスピーチのトリアージ · ベータ
チャットの暴言を検知して隠す
Toxic は、メッセージ一つひとつにヘイト、暴言、脅迫のスコアを 35 言語で付けます。検知したメッセージを受信者に見せないようにすることも、送信前に送信者に書き直しを促すこともできます。Toxic はトリアージの補助なので、報告されたメッセージはすぐに削除せず、人の確認に回してください。
はじめる
必要なモデルは、1 つの SDK から Swift、Kotlin、JavaScript でインストールできます。この例では、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);
マーケットプレイスを開発中ですか?
購入者と出品者のために何を加えたいかを教えてください。モデル選びと組み込みの計画をお手伝いします。






