Добавлена поддержка Cloudflare AI Gateway

Изменено:
- services/ai_service.py - автоматическое использование Cloudflare Gateway
- config/settings.py - настройки CLOUDFLARE_ACCOUNT_ID и CLOUDFLARE_GATEWAY_ID
- .env.example - добавлены переменные Cloudflare
- README.md - секция о Cloudflare AI Gateway

Создано:
- docs/CLOUDFLARE_GATEWAY.md - подробная документация

Преимущества:
🚀 Кэширование запросов - экономия до 99% на повторных запросах
📊 Аналитика - детальная статистика использования AI
💰 Контроль расходов - мониторинг стоимости
🛡️ Безопасность - защита API ключей и rate limiting

Использование:
1. Создать Gateway на dash.cloudflare.com
2. Добавить CLOUDFLARE_ACCOUNT_ID в .env
3. Все запросы автоматически пойдут через Cloudflare

Для отключения оставьте CLOUDFLARE_ACCOUNT_ID пустым.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-04 14:39:23 +03:00
parent ca5b45117f
commit dab1953888
5 changed files with 193 additions and 2 deletions

View File

@@ -4,6 +4,11 @@ BOT_TOKEN=your_telegram_bot_token_here
# OpenAI API Key
OPENAI_API_KEY=your_openai_api_key_here
# Cloudflare AI Gateway (опционально, для кэширования и мониторинга)
# Получить Account ID: https://dash.cloudflare.com/ -> AI -> AI Gateway
CLOUDFLARE_ACCOUNT_ID=4c714ccd1433cf82279ac6e1278bcb8f
CLOUDFLARE_GATEWAY_ID=gpt
# Database (для локального запуска с БД в Docker)
DATABASE_URL=postgresql+asyncpg://botuser:botpassword@localhost:15433/language_bot

View File

