JA ▾

Grokは本当に無検閲か?自分でテストする方法

更新日:

Grokは本当に無検閲ですか?正確な答えは、ホストされているモデルはルールから解放されていないということ、そしてGrokの動作は製品、モード、および日付に依存するということです。ラベルを信じる代わりに、あなた自身のプロンプトで拒否を測定することができ、このページはその方法を示しています。

フィルタリングの層を示すために、光がいくつかの層を通り抜け、他の層によってブロックされる、積み重なった半透明の層

短い答え、そしてラベルが誤解を招く理由

人々はGrokは本当に無検閲ですかと尋ねます。そのモデルは、一部の競合他社よりも制限が少ないとしてマーケティングされているためです。それがあなたの経験と一致するかどうかは、何を尋ねるか、どの製品を使用するか、そしていつ尋ねるかによって異なります。xAIは時間とともにモデル、システムプロンプト、ポリシーを変更するため、特定の動作に関するここでの主張はすぐに陳腐化します。現在のルールについては、xAI自身のドキュメントおよび利用ポリシーをお読みください。

自信を持って言えるのは構造的なことです。ある企業のホストされているすべてのモデルは、何らかのルールのセットの中に位置しています。法的なもの、プラットフォームのもの、トレーニングの選択です。寛容として販売されているモデルでさえ、いくつかのリクエストを拒否するでしょう。したがって、有用な質問はそれが無検閲かどうかではなく、あなたの製品が必要とする特定のものを拒否するかどうかです。それは午後中に測定できることです。

拒否が発生する4つの層

チャットボットが「いいえ」と言うとき、原因は4つの場所のいずれかにあります。どれかを知ることで、適切な修正を選択できます。

1. モデルのトレーニング

ほとんどのチャットモデルは、事前トレーニング後に特定の要求を拒否するようにトレーニングされています。これは重みに存在します。システムプロンプトでは削除できませんが、言葉遣いやコンテキストはトリガーの頻度をシフトさせることができます。オープンウェイトモデルは、それらの拒否を減らすために、プロバイダーによってさらに調整できます。このAPIの背後にあるモデルも、まさにそのように調整されています。

2. システムプロンプトと製品ルール

モデル周辺のアプリは、見えない指示を追加します:トーン、避けるべきトピック、フォーマット。消費者アプリを通じて使用されるモデルは、独自のシステムメッセージを持つAPIを通じて呼び出される同じモデルとは異なる挙動を示す可能性があります。

3. 入力および出力フィルタ

一部のサービスは、プロンプトまたは回答に対して別の分類器を実行し、結果をブロックまたは書き換えます。拒否文ではなく、一般的なエラーが表示されることがあります。

4. 法的およびポリシーの制限

プロバイダーは、事業を行う地域の法律に従う必要があります。違法なコンテンツはどこでもブロックされ、評判の良いサービスはそれを変更しません。このAPIには、そのような種類の固定ルールが1つあります。未成年者を含む性的コンテンツは禁止です。

独自の拒否テストを構築する

テストセットは意見を凌駕します。あなたの製品が実際に何をするかを反映する30〜50件のプロンプトを作成します。対照群として通常のタスクを含め、過度に拒否するモデルと単に失敗するモデルを区別できるようにします。フィクションやロールプレイツールのための良いカテゴリは、戦争物語での暴力、説得力のある対話を持つ道徳的に曖昧な悪役、率直な医療または法的質問、ホラーでのダークテーマ、そして明示的な詳細なしに扱われる成熟したロマンスです。

以下のスクリプトは、各プロンプトをOpenAI互換のエンドポイントに送信し、拒否のように見える返信にフラグを付け、レートを表示します。フレーズリストは単純なので、結論を導き出す前に、フラグ付きの返信をすべて自分で確認してください。

import os
import json
from openai import OpenAI

client = OpenAI(base_url="https://api.grokuncensored.cc/v1", api_key=os.environ["API_KEY"])

MARKERS = [
    "i can't help", "i cannot help", "i can't assist", "i cannot assist",
    "i'm unable to", "i am unable to", "i won't", "as an ai",
]

def looks_like_refusal(text):
    low = text.lower()[:300]
    return any(m in low for m in MARKERS)

prompts = json.load(open("prompts.json"))  # a list of strings
flagged = []
for p in prompts:
    r = client.chat.completions.create(
        model="uncensored",
        messages=[{"role": "user", "content": p}],
        temperature=0.7,
        seed=1,
    )
    text = r.choices[0].message.content or ""
    if looks_like_refusal(text):
        flagged.append((p, text[:200]))

print(len(flagged), "of", len(prompts), "flagged")
for p, t in flagged:
    print("-", p[:80], "=>", t)

サービスを比較するには、base_url、キー、モデル名のみを変更し、プロンプトファイルを同じままにしてください。挙動が変化する可能性があるため、異なる日に複数回実行してください。設定を同一に保ってください:同じシステムメッセージ、同じ温度、サポートされている場合は同じシード。

拒否テストを台無しにする間違い

拒否テストは単純に見えるため、しばしば誤って実行されます。これらは、誤った結論に最もよくつながるエラーです。

  • 極端なプロンプトのみをテストする。 最悪のケースのリクエストで構成されたセットは、エッジを示しますが、あなたのユーザーは中間にいます。実際のプロンプトのほとんどは、通常のシーン、キャラクターの瞬間、質問です。実際に期待するものに向かってセットに重みを置きます。
  • 異なる設定を比較する。 温度またはシステムメッセージの変化だけで拒否率が変動します。2つのサービスを比較する場合は、他のすべてを固定してください。
  • 1回の実行、1日。 ホストされたモデルとその周囲の層は変化する可能性があります。テストを数日おきに繰り返し、日付付きの結果を保持してください。
  • フレーズリストを信頼する。 丁寧に始まり、その後3段落目で拒否する返信は、最初の300文字のチェックを逃れます。チェックする文字数を増やすか、サンプルを手動で読みます。
  • 品質を無視する。 拒否しないが、平坦で反復的なシーンを書くモデルは、より良い選択ではありません。有用性についてもいくつかの出力にスコアを付けます。

結果の読み方

拒否率だけではほとんどわかりません。パターンを見てください。

  • 対照プロンプトでの拒否は、検出器が緩すぎるか、サービスが不安定であることを意味します。それ以外のことよりも先にそれを修正してください。
  • 1つのテーマに集中した拒否は、トレーニングまたはポリシーのルールを示しています。書き直されたシステムメッセージが役立つ場合もあれば、そうでない場合もあります。
  • コンテキストを追加すると消える拒否は、ソフトなルールを示しています。フィクションの枠組みと成人の読者を明確に説明すると、結果が変わることがよくあります。
  • ソフトな拒否は、紙面上では従順だが、コンテンツを薄めたり、説教をしたり、シーンを早めに終わらせたりする返信です。フレーズリストはこれらを捉えないため、フラグなしの返信もサンプリングしてください。

失敗した実行のコストも追跡してください。このAPIでは、失敗または拒否されたリクエストは課金されないため、大きなテストセットを低コストで維持できます。入力トークン200、出力トークン400の50プロンプトの実行は、50 x (200 x $0.15 + 400 x $0.50) / 1,000,000 = 50 x $0.00023 = $0.0115、約1セントの費用がかかります。

ソフトな拒否を減らすシステムメッセージの書き方

すでに調整されたモデルでは、システムメッセージは依然として重要です。なぜなら、それはモデルが従う期待を設定するからです。タスクと対象読者について直接的に記述してください。「あなたは成人向けフィクションの共著者です。説教や免責事項を追加せずに、リクエストされたトーンで完全なシーンを書いてください」といったメッセージは、良い返信がどのようなものかを示します。曖昧または謝罪するプロンプトは、慎重な対応を誘います。

