コンテンツにスキップ

翻訳プロキシ

翻訳プロキシは Claudex の中核です。Claude Code と AI プロバイダーの間に位置し、Anthropic Messages API と OpenAI Chat Completions API(または Responses API)間を透過的に変換します。

Claude Code → Anthropic Messages API request
└── Claudex Proxy (127.0.0.1:13456)
├── DirectAnthropic provider → forward with headers
├── OpenAICompatible provider
│ ├── Translate request: Anthropic → OpenAI Chat Completions
│ ├── Apply query_params, strip_params, custom_headers
│ ├── Forward to provider
│ └── Translate response: OpenAI → Anthropic
└── OpenAIResponses provider
├── Translate request: Anthropic → OpenAI Responses API
├── Forward to provider
└── Translate response: Responses → Anthropic

Claudex はプロバイダー API 間の差異を処理するために ProviderAdapter トレイトを使用しています。3 つのアダプターが実装されています:

アダプター翻訳使用先
DirectAnthropicなし(パススルー)Anthropic、MiniMax、Vertex AI
ChatCompletions完全な Anthropic と OpenAI 間の翻訳Grok、OpenAI、DeepSeek、Kimi、GLM、OpenRouter、Groq、Mistral、Together AI、Perplexity、Cerebras、Azure OpenAI、GitHub Copilot、GitLab Duo、Ollama、vLLM、LM Studio
ResponsesAnthropic と OpenAI Responses API 間の翻訳ChatGPT/Codex サブスクリプション

リクエスト翻訳(Anthropic → OpenAI)

Section titled “リクエスト翻訳(Anthropic → OpenAI)”
AnthropicOpenAI
system フィールドmessages 配列内のシステムメッセージ
messages[].content ブロック(text、image、tool_use、tool_result)messages[].content + tool_calls
tools 配列(input_schema を持つ JSON Schema)tools 配列(parameters を持つ function 形式)
tool_choiceautoany{name}tool_choiceautorequired{function: {name}}
max_tokensmax_tokens(プロファイルの max_tokens 設定がある場合は上限適用)
temperaturetop_p直接マッピング(strip_params に一致する場合は除去)

レスポンス翻訳(OpenAI → Anthropic)

Section titled “レスポンス翻訳(OpenAI → Anthropic)”
OpenAIAnthropic
choices[0].message.contentcontent ブロック(type: text)
choices[0].message.tool_callscontent ブロック(type: tool_use)
finish_reason: stopstop_reason: end_turn
finish_reason: tool_callsstop_reason: tool_use
usage.prompt_tokens / completion_tokensusage.input_tokens / output_tokens

Claude Code は 64 文字を超えるツール名を生成することがあります(例: mcp__server-name__very-long-tool-name-that-exceeds-the-limit)。OpenAI や多くのプロバイダーは 64 文字の制限を課しています。

Claudex は自動的に:

  1. 送信リクエストで 64 文字を超える名前を短縮
  2. 短縮名と元の名前のマッピングテーブルを構築
  3. プロバイダーのレスポンスで元の名前を復元

このラウンドトリップは完全に透過的です。

Claudex は SSE(Server-Sent Events)ストリーミングを完全にサポートし、OpenAI のストリームチャンクをリアルタイムで Anthropic のストリームイベントに変換します:

OpenAI SSEAnthropic SSE
最初のチャンクmessage_start + content_block_start
choices[0].delta.contentcontent_block_delta (text_delta)
choices[0].delta.tool_callscontent_block_delta (input_json_delta)
finish_reason ありcontent_block_stop + message_delta + message_stop

ストリーミングトランスレーターはステートマシンを維持し、ツールコールの蓄積とコンテントブロックの境界を適切に処理します。

Azure OpenAI は異なる認証と URL スキームを使用します:

  • 認証: Authorization: Bearer の代わりに api-key ヘッダー
  • URL 形式: https://{resource}.openai.azure.com/openai/deployments/{deployment}
  • API バージョン: query_params で必須

Claudex は base_urlopenai.azure.com が含まれているかどうかで Azure を自動検出し、認証を適宜調整します。

プロバイダータイプベース URL
AnthropicDirectAnthropichttps://api.anthropic.com
MiniMaxDirectAnthropichttps://api.minimax.io/anthropic
Google Vertex AIDirectAnthropichttps://REGION-aiplatform.googleapis.com/v1/projects/...
OpenRouterOpenAICompatiblehttps://openrouter.ai/api/v1
Grok (xAI)OpenAICompatiblehttps://api.x.ai/v1
OpenAIOpenAICompatiblehttps://api.openai.com/v1
DeepSeekOpenAICompatiblehttps://api.deepseek.com
Kimi/MoonshotOpenAICompatiblehttps://api.moonshot.ai/v1
GLM (Zhipu)OpenAICompatiblehttps://api.z.ai/api/paas/v4
GroqOpenAICompatiblehttps://api.groq.com/openai/v1
Mistral AIOpenAICompatiblehttps://api.mistral.ai/v1
Together AIOpenAICompatiblehttps://api.together.xyz/v1
PerplexityOpenAICompatiblehttps://api.perplexity.ai
CerebrasOpenAICompatiblehttps://api.cerebras.ai/v1
Azure OpenAIOpenAICompatiblehttps://{resource}.openai.azure.com/...
GitHub CopilotOpenAICompatiblehttps://api.githubcopilot.com
GitLab DuoOpenAICompatiblehttps://gitlab.com/api/v4/ai/llm/proxy
OllamaOpenAICompatiblehttp://localhost:11434/v1
vLLMOpenAICompatiblehttp://localhost:8000/v1
LM StudioOpenAICompatiblehttp://localhost:1234/v1
ChatGPT/Codex サブスクリプションOpenAIResponseshttps://chatgpt.com/backend-api/codex

プロキシは有効なすべてのプロファイルを一覧表示する /v1/models エンドポイントを公開しています。各エントリにはカスタムフィールドが含まれます:

  • x-claudex-profile: プロファイル名
  • x-claudex-provider: プロバイダータイプ(anthropicopenai-compatibleopenai-responses

Claude Code はこのエンドポイントを照会して利用可能なモデルを検出します。

Terminal window
# プロキシをデーモンとして起動
claudex proxy start -d
# プロキシの状態を確認
claudex proxy status
# プロキシデーモンを停止
claudex proxy stop
# カスタムポートで起動
claudex proxy start -p 8080

claudex run <profile> を実行すると、プロキシがまだ実行されていない場合はバックグラウンドで自動的に起動されます。