Claude Code で ZetaAPI を設定する
Claude Code(Anthropic 公式 CLI)を 30 秒で ZetaAPI 中継に切り替え、公式価格の 0.3×〜0.4× で利用。prompt cache 対応。
更新日 2026-10-05
こんなときに
Claude Code は Anthropic 公式のターミナル CLI で、npm i -g @anthropic-ai/claude-code でインストールすると、ローカルのディレクトリで対話的に Claude を呼び出せます。ZetaAPI は Anthropic 公式 API と完全互換の /v1/messages エンドポイントを提供しており、中継への切り替えは必須の環境変数を 2 つ設定するだけです。
事前準備
- Node.js 18+ と
@anthropic-ai/claude-codeCLI がインストール済み - ZetaAPI コンソールで API キーを取得済み(
sk-で始まる) - アカウント残高 > $1(最低チャージ額)
設定手順
1. 環境変数を設定
shell の設定ファイル(~/.zshrc / ~/.bashrc)に追加:
export ANTHROPIC_BASE_URL="https://api.staging.cosmos-router.com"
export ANTHROPIC_API_KEY="sk-あなたの-zetaapi-key"
export CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1
3 行目の CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1 は残しておくことをおすすめします。Claude Code はツール引数のストリーミングを Anthropic 公式エンドポイントに直接接続したときだけ有効にし、ANTHROPIC_BASE_URL を別の宛先にするとデフォルトで無効になります。そのため大きなファイルを書き込むと数分間出力が止まり、The response stopped arriving で終わることがあります。有効にすると、ツール引数は生成されるそばから返されるようになります。
設定を再読み込み:
source ~/.zshrc
2. ワンコマンドインストール(任意)
shell 設定を手で編集したくない場合は、一行で完了します:
npx --prefer-online zetaapi@latest setup --api-url=https://api.staging.cosmos-router.com claude-code
このコマンドは ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN と CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1 を ~/.claude/settings.json の env ブロックに書き込み(既存ファイルは settings.json.bak.<タイムスタンプ> としてバックアップ)、接続を検証します。env に CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING がすでに設定されている場合は、その値を上書きせずに残します。実行後はプロンプトに従い、Install Token(コンソールの「接続設定」/「新しいツールを接続」ダイアログで取得、ze_inst_ で始まり 5 分間有効)または API Key(sk-)を貼り付けてください。CI / 非対話環境では --token=ze_inst_xxx か環境変数 ZETAAPI_TOKEN が使えます。
3. 接続の確認
任意のプロジェクトディレクトリで実行:
claude
最初の質問の後、コンソールのダッシュボードに今回の呼び出しのトークン消費と費用がすぐに表示されます。
よくある質問
Q: なぜ 401 Unauthorized が出ますか?
ANTHROPIC_API_KEY が ZetaAPI キー(sk- で始まる)であり、Anthropic 公式の sk-ant- キーではないことを確認してください。
npx zetaapi setup --api-url=https://api.staging.cosmos-router.com で設定した場合、認証情報は ~/.claude/settings.json の env.ANTHROPIC_AUTH_TOKEN にあります。環境変数ではなくそちらを確認してください。
Q: 大きなファイルを書き込むと出力が止まり、The response stopped arriving と表示されます。どうすればよいですか?
Claude Code はツール引数のストリーミングを Anthropic 公式エンドポイントに接続したときだけ有効にします。ANTHROPIC_BASE_URL を別の宛先にすると、ツール引数(書き込むファイルの内容など)は生成し終わってからまとめて返されるため、大きなファイルでは数分間何も出力されず、Claude Code が接続が切れたと判断します。
shell の設定ファイルまたは ~/.claude/settings.json の env に CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING=1 を追加してください。shell の設定ファイルを変更した場合は、再読み込み(または新しいターミナルを開く)してから Claude Code を再起動します。npx zetaapi setup --api-url=https://api.staging.cosmos-router.com claude-code はこの設定を自動で書き込みます。
Q: prompt cache に対応していますか?
対応しています。Claude Code はデフォルトで ephemeral cache control を有効にします。ZetaAPI は元のキャッシュ挙動を透過し、キャッシュ読み取り価格は入力価格の 10% で、公式と同じです。
Q: Sonnet のコンテキストが 200K しかないのはなぜですか?1M を使い切るには?
Claude Code はサードパーティのエンドポイントに接続する際、その接続先が 100 万トークンのコンテキストに対応しているかを自動判定できないため、保守的に 200K を割り当てます。これはクライアント側の挙動であり、ZetaAPI の制限ではありません。
セッション内で一度明示的に指定すれば解除できます:
/model sonnet[1m]
/model でモデルピッカーを開き、1M context と表示された項目を選んでも構いません。[1m] は Claude Code のローカル指示に過ぎず、リクエスト送信前に取り除かれます。ZetaAPI が受け取るモデル名は claude-sonnet-5 のままで、追加設定は不要です。
ZetaAPI では Sonnet で 60 万トークン超、Opus で 90 万トークン規模のコンテキストが実際に動作しています。超長コンテキストは毎ターン履歴全体を送るため、トークン消費が大幅に増える点にご注意ください。次項の compact しきい値と併せて調整することをおすすめします。
Q: 自動 compact を無効にできますか?
できます。~/.claude/settings.json に次を追加してください:
"autoCompactEnabled": false
ただし、完全に無効化するよりも、しきい値を引き上げる方をおすすめします:
/autocompact 500k
指定可能な範囲は 100K〜1M で、現在のモデルのコンテキストウィンドウが上限になります。スクリプトや CI では環境変数 CLAUDE_CODE_AUTO_COMPACT_WINDOW(500000 のような数値のみ)を使えます。起動時に claude --autocompact 500k を付けると、その実行のみに適用されます。
完全に無効化すると、コンテキストが埋まった時点で履歴を要約して続行するのではなく、Prompt is too long を出して会話が中断します。「compact が頻繁すぎる」だけであれば、しきい値を上げる方が実用的です。
Q: 公式に戻すには何が必要ですか?
ANTHROPIC_BASE_URL を削除またはコメントアウトし、ANTHROPIC_API_KEY を Anthropic 公式キーに戻すだけです。npx zetaapi setup --api-url=https://api.staging.cosmos-router.com で設定した場合は、~/.claude/settings.json の env から ANTHROPIC_BASE_URL と ANTHROPIC_AUTH_TOKEN を削除してください(.bak.<タイムスタンプ> のバックアップがあります)。