RichardAtCT/claude-code-openai-wrapper

OpenAI API-compatible wrapper for Claude Code

Claude Code OpenAI API Wrapper

概要 – AnthropicのClaude CodeモデルをOpenAI APIのように見せるセルフホスト型サーバーです。このラッパーを実行することで、既存のOpenAIクライアントライブラリ(Python SDK、curlなど)をそのまま使用しながら、リクエストを公式のClaude Agent SDK経由でClaude Codeにルーティングできます。

重要性 – 多くのツール、ノートブック、統合機能はOpenAIエンドポイント (/v1/chat/completions) 向けに構築されています。これらをClaude用に再実装するのは手間がかかります。このラッパーを使えば、設定を1つ変更するだけでClaude Codeに切り替えることができ、以下のメリットを享受できます:

  • Claude SDKによるリアルタイムのコストおよびトークン使用量の把握
  • 呼び出し間でのセッション継続性(会話メモリ)
  • オプションのツール使用(ファイル読み書き、bashなど)
  • マルチプロバイダー認証(Anthropic API key、AWS Bedrock、Google Vertex AI、またはClaude CLI)

主な機能

  • OpenAI互換エンドポイント – /v1/chat/completions および /v1/messages (Anthropicスタイル) がストリーミングまたは非ストリーミングレスポンスで動作します。
  • ライブモデル検出 – ANTHROPIC_API_KEY が存在する場合、ラッパーはAnthropicの現在のモデルリストを取得(1時間キャッシュ)し、最新の Sonnet モデルを自動的にデフォルトとして選択します。
  • 高速デフォルトモード – ツールはデフォルトで無効になっており、純粋なチャット利用時には5〜10倍の速度向上が見込めます。ツールはリクエストごとに有効化可能です。
  • セッション管理 – session_id を含めることで会話履歴を保持します。セッションのリスト表示、確認、削除を行うエンドポイントも用意されています。セッションは1時間の非アクティブ状態で期限切れになります。
  • マルチプロバイダー認証 – 追加コードなしでClaude CLI認証、生のAPI key、AWS Bedrock、またはGoogle Vertex AIを検出して使用します。
  • インタラクティブなランディングページ – http://localhost:8000/ に組み込まれたUIから、APIの探索、コマンドのコピー、ライト/ダークテーマの切り替えが可能です。
  • レート制限とオプションのAPIキー保護 – 悪用を防ぎ、リモートアクセス用にサーバーを保護できます。
  • Dockerサポート – 公式のDockerfileとDocker-Composeの例により、迅速なデプロイが可能です。

導入方法(2分以内)

# Clone and install
git clone https://github.com/RichardAtCT/claude-code-openai-wrapper
cd claude-code-openai-wrapper
poetry install   # creates a venv and pulls the Claude Agent SDK

# Authenticate (pick one)
export ANTHROPIC_API_KEY=your-key   # or `claude auth login`

# Run the server (development mode with hot-reload)
poetry run uvicorn src.main:app --reload --port 8000

# Test with curl
curl http://localhost:8000/v1/models

サーバーは http://localhost:8000/v1/chat/completions でOpenAIスタイルの呼び出しを受け付けるようになります。

OpenAI Python SDKでの一般的な使用例

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1")
resp = client.chat.completions.create(
    model="claude-sonnet-4-6",
    messages=[{"role": "user", "content": "Write a Python hello-world script"}],
    stream=False,
)
print(resp.choices[0].message.content)

extra_body={"enable_tools": True} を追加してClaudeにファイルを読み書きさせるか、extra_body={"session_id": "my-session"} を渡してコンテキストを保持します。

本番環境での考慮事項

  • 隔離されたデプロイにはDockerイメージ (docker build -t claude-wrapper .) を使用してください。
  • localhost以外にエンドポイントを公開する場合は、API_KEY を設定するか、インタラクティブなキープロンプトを有効にして保護してください。
  • 必要に応じてレート制限の環境変数 (RATE_LIMIT_CHAT_PER_MINUTE など) を調整してください。
  • エンタープライズ環境では、CLAUDE_AUTH_METHOD を設定することで、AWS BedrockまたはGoogle Vertex AIにラッパーを向けることができます。

ステータス – Production Ready とマークされています。すべての主要エンドポイントはテスト済みで、ストリーミングも動作し、ヘルスチェック、バージョン確認、認証ステータスチェックが含まれています。


すべての詳細はリポジトリのREADMEから直接引用したものであり、追加機能の推測は含まれていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト