klg-asutk-app/docs/ops/AI_PROXY_SETUP.md

2.3 KiB
Raw Blame History

Настройка прокси Anthropic через papa-app (Railway)

KLG backend в Yandex Cloud (РФ) не может вызывать Anthropic API из-за блокировки по IP.
Запросы идут через papa-app на Railway (вне РФ).

Что сделано в коде

  • papa-app: POST /api/proxy/anthropic — принимает тело запроса и заголовок x-proxy-secret, подставляет ANTHROPIC_API_KEY и вызывает https://api.anthropic.com/v1/messages.
  • KLG backend: при заданных AI_PROXY_URL и AI_PROXY_SECRET использует прокси вместо прямого вызова Anthropic.

1. Railway (papa-app)

В проекте papa-app в Railway Dashboard → Variables:

Переменная Значение Секретность
ANTHROPIC_API_KEY Ваш ключ Anthropic (sk-ant-...) Secret
PROXY_SECRET klg-refly-proxy-2026 (или свой) Secret

После сохранения Railway пересоберёт и задеплоит приложение.

2. Сервер KLG (158.160.22.166)

cd ~/klg-asutk-app
git pull origin main

# Добавить в .env (если ещё не добавлено)
grep -q AI_PROXY_URL .env || echo 'AI_PROXY_URL=https://papa-app-production.up.railway.app/api/proxy/anthropic' >> .env
grep -q AI_PROXY_SECRET .env || echo 'AI_PROXY_SECRET=klg-refly-proxy-2026' >> .env

docker compose build backend && docker compose up -d backend

Значение AI_PROXY_SECRET должно совпадать с PROXY_SECRET в Railway.

3. Проверка

# Прокси (после деплоя papa-app и установки переменных)
curl -s -X POST https://papa-app-production.up.railway.app/api/proxy/anthropic \
  -H "Content-Type: application/json" \
  -H "x-proxy-secret: klg-refly-proxy-2026" \
  -d '{"model":"claude-3-5-sonnet-20241022","max_tokens":50,"messages":[{"role":"user","content":"Hi"}]}'

Ожидается JSON с полем content (ответ модели) или сообщение об ошибке от Anthropic.
401 — неверный x-proxy-secret, 500 — не задан ANTHROPIC_API_KEY в Railway.