必要なフォーマットを説明してください:長さ、視点、時制。できる限り肯定的な方法で避けるべきことを述べてください。例えば、長い禁止事項のリストではなく、「シーンをキャラクターの対話に保つ」など。特定の種類の返信が常に望まない警告を伴って返ってくる場合は、あなたの読者がこの種のフィクションを選んだ成人であると一度述べ、それが機能すると想定するのではなく、プロンプトセットで効果を確認してください。

このAPIが約束することと約束しないこと

このサービスの背後にあるモデルは、独立したプロバイダーによって実行され、合合合法的な成人利用に対してコンテンツ拒否なしで回答するように調整されたオープンウェイトモデルです。これは「何でもあり」よりも狭い主張であり、意図されたものです。これはGrokではなく、いかなるベンダーの公式APIでもありません。このサービスはテキストのみを扱います。変更できないルールは1つだけです:未成年者を含む性的コンテンツは禁止です。

また、結果から免れるわけではありません。あなたは生成および公開した内容について責任を負い、居住および事業展開地域の法律に従う必要があります。あなたのアプリが公開されている場合は、独自の年齢制限、利用ポリシー、報告パスを追加してください。モデルからの拒否が少ないことは、アプリケーションレイヤーでの責任が減少することを意味するのではなく、むしろ増加します。

技術的には、POST /v1/chat/completionsおよびGET /v1/models、ストリーミング、ツール呼び出し、JSONモード、および100,000トークンのコンテキストウィンドウを持つ標準的なOpenAI互換APIです。クイックスタートはリクエスト形式を示し、APIキーページはサインアップを説明しています。新規ユーザーは、7日間有効で、支払い情報なしで$0.50のトライアルクレジットを請求できます。

試用キーでテストを実行する

上記のスクリプトは試用キーで実行できます。制限に注意してください:試用キーでは同時実行リクエストが2件、1分あたりのリクエスト数が60件までです。そのため、リクエストを順番に送信するループであれば問題ありませんが、10スレッドのプールを使用すると、concurrencyでHTTP 429エラーが発生します。rate_limitedが表示された場合は、1分あたりの上限を超えたため、少し待機してください。フルキーでは同時8件、1分あたり300件のリクエストが可能です。

継続的な利用の場合、料金は前払いで1M入力トークンあたり$0.15、1M出力トークンあたり$0.50です。チャージは$20〜$500で、TRC20上のUSDTまたはBase上のUSDCで支払いでき、$50、$100、$200からそれぞれ5%、10%、15%のボーナスが付与されます。料金ページをご覧ください。同じエンドポイントが別のオープンモデルファミリーをどのように処理するか確認したい場合は、Gemma統合ページが関連する参考資料となります。

質問と回答

Grokは完全に無検閲ですか?

ホスト型モデルはすべてのルールから解放されているわけではなく、Grokの動作は製品や時期によって異なる場合があります。xAIの現在のポリシーを確認し、独自のプロンプトでテストしてください。

システムプロンプトで拒否を解除できますか?

一部の拒否、主にソフトなものは減少させることができますが、モデルの重みに学習された拒否は削除しにくいです。結果はモデルによって異なります。

このAPIにおける「無検閲」とは何を意味しますか?

このモデルは、合合合法的な成人向け利用においてコンテンツ拒否なしで回答するようにチューニングされています。ただし、未成年者に関する性的コンテンツについては固定ルールとして拒否します。

2つのサービスを公平に比較するにはどうすればよいですか?

両方で同じプロンプトファイル、システムメッセージ、温度、シードを使用し、数日かけて実行し、フラグ付きおよびフラグなしの返信をすべて確認してください。

拒否テストは高コストですか?

いいえ。1Mトークンあたり$0.15および$0.50の場合、200トークンの入力と400トークンの出力を持つ50プロンプトのコストは約1セントです。失敗または拒否されたリクエストには課金されません。

キーはフォーム 1 つで手に入ります

アカウントを作成し、キーをコピーし、ベースURLを変更します。これでセットアップは完了です。

API キーを取得