@@ -235,6 +235,26 @@ bot_tg_language/
- [ ] Статистика и прогресс
- [ ] Spaced repetition алгоритм
## Cloudflare AI Gateway (опционально)
Бот поддерживает использование [Cloudflare AI Gateway](https://developers.cloudflare.com/ai-gateway/) для:
- 🚀 **Кэширование запросов** - экономия до 99% на повторных запросах
- 📊 **Аналитика** - детальная статистика использования AI
- 💰 **Контроль расходов** - мониторинг стоимости запросов
- 🛡️ **Безопасность** - защита API ключей и rate limiting
**Настройка:**
1. Создайте Gateway на [dash.cloudflare.com](https://dash.cloudflare.com/) → AI → AI Gateway
2. Добавьте в `.env`:
```env
CLOUDFLARE_ACCOUNT_ID=ваш_account_id
CLOUDFLARE_GATEWAY_ID=gpt
```
📖 Подробная инструкция: [docs/CLOUDFLARE_GATEWAY.md](docs/CLOUDFLARE_GATEWAY.md)
## Технологии
- **Python 3.11+**
@@ -242,6 +262,7 @@ bot_tg_language/
- **SQLAlchemy 2.x** - ORM для работы с БД
- **PostgreSQL** - База данных
- **OpenAI API** - AI для перевода и проверки
- **Cloudflare AI Gateway** - кэширование и мониторинг AI запросов (опционально)
## Лицензия

View File

@@ -10,6 +10,10 @@ class Settings(BaseSettings):
# OpenAI
openai_api_key: str
# Cloudflare AI Gateway (опционально)
cloudflare_account_id: str = ""
cloudflare_gateway_id: str = "gpt"
# Database
database_url: str

146
docs/CLOUDFLARE_GATEWAY.md Normal file
View File

@@ -0,0 +1,146 @@
# Cloudflare AI Gateway
## Что это?
Cloudflare AI Gateway — это прокси-сервис между вашим приложением и AI провайдерами (OpenAI, Anthropic и др.), который предоставляет:
## Преимущества
### 1. 🚀 Кэширование запросов
- Автоматическое кэширование одинаковых запросов к AI
- Экономия на повторных запросах
- Мгновенные ответы для закэшированных запросов
### 2. 📊 Аналитика и мониторинг
- Детальная статистика использования API
- Отслеживание стоимости запросов
- Анализ производительности
### 3. 💰 Экономия средств
- Снижение количества запросов к OpenAI через кэш
- Контроль расходов
- Rate limiting для предотвращения перерасхода
### 4. 🛡️ Безопасность
- Защита API ключей
- Rate limiting
- Логирование всех запросов
### 5. 🔄 Резервные варианты
- Поддержка нескольких AI провайдеров
- Автоматическое переключение при сбоях
## Настройка
### 1. Создание Gateway в Cloudflare
1. Перейдите на [Cloudflare Dashboard](https://dash.cloudflare.com/)
2. Откройте раздел **AI****AI Gateway**
3. Нажмите **Create Gateway**
4. Введите имя для Gateway (например: `gpt`)
5. Скопируйте **Account ID** и **Gateway ID**
### 2. Настройка в проекте
Добавьте в `.env` файл:
```env
# Cloudflare AI Gateway
CLOUDFLARE_ACCOUNT_ID=ваш_account_id
CLOUDFLARE_GATEWAY_ID=gpt
```
### 3. Проверка работы
После настройки все запросы к OpenAI будут проходить через Cloudflare Gateway.
Проверить можно в дашборде Cloudflare: **AI****AI Gateway** → выбрать ваш Gateway
## Как это работает
### Без Cloudflare Gateway:
```
Бот → OpenAI API → Ответ
```
### С Cloudflare Gateway:
```
Бот → Cloudflare Gateway → OpenAI API → Ответ
(кэш + аналитика)
```
При повторном запросе:
```
Бот → Cloudflare Gateway → Ответ из кэша (мгновенно!)
```
## Примеры экономии
### Без кэширования:
- Запрос перевода слова "hello" → $0.002
- 10 пользователей запрашивают "hello" → $0.02
- 100 пользователей → $0.20
### С кэшированием:
- Первый запрос "hello" → $0.002
- Последующие 99 запросов → $0 (из кэша)
- **Экономия: 99%**
## Настройка кэширования
В дашборде Cloudflare Gateway можно настроить:
- **TTL кэша** - время жизни закэшированных ответов
- **Правила кэширования** - что кэшировать, а что нет
- **Invalidation** - очистка кэша
### Рекомендации для нашего бота:
**Кэшировать:**
- Переводы слов (TTL: 30 дней)
- Проверка ответов с одинаковыми параметрами (TTL: 1 день)
**Не кэшировать:**
- Диалоги с пользователями (уникальный контекст)
## Мониторинг
В дашборде Cloudflare Gateway доступны метрики:
- **Requests** - общее количество запросов
- **Cache hit rate** - процент попаданий в кэш
- **Cost** - стоимость запросов
- **Latency** - задержка ответов
- **Errors** - ошибки
## Отключение
Чтобы отключить Cloudflare Gateway и использовать прямое подключение к OpenAI:
1. Удалите или закомментируйте в `.env`:
```env
# CLOUDFLARE_ACCOUNT_ID=...
# CLOUDFLARE_GATEWAY_ID=...
```
2. Или оставьте `CLOUDFLARE_ACCOUNT_ID` пустым:
```env
CLOUDFLARE_ACCOUNT_ID=
```
## Поддержка других AI провайдеров
Cloudflare AI Gateway также поддерживает:
- Anthropic (Claude)
- Google AI
- Hugging Face
- Azure OpenAI
Для переключения достаточно изменить base URL в коде.
## Ссылки
- [Cloudflare AI Gateway Documentation](https://developers.cloudflare.com/ai-gateway/)
- [Cloudflare Dashboard](https://dash.cloudflare.com/)
- [Pricing Calculator](https://developers.cloudflare.com/ai-gateway/get-started/pricing/)

View File

@@ -4,10 +4,25 @@ from typing import Dict, List
class AIService:
"""Сервис для работы с OpenAI API"""
"""Сервис для работы с OpenAI API через Cloudflare Gateway"""
def __init__(self):
self.client = AsyncOpenAI(api_key=settings.openai_api_key)
# Проверяем, настроен ли Cloudflare AI Gateway
if settings.cloudflare_account_id:
# Используем Cloudflare AI Gateway
base_url = (
f"https://gateway.ai.cloudflare.com/v1/"
f"{settings.cloudflare_account_id}/"
f"{settings.cloudflare_gateway_id}/"
f"openai"
)
self.client = AsyncOpenAI(
api_key=settings.openai_api_key,
base_url=base_url
)
else:
# Прямое подключение к OpenAI
self.client = AsyncOpenAI(api_key=settings.openai_api_key)
async def translate_word(self, word: str, target_lang: str = "ru") -> Dict:
"""