feat: LLM routing by tier (free→Ollama, pro→Timeweb)
Some checks failed
Build and Deploy GooSeek / build-and-deploy (push) Failing after 8m25s
Some checks failed
Build and Deploy GooSeek / build-and-deploy (push) Failing after 8m25s
- Add tier-based provider routing in llm-svc - free tier → Ollama (local qwen3.5:9b) - pro/business → Timeweb Cloud AI - Add /api/v1/embed endpoint for embeddings via Ollama - Update Ollama client: qwen3.5:9b default, remove auth - Add GenerateEmbedding() function for qwen3-embedding:0.6b - Add Ollama K8s deployment with GPU support (RTX 4060 Ti) - Add monitoring stack (Prometheus, Grafana, Alertmanager) - Add Grafana dashboards for LLM and security metrics - Update deploy.sh with monitoring and Ollama deployment Made-with: Cursor
This commit is contained in:
113
CONTINUE.md
113
CONTINUE.md
@@ -1,26 +1,99 @@
|
||||
# Недоделки — начать отсюда
|
||||
# LLM Routing по тарифам ✅
|
||||
|
||||
## Всё готово! ✅
|
||||
## Архитектура
|
||||
|
||||
### Сделано — 2 марта 2026
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ llm-svc │
|
||||
│ │
|
||||
│ POST /api/v1/generate │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────────┐ │
|
||||
│ │ resolveProvider │ │
|
||||
│ │ (tier) │ │
|
||||
│ └────────┬────────┘ │
|
||||
│ │ │
|
||||
│ ┌─────┴─────┐ │
|
||||
│ ▼ ▼ │
|
||||
│ ┌──────┐ ┌────────┐ │
|
||||
│ │ FREE │ │ PRO │ │
|
||||
│ └──┬───┘ └───┬────┘ │
|
||||
│ │ │ │
|
||||
│ ▼ ▼ │
|
||||
│ Ollama Timeweb │
|
||||
│ (local) (cloud) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Security Hardening (Gitea):**
|
||||
- [x] Gitea обновлён: 1.22.6 → 1.25.4 (CVE исправлены)
|
||||
- [x] Регистрация отключена, Swagger отключён
|
||||
- [x] Security headers настроены (CSP, X-Content-Type-Options, etc.)
|
||||
## Роутинг по тарифам
|
||||
|
||||
**CI/CD и инфраструктура:**
|
||||
- [x] K3s registry настроен для HTTP (k3s-registries.yaml)
|
||||
- [x] file-svc PVC исправлен (ReadWriteOnce)
|
||||
- [x] Все сервисы работают
|
||||
| Тариф | Провайдер | Модель | Лимиты |
|
||||
|-------|-----------|--------|--------|
|
||||
| **free** | Ollama (local) | qwen3.5:9b | 50 req/day, 2000 tokens/req |
|
||||
| **pro** | Timeweb | gpt-4o, claude, etc | 500 req/day, 8000 tokens/req |
|
||||
| **business** | Timeweb | all models | 5000 req/day, 32000 tokens/req |
|
||||
|
||||
**Коммиты:**
|
||||
- e64567a - fix: file-svc PVC, k3s registries
|
||||
- c9e5ff6 - docs: CONTINUE.md updated
|
||||
- d2ef146 - security: Gitea upgrade
|
||||
## API Endpoints
|
||||
|
||||
### Контекст
|
||||
- Сервер: 5.187.77.89
|
||||
- https://gooseek.ru — работает ✅
|
||||
- https://git.gooseek.ru — Gitea 1.25.4 ✅
|
||||
- K3s + Nginx Ingress + Cert-Manager работают
|
||||
### POST /api/v1/generate
|
||||
```json
|
||||
{
|
||||
"providerId": "auto", // или "ollama", "timeweb", etc
|
||||
"key": "qwen3.5:9b", // модель
|
||||
"messages": [{"role": "user", "content": "..."}],
|
||||
"options": {
|
||||
"maxTokens": 1000,
|
||||
"temperature": 0.7,
|
||||
"stream": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### POST /api/v1/embed
|
||||
```json
|
||||
{
|
||||
"input": "Текст для эмбеддинга",
|
||||
"model": "qwen3-embedding:0.6b"
|
||||
}
|
||||
```
|
||||
|
||||
### GET /api/v1/providers
|
||||
Возвращает список доступных провайдеров с указанием tier.
|
||||
|
||||
---
|
||||
|
||||
## Ollama конфигурация
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| OLLAMA_NUM_PARALLEL | 4 |
|
||||
| OLLAMA_MAX_LOADED_MODELS | 2 |
|
||||
| OLLAMA_FLASH_ATTENTION | true |
|
||||
| Модель генерации | qwen3.5:9b |
|
||||
| Модель эмбеддингов | qwen3-embedding:0.6b |
|
||||
|
||||
## Пропускная способность
|
||||
|
||||
| Сценарий | Одновременно | RPM |
|
||||
|----------|--------------|-----|
|
||||
| Короткие ответы | 6-8 чел | ~40-60 |
|
||||
| Средние ответы | 4-6 чел | ~20-30 |
|
||||
| Эмбеддинги | 10+ чел | ~800+ |
|
||||
|
||||
---
|
||||
|
||||
## Файлы изменены
|
||||
|
||||
- `backend/cmd/llm-svc/main.go` — роутинг по тарифу, /embed endpoint
|
||||
- `backend/internal/llm/ollama.go` — qwen3.5:9b, убран токен, GenerateEmbedding
|
||||
- `backend/internal/llm/client.go` — убран OllamaToken
|
||||
- `backend/deploy/k8s/ollama.yaml` — GPU + параллельность
|
||||
- `backend/deploy/k8s/ollama-models.yaml` — без авторизации
|
||||
|
||||
---
|
||||
|
||||
## Сервер
|
||||
- IP: 5.187.77.89
|
||||
- GPU: RTX 4060 Ti 16GB
|
||||
- Site: https://gooseek.ru
|
||||
|
||||
Reference in New Issue
Block a user