CoreCodeドキュメント

リレーの選び方

Claude リレー(API 中継)が本物か確かめる方法

最終更新:

どのリレーでもトップページに「本物の Claude」と書くことはできます。このページでは、リレーの先にある Anthropic を自分で確かめる方法を説明します。何が証拠にならないか、偽造できないシグナルは何か、実行できるスクリプトも紹介します。CoreCode を含め、どのリレーにも使えます。

ポイント
  • モデルに「あなたは何のモデルですか」と尋ねても何の証明にもなりません。システムプロンプトに 1 行書けば、どのモデルも Claude を名乗ります。
  • 確かめられるのは挙動です。Anthropic Messages のレスポンス形式、書き込んで読み戻せるプロンプトキャッシュ、改ざんした thinking の署名が拒否されることの 3 つです。
  • Anthropic のドキュメントによれば、改ざんされた、または復号できない thinking の署名は必ず 400 を返します。
  • チェック用スクリプト check-relay.py は Python の標準ライブラリだけで動き、1 回の実行は数セントです。
  • 確認できるのは「上流が Anthropic であること」であり、選んだ等級のモデルが応答していることまでは証明しません。
  • CoreCode は、オープンソースの ModelTrace フィンガープリントでモデル自体を 3 日ごとに検査し、結果と生データをこのページで公開しています。

リレーが手を抜く典型パターン

これらはどれも会話やコード生成はできるので、普段使いではなかなか気づけません。

「どのモデルですか」と聞いても証明にならない理由

モデルが答える自己紹介は、学習データとシステムプロンプトに由来するもので、信頼できる情報源ではありません。リレーがシステムプロンプトに「あなたは 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 のプロンプトキャッシュのドキュメントに記載されています。

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 のリクエストを拒否したか、今回は思考しなかったため、署名のチェックをスキップしました。もう一度実行するか、別のモデルを試してください。
Claude Code 限定のキーは ERROR になりますリレーによっては Claude Code クライアントからのリクエストしか受け付けず、このスクリプトを 403 で拒否します。これはクライアントの制限であり、上流について何かを示すものではありません。CoreCode を調べるときは、Claude 满血(可外接)グループのキーを使ってください。仅限CC グループのキーは拒否されます。

スクリプトでは証明できないこと

モデルを見分ける: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-13 / 395%指紋ライブラリにないclaude-opus-5-5
claude-haiku-5-53 / 3100%100%claude-haiku-5-5
claude-opus-5-53 / 3100%100%claude-opus-5-5
claude-sonnet-5-53 / 379%78%claude-sonnet-5-5

過去の検査

日付claude-fable-5-1claude-haiku-5-5claude-opus-5-5claude-sonnet-5-5
2026-11-0195% / —100% / 100%100% / 100%79% / 78%
2026-10-31100% / —100% / 100%100% / 100%96% / 79%
2026-10-28100% / —100% / 100%100% / 100%99% / 99%

各セルは Claude と判定 / そのモデルと判定 の平均確率です。

表の読み方:

リレーで他に確認すべき点は、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 で検査しています。定期チェックを参照してください。