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

49 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Настройка прокси 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)
```bash
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. Проверка
```bash
# Прокси (после деплоя 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.