背景
Claude Code は使いやすい。補完精度も高いし、コードベースの把握能力は現時点でトップクラスだ。 ただ、一点だけ致命的な問題がある——高すぎる。 ヘビーユーザーなら月に数万円を Anthropic に払っているはずだ。
一方で DeepSeek は、ベンチマーク上では Claude に肉薄しながらも、API コストは桁違いに安い。 そして Claude Code は、バックエンドの LLM を差し替えられるようになっている。 この二つを組み合わせない手はない。
コスト比較
| モデル | Input (per 1M tok) | Output (per 1M tok) | 備考 |
|---|---|---|---|
| Claude Sonnet 4.5 | $3.00 | $15.00 | Claude Code デフォルト |
| DeepSeek V3 | $0.14 | $0.28 | 約 95% 削減 |
| DeepSeek R1 | $0.55 | $2.19 | 推論特化、やや高め |
仕組み
Claude Code は内部で ANTHROPIC_BASE_URL 環境変数を参照してAPIエンドポイントを決定する。
DeepSeek の API は OpenAI 互換フォーマット(/v1/chat/completions)を提供しているが、
そのままでは Claude のメッセージフォーマットと一致しない。
そこで間にプロキシサーバーを立て、Claude フォーマット → OpenAI フォーマット変換を行う。 これにより Claude Code は何も知らずに DeepSeek を叩くことになる。
手順
DeepSeek の API キーを取得する
platform.deepseek.com でアカウントを作成し、API キーを発行する。クレジットを少額チャージしておく($5 で数ヶ月は余裕)。
プロキシを立てる(claude-to-openai)
変換プロキシの最もシンプルな選択肢は claude-to-openai 系のOSSを使うことだ。Node.js が入っていれば以下で動く。
# リポジトリを取得
git clone https://github.com/example/claude-openai-proxy
cd claude-openai-proxy
npm install
# .env に DeepSeek の API キーをセット
echo "OPENAI_API_KEY=sk-your-deepseek-key" > .env
echo "OPENAI_BASE_URL=https://api.deepseek.com/v1" >> .env
# プロキシ起動(デフォルト: localhost:8080)
npm start
Claude Code の向き先をプロキシに変更する
起動前に環境変数を設定するだけ。.bashrc や .zshrc に書いておくと楽だ。
# シェルに追記(永続化)
export ANTHROPIC_BASE_URL="http://localhost:8080"
export ANTHROPIC_API_KEY="dummy-key" # 形式チェックを通すためのダミー
# Claude Code を起動
claude
モデルを指定する(オプション)
デフォルトでは DeepSeek V3 が使われる。R1(推論モデル)を使いたい場合はプロキシの設定で切り替える。複雑なアーキテクチャ設計には R1、日常的なコーディングには V3 という使い分けが効率的だ。
# モデルを明示的に指定する場合
export CLAUDE_MODEL="deepseek-reasoner" # R1
# または
export CLAUDE_MODEL="deepseek-chat" # V3
動作確認する
Claude Code を起動して簡単なコード生成を頼んでみる。レスポンスが返ってきて、DeepSeek のダッシュボードでトークン消費が記録されていれば成功だ。
claude --version と claude "hello world の Python を書いて"
で疎通確認するのが速い。プロキシのコンソールにリクエストログが流れるはず。
落とし穴と注意点
コンテキスト長の差異
DeepSeek V3 は 64K トークン、R1 は 128K トークンのコンテキストをサポートする。 Claude Sonnet の 200K より短いため、大規模なコードベースを丸ごと読ませる用途では限界を感じる場面がある。
ツール使用(Function Calling)
Claude Code の一部機能はファイル操作や検索などの「ツール」を呼び出す。 DeepSeek も Function Calling に対応しているが、プロキシが正しく変換できない場合がある。 エラーが出た場合は、プロキシのバージョンを確認することを推奨する。
データはどこを通るか
コードは DeepSeek のサーバー(中国)に送信される。 機密性の高いコードや業務コードには使わないこと。 個人プロジェクトや学習用途に限定するのが賢明だ。
プロキシのレイテンシが気になっていたけど、ローカルで立てると実用上ほぼ無視できるレベルだった。V3 で十分すぎる。