GitHub リポジトリ: nogataka/claude-code-proxy-ts
1. このツールでできること
Claude Code Proxy を導入すると、Claude形式のAPI呼び出しを維持したまま複数のプロバイダ(OpenAI, Azure, Ollama, Databricks など)を柔軟に切替利用できます。この記事では、概要から仕組み、設定方法、今後の展望までをわかりやすく紹介します。
図: 機能対応表
機能 | OpenAI | Azure | Ollama | Databricks |
---|---|---|---|---|
SSEストリーム | ○ | ○ | ○ | △(同期中心) |
ツール呼び出し | ○ | ○ | ○ | △ |
モデル抽象化 | ○ | ○ | ○ | ○ |
2. なぜ必要なのか?背景と課題
各プロバイダは API 仕様や挙動が微妙に異なり、クライアント実装が複雑になりがちです。Claude Code Proxy は Claude形式で統一されたAPI を提供し、差分をサーバ側で吸収します。
図: 従来の課題
3. Claude Code Proxyとは?
Claude Code Proxy は、Claude形式 /v1/messages
を受け取り、各プロバイダへ変換・転送するプロキシサーバです。主な機能は以下の通りです。
- 複数プロバイダ対応(OpenAI, Azure, Ollama, Databricks)
- SSEストリーミング(Claudeイベント形式)
- ツール呼び出し & マルチモーダル対応
- モデル抽象化(big/middle/small)
- クライアント認証 & ロギング機能
図: 全体像
4. まずは動かしてみよう
最短導入手順
npx @nogataka/claude-code-proxy-ts@latest
- 初回起動で
~/.claude-code-proxy-ts/config.json
が自動生成。 - 環境変数で接続先を指定:
ANTHROPIC_BASE_URL=http://localhost:8082 claude
図: 導入フロー
5. 設定ファイルを理解する
設定は JSON 一枚で管理します。主要項目:
- providers: 各プロバイダの adapter・APIキー・baseUrl・モデル定義
- routing: defaultProvider・fallbackOrder
- limits: timeout・retries・max/min tokens
- client: expectedApiKey でアクセス制御
図: 設定ファイル構造
6. 仕組みをのぞいてみる(アーキテクチャ)
Fastify ベースで構成され、以下の流れで処理が進みます。
- API層でリクエスト受信
- 変換層で Claude形式 ⇔ プロバイダ形式を変換
- クライアント層で実際の API 呼び出し
- レスポンスを Claude形式 SSE に再構築
図: モジュール構成
7. リクエストとレスポンスの変換ロジック
リクエスト変換
- Claude メッセージ → OpenAI/Azure/Ollama/Databricks の形式へ変換
- system/user/assistant 役割、tools、画像、max_tokens 等を適用
レスポンス変換
- Providerのレスポンスを Claude のイベント形式に再構築
- SSE:
message_start → content_block_start → content_block_delta → content_block_stop → message_stop
- Usage 再構築、エラー統一
図: SSEタイムライン
8. プロバイダごとの特徴
Adapter | 特徴 | 注意点 |
---|---|---|
openai | Chat Completions互換 | SSE対応 |
azure | デプロイ名を model に記入 | baseUrl に /deployments を含めない |
ollama | JS SDK 利用、ローカルモデル対応 | stream切替可能 |
databricks | /invocations 経由で同期呼出 | stream非対応 |
9. 運用のポイント
- ログレベル切替(debugで変換前後を出力)
- 認証:
expectedApiKey
によるAPIキー検証 - リトライ・タイムアウト制御
- fallbackOrder による可用性確保
図: リクエストライフサイクル監視ポイント
10. 使い方の具体例
- OpenAI をデフォルト、Azure を
/azure
経由で利用 - Ollama をローカル検証に活用
- Databricks を同期APIで呼出
図: プロバイダ切替シーケンス
11. これからの拡張(ロードマップ)
Claude Code Proxy はさらに以下の拡張を予定しています。
監視とメトリクス収集(Prometheus/Grafana)
- Proxyに Prometheus Exporter を内蔵し、リクエスト数/エラー率/トークン使用量を収集
- Grafana ダッシュボードで可視化し、SLA/コスト監視を強化
マルチテナント対応とアクセス制御
- テナントごとの APIキー管理
- テナント別ポリシー設定(利用可能モデル/プロバイダ制御)
- 管理UI(React/Next.js)でテナント管理を容易化
- Terraform/Helmと連携してクラウド運用対応
タイムライン
Claude Code Proxy 拡張ロードマップ
12. まとめ
Claude Code Proxy は「クライアントはClaude形式のまま、プロバイダ差分をサーバ側で吸収」することで、複数プロバイダを効率的に活用できます。導入の手軽さと運用のしやすさを両立し、今後の拡張でさらに強力な基盤になることが期待されます。