FastAPI-сервис, принимающий стандартные API-запросы (Anthropic + OpenAI формат)
и выполняющий их через Claude Code OAuth (без API ключа).
Drupal / любой клиент
→ POST /chat/completions (OpenAI format)
→ POST /v1/messages (Anthropic format)
→ claude-agent-sdk (OAuth)
→ Claude Code CLI → Anthropic API
system/services/claude-proxy/
├── proxy.py ← FastAPI приложение
├── requirements.txt ← Зависимости
└── CLAUDE.md ← Этот файл
Живой сервис: /opt/claude-proxy/proxy.py
Порт: 8899
Systemd: claude-proxy.service
| Method | Path | Формат | Назначение |
|---|---|---|---|
| GET | /health | — | Healthcheck |
| GET | /models | OpenAI | Список моделей |
| GET | /v1/models | Anthropic | Список моделей |
| POST | /chat/completions | OpenAI | Чат (для openai-php/client) |
| POST | /v1/chat/completions | OpenAI | Чат (алиас) |
| POST | /v1/messages | Anthropic | Чат (нативный формат) |
# 1. Установить зависимости
pip3 install -r system/services/claude-proxy/requirements.txt
# 2. Скопировать сервис
cp system/services/claude-proxy/proxy.py /opt/claude-proxy/proxy.py
# 3. Создать systemd unit
cat > /etc/systemd/system/claude-proxy.service << 'EOF'
[Unit]
Description=Claude Code OAuth Proxy
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/claude-proxy
Environment=HOME=/root
ExecStart=/usr/bin/python3 /opt/claude-proxy/proxy.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
# 4. Запустить
systemctl daemon-reload
systemctl enable --now claude-proxy.service
# 5. Проверить
curl http://localhost:8899/health
Прокси прозрачно принимает любые model_id и передаёт запрос в claude-agent-sdk.
Фактически используется модель, настроенная в Claude Code OAuth.
Задекларированные в /models для совместимости:
- claude-sonnet-4-6 (основная)
- claude-haiku-4-5-20251001
Drupal 2: library/connectors/site/drupal/ai-proxy/RECIPE.md
http://91.218.142.168:8899