リレーの選び方
Claude リレー(API 中継)が本物か確かめる方法
どのリレーでもトップページに「本物の Claude」と書くことはできます。このページでは、リレーの先にある Anthropic を自分で確かめる方法を説明します。何が証拠にならないか、偽造できないシグナルは何か、実行できるスクリプトも紹介します。CoreCode を含め、どのリレーにも使えます。
- モデルに「あなたは何のモデルですか」と尋ねても何の証明にもなりません。システムプロンプトに 1 行書けば、どのモデルも Claude を名乗ります。
- 確かめられるのは挙動です。Anthropic Messages のレスポンス形式、書き込んで読み戻せるプロンプトキャッシュ、改ざんした thinking の署名が拒否されることの 3 つです。
- Anthropic のドキュメントによれば、改ざんされた、または復号できない thinking の署名は必ず 400 を返します。
- チェック用スクリプト check-relay.py は Python の標準ライブラリだけで動き、1 回の実行は数セントです。
- 確認できるのは「上流が Anthropic であること」であり、選んだ等級のモデルが応答していることまでは証明しません。
- CoreCode は、オープンソースの ModelTrace フィンガープリントでモデル自体を 3 日ごとに検査し、結果と生データをこのページで公開しています。
リレーが手を抜く典型パターン
- モデルのすり替え。Opus を選んだのに、より安い Sonnet や Haiku、他社のモデルが答える。
- 公式 API を使っていない。上流がリバースエンジニアリングしたウェブ版やアプリ版のエンドポイントで、コンテキストが切り詰められ、ツール呼び出しやキャッシュも不完全。
- 使用量の捏造。トークン数やキャッシュ数が Anthropic の返した値ではなくリレー独自のルールで埋められ、請求の辻褄が合わない。
これらはどれも会話やコード生成はできるので、普段使いではなかなか気づけません。
「どのモデルですか」と聞いても証明にならない理由
モデルが答える自己紹介は、学習データとシステムプロンプトに由来するもので、信頼できる情報源ではありません。リレーがシステムプロンプトに「あなたは Claude Opus です」と入れれば、どのモデルもそのとおりに答えます。本物の Claude が自分のバージョンを間違えることもあります。素性や知識のカットオフ日を尋ねたり、口調で判断したりするのは、せいぜい手がかりで、証拠にはなりません。
有効なのは、Anthropic の API にしかなく、他者が真似できない挙動を調べることです。
偽造できない 3 つのシグナル
1. レスポンス形式と usage フィールド
Messages API は type: "message"、msg_ で始まる id、input_tokens と output_tokens を持つ usage を返します。キャッシュを使った場合は cache_creation_input_tokens と cache_read_input_tokens も含まれます。他のモデルの出力をこの形に変換するのは簡単なので、このチェックで分かるのは粗い変換だけです。ただし、残り 2 つのチェックの前提になります。
2. プロンプトキャッシュの書き込みと読み戻し
cache_control を付けた約 20,000 トークンのシステムプロンプトを送ります。1 回目は cache_creation_input_tokens が報告され、直後の同じ呼び出しでは同程度の cache_read_input_tokens が報告されるはずです。2 つのフィールドは Anthropic のプロンプトキャッシュのドキュメントに記載されています。
- 2 回とも 0:上流が Anthropic のプロンプトキャッシュを行っていないか、リレーが使用量を自前で計算しています。
- 書き込まれるだけで読み込まれない:リクエストが毎回別のアカウントに届いている可能性があります。上流は本物かもしれませんが、キャッシュはほとんど当たらず、Claude Code のコストが大きく増えます。キャッシュと課金を参照してください。
3. thinking ブロックの署名
拡張思考(extended thinking)を有効にすると、Anthropic は各 thinking ブロックに暗号化された signature を付けます。次のターンでそのブロックを送り返すと、API は署名を検証し、改変されたものを 400 で拒否します。他社のモデルは検証を通る署名を作れず、変換レイヤーには署名を検証するための Anthropic のキーがありません。Anthropic の説明では、API は署名によって thinking ブロックが Claude によって生成されたことを検証し(Thinking)、改ざんされた、または復号できない署名は必ず 400 を返します(Preserved thinking)。
テストの手順:ツール呼び出しを伴う署名付きの thinking ブロックを用意し、署名を 1 文字だけ変えて送り返すと拒否されなければなりません。変更せずに送り返すと受理されなければなりません。改ざんした署名まで受理されるなら、誰も署名を検証しておらず、上流は Anthropic ではありません。
チェック用スクリプト
3 つのチェックは 1 本のスクリプトにまとまっています。check-relay.py です。Python 3.8 以降と標準ライブラリだけで動き、キーは指定したアドレスにのみ送信し、他へは送りません。実行前に中身を読んでください。ソース、テスト、Issue は GitHub の CoreCodeAI/claude-relay-check にあります。
curl -fsSLO https://corecode.live/docs/verify/check-relay.py
python3 check-relay.py --base-url https://relay.example --key sk-your-key --model claude-sonnet-5-5
--base-url と --key を省略すると、Claude Code が使っている設定である ANTHROPIC_BASE_URL と ANTHROPIC_AUTH_TOKEN を読み込みます。リレーが Authorization: Bearer を要求する場合は --bearer を付けてください。1 回の実行は数セントで、約 20,000 トークンのキャッシュ付きリクエスト 2 回と、短いリクエスト 4 回です。
https://relay.example/v1/messages model=claude-sonnet-5-5
[PASS] shape Messages response, model claude-sonnet-5-5, 143 input tokens
[PASS] cache wrote 17755 tokens, read 17755 on call 2
[PASS] signature tampered signature rejected (HTTP 400), genuine one accepted
Result: all checks look like Anthropic
| 結果 | 意味 |
|---|---|
PASS | このチェックは Anthropic の API の挙動と一致しています。 |
WARN | 疑わしいが断定はできない状態です。たとえば、キャッシュが書き込まれるだけで読み込まれない場合です。 |
FAIL | このチェックの結果、上流が Anthropic ではない、または使用量が実際の値ではないことを示します。終了ステータスは 1 です。 |
ERROR | リクエスト自体が失敗しました(接続できない、キーが無効、残高がない、クライアントが拒否された)。チェックは完了しておらず、どちらとも言えません。終了ステータスは 2 です。 |
SKIP | モデルが thinking のリクエストを拒否したか、今回は思考しなかったため、署名のチェックをスキップしました。もう一度実行するか、別のモデルを試してください。 |
403 で拒否します。これはクライアントの制限であり、上流について何かを示すものではありません。CoreCode を調べるときは、Claude 满血(可外接)グループのキーを使ってください。仅限CC グループのキーは拒否されます。スクリプトでは証明できないこと
- 証明するのは「上流が Anthropic であること」で、「上流が選んだ等級であること」ではありません。Sonnet の thinking ブロックにも有効な署名が付きます。等級は、返された
modelフィールド、課金された各リクエストのモデルと単価、難しいタスクでの出来から判断してください。CoreCode 自身の検査については定期チェックを参照してください。 - 1 回のサンプルにすぎません。リレーが特定の時間帯や一部のリクエストでだけモデルをすり替えることもあります。1 回で済ませず、後日もう一度実行したほうが多くのことが分かります。
- 信頼性は測れません。成功率やレイテンシには履歴が必要です。たとえば CoreCode のサービスステータスがあります。
モデルを見分ける:CoreCode の定期チェック
上の 3 つのシグナルが証明するのは上流が Anthropic であることまでで、どのモデルが答えているかは分かりません。そこで、オープンソースのツール ModelTrace を使って自分たちで検査しています。モデルに 1 から 355 までの整数を数百個書かせると、モデルごとに好む数字が異なります。ModelTrace はその分布を、保持している GPT と Claude の 18 モデルのフィンガープリントと比べ、最も可能性の高いモデルを割り出します。
3 日ごとに、サーバーが「Claude 满血(可外接)」グループのキーでこれを実行します。Claude の各モデルにつき 3 ラウンド、1 ラウンドあたり 3 回答です。下の表は実行のたびに更新されます。両グループは同じアカウントを使っています。「仅限CC」グループから検査しないのは、このグループが Claude Code のシステムプロンプトを含むリクエストしか受け付けないためで、ModelTrace の作者はこのプロンプトが結果を大きく歪めると述べています。
最新の検査:2026-11-01 19:17 UTC、モデルごとに 3 ラウンド、1 ラウンドあたり 3 件の回答。すべてのプロンプトと回答は 2026-11-01.json にあり、ModelTrace で再計算できます。
| モデル | 有効ラウンド | Claude と判定 | そのモデルと判定 | 最も近いモデル |
|---|---|---|---|---|
claude-fable-5-1 | 3 / 3 | 95% | 指紋ライブラリにない | claude-opus-5-5 |
claude-haiku-5-5 | 3 / 3 | 100% | 100% | claude-haiku-5-5 |
claude-opus-5-5 | 3 / 3 | 100% | 100% | claude-opus-5-5 |
claude-sonnet-5-5 | 3 / 3 | 79% | 78% | claude-sonnet-5-5 |
過去の検査
| 日付 | claude-fable-5-1 | claude-haiku-5-5 | claude-opus-5-5 | claude-sonnet-5-5 |
|---|---|---|---|---|
| 2026-11-01 | 95% / — | 100% / 100% | 100% / 100% | 79% / 78% |
| 2026-10-31 | 100% / — | 100% / 100% | 100% / 100% | 96% / 79% |
| 2026-10-28 | 100% / — | 100% / 100% | 100% / 100% | 99% / 99% |
各セルは Claude と判定 / そのモデルと判定 の平均確率です。
表の読み方:
- 結果が有効なのは、フィンガープリントバンクにあるモデルの中だけです。バンクにないモデルでも、最も近いモデルに割り当てられます。
claude-fable-5-1はバンクにないため、「このモデル」列は「バンクにない」と表示され、Claude ファミリーの数値だけが有効です。 - 1 ラウンドごとのばらつきがあるため、表は 3 回の平均を示します。2026 年 10 月 28 日の最初の試行では、
claude-sonnet-5-5のあるラウンドで Claude ファミリーの値が 63% にとどまりましたが、同日の他の 2 ラウンドは 100% でした。 - ModelTrace の作者は、結果はあくまで参考だとしています。Claude のフィンガープリントは、Anthropic の API ではなく、サードパーティのリレーである OAIPro 経由で収集されたものです。署名チェックでは答えられないモデルの問題を補うものであり、上の 3 つのシグナルの代わりにはなりません。
- 自分で実行することもできます。ModelTrace のウェブページを開き、3 つのチャレンジをモデルに送って回答を貼り戻します。または ModelTrace をローカルで動かし、その API テストに
https://corecode.liveと 可外接 グループのキーを指定します。表の上にリンクした生データには、すべてのプロンプトと回答が入っているので、再採点もできます。
リレーで他に確認すべき点は、Claude Code リレーの選び方を参照してください。
FAQ
モデルにどのモデルか尋ねれば、リレーが本物か分かりますか?
いいえ。モデルの自己申告は学習データとシステムプロンプトに由来し、リレーは 1 行で変えられます。本物の Claude が自分のバージョンを間違えることもあります。他者が真似できない挙動を調べてください。偽造できない 3 つのシグナルを参照してください。
1 回のチェックにいくらかかりますか?
数セントです。約 20,000 トークンのキャッシュ付きリクエスト 2 回と、短いリクエスト 4 回です。
CoreCode で使えますか?
はい。Claude 满血(可外接)グループのキーで使えます。仅限CC グループは Claude Code だけを受け付けるため、スクリプトは 403 で拒否されて ERROR と報告されますが、これはどちらとも言えない結果です。
スクリプトはキーをどこに送りますか?
--base-url に渡したアドレスにのみ送ります。他の宛先とは通信しません。スクリプトは公開されているので、実行前に読んでください。
3 つのチェックがすべて通れば、確実に Opus ですか?
そうとは限りません。Sonnet の thinking ブロックにも有効な署名が付きます。等級は、返された model フィールド、課金された各リクエストのモデルと価格、難しいタスクでの出来から判断してください。スクリプトでは証明できないことを参照してください。CoreCode は各モデルを 3 日ごとに ModelTrace で検査しています。定期チェックを参照してください。