50人規模のサーバーを翻訳するのはすでに解決済みの問題です。ほとんどのボットが対応でき、コピペでも十分です。以下では、数百人から数千人のメンバーの間のどこかで機能しなくなる3つのことと、なぜ機能しなくなるのか、そしてPigonaがそれぞれにどう対応しているかを説明します。
ほぼすべての翻訳ボットは一度に1つのメッセージを処理します。メッセージが届くと、それだけで翻訳APIに送られ、翻訳が返ってきます。静かなチャンネルではこれで問題ありません。ほとんどのメッセージがそれ単体で完結しているからです。
活発なチャンネルは、単体で完結したメッセージでできているわけではありません。返信、代名詞、文の断片、そして2分前に言われたことへの言及でできています。単独で翻訳すると、「うん、あれね」はどの言語でも情報を持ちません。チャンネルが速く動くほど、直前に来たものとの関係でしか意味を持たないメッセージの割合が高くなります - つまりこの問題は横ばいではなく、サーバーとともに大きくなっていきます。
間違えやすい部分
明らかな対策は、直近のN件のメッセージをコンテキストとして送ることです。活発なチャンネルではこれは静かに失敗します。なぜなら直近のN件のメッセージは、会話のN件分ではないからです。それらはボットの返信、コマンドの出力、他の翻訳、そして一言だけのリアクションです。アクティブなチャンネルから直近の生の10件のメッセージを取り出すと、実際の人間の会話は3件程度しかないかもしれません。
Pigonaのスマートコンテキストエンジンは、人間が書いた、意味を持つのに十分な長さの、条件を満たすメッセージだけを数え、それらを見つけるためにさらにさかのぼって読みます。そのため深さ10は、単に投稿された直近の10件ではなく、会話への10件の実質的な貢献を意味します。選択は単なるコードであり、モデル呼び出しではありません。決定論的で、2回目のモデルのやり取りを追加せず、複数に分散するのではなく単一のDiscord履歴リクエストの中に収まります。それらを探すのに最大でも50件のメッセージしか読まないため、大部分がボットの出力であるチャンネルが、1つの翻訳を無制限のスキャンに変えてしまうことはありません。
2つのダイヤルがあります。深さは、条件を満たすメッセージをいくつ集めるか - 5、10、または20です。最小長は、そもそもそのメッセージのためにコンテキストを集める価値があるとみなされる長さで、「ok」や「lol」がコストになるのを防ぎます。
インジェクションフィルターを作動させたコンテキストは、サニタイズして通すのではなく丸ごと破棄され、その場合はメッセージごとのコンテキスト料金が免除されます - 破棄された履歴に対して課金されることはありません。大規模サーバーではこれは仮定の話ではありません。メンバーが多いほど、誰かがボットに指示を入力したらどうなるか興味を持つ可能性が高くなります。
スマートコンテキストエンジンはすべてのサーバープランに含まれており、チャンネルの深さを設定するまでオフになっています - 新しいチャンネルはそれなしで始まります。その後、翻訳自体に加えて分析されたメッセージごとに少額の料金が追加されるため、深さはデフォルトで動くものではなく、意図的にオンにするコストのダイヤルです。
これは一般的に翻訳ボットに対する最も多い不満であり、純粋にスケールの問題です。外国語のメッセージすべての下に公開翻訳を投稿するボットは、そのチャンネルのトラフィックを2倍にします。1時間に20件のメッセージなら誰も気にしません。2000件になると、翻訳を必要としなかった人も含め、チャンネルは全員にとって読みづらくなります。
有用な問いは翻訳するかどうかではなく、結果をどこに落とすかです。Pigonaは4つの答えを用意しており、チャンネルごとに組み合わせられます。
小規模なサーバーには通常、1つの共通言語と何が許容されるかについて1つの文化があります。大規模なサーバーにはそれがありません。トラフィックのかなりの部分がモデレーションチームの誰も読めない言語になると、そのトラフィックは事実上モデレーションされていない状態になります - 誰かが許可したからではなく、誰も見ることができないからです。
これに対するDiscord自身の国際化ガイダンスは、バイリンガルのモデレーターを採用することに尽きますが、それも朝3時に4つ目の言語が必要になるまでの話です。自動ワードフィルターもこのギャップを埋めません。リストは言語ごとに手作業で作り直す必要があるからです。
ここでPigonaが何をしているか正直に言うと、コンテンツを読めるようにする、それだけです。公開チャンネルでの自律翻訳は、自分の言語で読むモデレーターが、他の全員と同じ場所、同じタイミングで実際に何が言われているかを見られることを意味します。Pigonaはモデレーション製品ではなく、毒性をスコア化せず、AutoModとも統合しません。取り除くのは「誰も読めなかった」という言い訳です。
Pigonaは無制限プランを宣伝する代わりにTranslation Creditsで課金しており、それは割り当てが実際のサーバーで持つかどうかという当然の疑問を生みます。以下は、Discordトラフィックの大半を占める短いメッセージについてのクレジットから翻訳への換算です。
| プラン | 価格 | 翻訳数 / 月 | 1日あたり |
|---|---|---|---|
| Community | 15€ | up to 50,000 | ~1,700 |
| Pro | 29€ | up to 100,000 | ~3,300 |
| Business | 45€ | up to 200,000 | ~6,700 |
2つの理由で、これらの数字はクレジット合計から想像するより大きくなります。課金されるのは読まれたメッセージではなく生成された翻訳に対してなので、元のテキストとPigonaがそれに付随して送るものはすべて私たちのコストであり、あなたのコストではありません。そして、すでに対象言語になっているメッセージはモデルに届くことすらないため、まったく費用がかかりません - 本番トラフィックでは、これはボットが読むものの約3分の1にあたります。つまり、大部分が英語のチャンネルに少数のドイツ語話者がいる場合、翻訳されるドイツ語の分だけ料金が発生します。英語はどれだけあっても費用がかかりません。
これらは上限であり、そう読むべきものです。約40文字までのあらゆるものに対する満額であるCredit 0.2の最低料金で、スマートコンテキストがオフの状態 - チャンネルが始まる設定 - ですべてのメッセージに価格を付けています。実際のチャンネルは長さが混在しており、自社の本番トラフィックで測定すると、Communityサーバーは50,000よりも月間29,000件の翻訳に近づきます。スマートコンテキストは分析されたメッセージごとに追加で少額の料金を加算しますが、それはチャンネルに対してオンにした場合のみです。
どちらの数字も繰り返しメッセージのキャッシュを考慮していないため、実際には両方とも改善されます。料金の詳細はこちら。
インストールしてから40分後ではなく、その前に知っておく価値があること:
無料プランは、コンテキスト処理が自分のトラフィックで本当に機能するかを確かめるのに十分です。それを解決する唯一のテストです。カード登録不要で、最初は1つのチャンネルに絞ることもできます。