Прокси-переводчик
Прокси-переводчик является ядром 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 использует трейт ProviderAdapter для обработки различий между API провайдеров. Реализованы три адаптера:
| Адаптер | Трансляция | Используется |
|---|---|---|
| DirectAnthropic | Нет (passthrough) | 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 |
| Responses | Anthropic ↔ OpenAI Responses API | Подписки ChatGPT/Codex |
Что переводится
Заголовок раздела «Что переводится»Перевод запросов (Anthropic → OpenAI)
Заголовок раздела «Перевод запросов (Anthropic → OpenAI)»| Anthropic | OpenAI |
|---|---|
Поле system | Системное сообщение в массиве messages |
Блоки messages[].content (text, image, tool_use, tool_result) | messages[].content + tool_calls |
Массив tools (JSON Schema с input_schema) | Массив tools (формат функций с parameters) |
tool_choice (auto, any, {name}) | tool_choice (auto, required, {function: {name}}) |
max_tokens | max_tokens (ограничивается настройкой max_tokens профиля, если задана) |
temperature, top_p | Прямое соответствие (удаляются, если совпадает с strip_params) |
Перевод ответов (OpenAI → Anthropic)
Заголовок раздела «Перевод ответов (OpenAI → Anthropic)»| OpenAI | Anthropic |
|---|---|
choices[0].message.content | Блоки content (type: text) |
choices[0].message.tool_calls | Блоки content (type: tool_use) |
finish_reason: stop | stop_reason: end_turn |
finish_reason: tool_calls | stop_reason: tool_use |
usage.prompt_tokens / completion_tokens | usage.input_tokens / output_tokens |
Совместимость имён инструментов
Заголовок раздела «Совместимость имён инструментов»Claude Code может генерировать имена инструментов длиннее 64 символов (например, mcp__server-name__very-long-tool-name-that-exceeds-the-limit). OpenAI и многие провайдеры устанавливают лимит в 64 символа.
Claudex автоматически:
- Усекает имена, превышающие 64 символа, в исходящих запросах
- Строит таблицу соответствия усечённых и оригинальных имён
- Восстанавливает оригинальные имена в ответах провайдера
Этот цикл полностью прозрачен.
Потоковый перевод
Заголовок раздела «Потоковый перевод»Claudex полностью поддерживает потоковую передачу SSE (Server-Sent Events), переводя фрагменты потока OpenAI в события потока Anthropic в режиме реального времени:
| OpenAI SSE | Anthropic SSE |
|---|---|
| Первый фрагмент | message_start + content_block_start |
choices[0].delta.content | content_block_delta (text_delta) |
choices[0].delta.tool_calls | content_block_delta (input_json_delta) |
Наличие finish_reason | content_block_stop + message_delta + message_stop |
Потоковый переводчик поддерживает конечный автомат для корректной обработки накопления вызовов инструментов и границ блоков содержимого.
Поддержка Azure OpenAI
Заголовок раздела «Поддержка Azure OpenAI»Azure OpenAI использует другую схему аутентификации и URL:
- Аутентификация: заголовок
api-keyвместоAuthorization: Bearer - Формат URL:
https://{resource}.openai.azure.com/openai/deployments/{deployment} - Версия API: обязательна через
query_params
Claudex автоматически определяет Azure, проверяя наличие openai.azure.com в base_url, и соответственно настраивает аутентификацию.
Поддерживаемые провайдеры
Заголовок раздела «Поддерживаемые провайдеры»| Провайдер | Тип | Base URL |
|---|---|---|
| Anthropic | DirectAnthropic | https://api.anthropic.com |
| MiniMax | DirectAnthropic | https://api.minimax.io/anthropic |
| Google Vertex AI | DirectAnthropic | https://REGION-aiplatform.googleapis.com/v1/projects/... |
| OpenRouter | OpenAICompatible | https://openrouter.ai/api/v1 |
| Grok (xAI) | OpenAICompatible | https://api.x.ai/v1 |
| OpenAI | OpenAICompatible | https://api.openai.com/v1 |
| DeepSeek | OpenAICompatible | https://api.deepseek.com |
| Kimi/Moonshot | OpenAICompatible | https://api.moonshot.ai/v1 |
| GLM (Zhipu) | OpenAICompatible | https://api.z.ai/api/paas/v4 |
| Groq | OpenAICompatible | https://api.groq.com/openai/v1 |
| Mistral AI | OpenAICompatible | https://api.mistral.ai/v1 |
| Together AI | OpenAICompatible | https://api.together.xyz/v1 |
| Perplexity | OpenAICompatible | https://api.perplexity.ai |
| Cerebras | OpenAICompatible | https://api.cerebras.ai/v1 |
| Azure OpenAI | OpenAICompatible | https://{resource}.openai.azure.com/... |
| GitHub Copilot | OpenAICompatible | https://api.githubcopilot.com |
| GitLab Duo | OpenAICompatible | https://gitlab.com/api/v4/ai/llm/proxy |
| Ollama | OpenAICompatible | http://localhost:11434/v1 |
| vLLM | OpenAICompatible | http://localhost:8000/v1 |
| LM Studio | OpenAICompatible | http://localhost:1234/v1 |
| ChatGPT/Codex sub | OpenAIResponses | https://chatgpt.com/backend-api/codex |
Endpoint моделей
Заголовок раздела «Endpoint моделей»Прокси предоставляет endpoint /v1/models, который перечисляет все включённые профили. Каждая запись содержит пользовательские поля:
x-claudex-profile: имя профиляx-claudex-provider: тип провайдера (anthropic,openai-compatible,openai-responses)
Claude Code запрашивает этот endpoint для обнаружения доступных моделей.
Управление прокси
Заголовок раздела «Управление прокси»# Запустить прокси как демонclaudex proxy start -d
# Проверить статус проксиclaudex proxy status
# Остановить демон проксиclaudex proxy stop
# Запустить на пользовательском портуclaudex proxy start -p 8080При выполнении claudex run <profile> прокси автоматически запускается в фоне, если он ещё не запущен.