ユースケース
Decide はテキストについて 1 つの問いに答えます。「これらのラベルのどれが合うか」です。テキストがすでにある場所(ユーザーのタブ、あなたの Node プロセス)で動くので、答えは 1 回ごとに無料かつプライベートで、数ミリ秒で返ります。決まったラベルで問いをカバーでき、ラベルごとに数十から数百の例を集められるときに使ってください。
向いている用途
問い合わせの振り分け。「請求」「不具合」「アカウント」「その他」。過去のチケットで訓練し、送信前のフォームで振り分け、ユーザーの入力中に適切なヘルプ記事を表示します。
const head = loadHead(await (await fetch("/support.head.json")).text());
const { choice, confidence } = await d.decide(message, head);
if (confidence > 0.8) showArticleFor(choice);フィードバックとレビューのトリアージ。「称賛」「不具合報告」「機能要望」「苦情」。何千ものアプリのレビューやアンケートの回答を、Node で数秒で分類します。API の請求はありません。
コマンドパレットと検索の意図。 "make it darker" を theme.dark に、"where's my invoice" を billing.invoices に対応付けます。最初の試しにはゼロショットで十分です。実際のクエリで訓練したヘッドはずっと良くなります。
投稿前のモデレーションのヒント。 入力中に「これは個人攻撃に読めます」と知らせます。テキストはデバイスから出ません。後押しとして使い、唯一のモデレーションにはしないでください。公開の有害性データセットをデフォルトのエンコーダーで計測しました。ラベルごとに 32 例のヘッドは 66.6% の割合で正解し、有害なコメントの 68〜86% を捕まえましたが、問題のないコメントの約 3 分の 1 にも旗を立てました(FAQ を参照)。やわらかい「よろしいですか?」には使えますが、ブロックには使えません。
ブラウザでデータセットにラベルを付ける。 タブで CSV を読み込み、クラスごとに 20 行へラベルを付けて訓練し、確信度の低い行から見直します。アップロードは何もありません。
LLM の前の安価な一次処理。 簡単な 80% をローカルで判定し、確信度の低いものだけを大きなモデルに送ります。訓練したヘッドの confidence は較正されているので、しきい値がそのまま意味を持ちます。
LLM に教えてもらう。 ラベル名だけから始め、LLM の呼び出しを withFallback で包みます。自信のないメッセージは LLM に送られ、その答えが訓練例になり、LLM に届く割合は下がり続けます。CLINC150(150 インテント)では、LLM が見た割合は最初の 68% から 10 回の再訓練後に 16% へ下がり、ローカルのヘッドは 95.3% になりました(デフォルトのモデル)。2 レーンのデモで様子を見られます。コードはフォールバックのガイドにあります。
ゲーム。 プレイヤーが入力したチャットやコマンド("attack the goblin"、"open the door")を、サーバーなしのオフラインで、1 メッセージ数ミリ秒で読み取ります。コマンドセットの試作ならラベル名だけで足ります。
ブラウザ拡張とオフラインアプリ。 サーバー呼び出しが遅い、使えない、または望まれない場面で、タブ、メモ、メール、現場の報告を分類します。モデルのダウンロードは 1 回だけで、以後はキャッシュされます。
機密性の高いテキスト。 医療、金融、人事、社内ツールなど、テキストを第三者の API に送れないと決まっている場面です。訓練と判定はどちらもユーザーのデバイスで動きます。
エージェントとアプリの配管。「このメッセージは質問か、命令か、雑談か」「このログ行はエラーに見えるか」。アプリが何千回も行う小さな判断です。
向いていない用途
- 自由回答の問い。 答えが決まったラベルのどれかでないなら、LLM を使ってください。
- 長い文書。 エンコーダーが読むのは 128 から 256 トークン(段落 1 つ程度)で、残りは無視します。
- 事実に基づく推論。「この返金はポリシーで認められるか」にはポリシーが必要です。文エンコーダーはそれをテキストと一緒には読めません。
- 英語以外の言語(デフォルトのモデルの場合)。代わりに
model: "debuffjp/decide-multilingual"を渡してください。日本語と中国語のインテントで 55% と 40% に対して 76% です(FAQ)。 - トーン:感情極性、感情、有害性。 デフォルトのエンコーダーは、テキストがどう感じているかより、何について書かれているかを読むほうが得意です。ラベルごとに 32 例の結果は、ツイートの感情極性 61%、感情 49% です(FAQ)。
- 例を用意できないラベル(精度が大事な場合)。インテントのベンチマークで、ゼロショットの 66-73% に対して、訓練したヘッドは 90-94% でした。
作ったものを共有する
decidekit で作ったものがあれば、Show and tell か debuff Discord に投稿してください。公開データで訓練したヘッドも歓迎します。