Files
laravel-llm-gateway/README.md
wtrinkl bef36c7ca2 Rename project from any-llm to laravel-llm
- Remove old any-llm related files (Dockerfile, config.yml, web/, setup-laravel.sh)
- Update README.md with new Laravel LLM Gateway documentation
- Keep docker-compose.yml with laravel-llm container names
- Clean project structure for Laravel-only implementation
2025-11-18 22:05:05 +01:00

377 lines
7.9 KiB
Markdown

# Laravel LLM Gateway
Ein umfassendes Laravel-basiertes LLM Gateway System mit Multi-Provider-Support, Kosten-Tracking, Budget-Management und Admin-Interface.
## 🎯 Hauptfeatures
- **Multi-Provider Support**: OpenAI, Anthropic, DeepSeek, Google Gemini, Mistral AI
- **Per-User API Keys**: Verschlüsselte Speicherung von Provider-Credentials pro Benutzer
- **Kosten-Tracking**: Detaillierte Verfolgung von Token-Nutzung und Kosten
- **Budget-Management**: Flexible Budget-Limits und Benachrichtigungen
- **Rate Limiting**: Schutz vor Überlastung
- **Admin-Interface**: Umfassende Verwaltungsoberfläche mit Laravel/Livewire
- **OpenAI-kompatible API**: Standard-konforme Endpoints
---
## 🚀 Quick Start
### Voraussetzungen
- Docker & Docker Compose installiert
- Port 80 und 8081 verfügbar
### Installation
```bash
cd /opt/laravel-llm
docker compose up -d
```
Das System startet automatisch:
- Laravel Anwendung auf Port 80
- MariaDB 11.4 Datenbank
- phpMyAdmin auf Port 8081
---
## 🌐 URLs & Zugangsdaten
### Services
| Service | URL | Beschreibung |
|---------|-----|--------------|
| **Laravel Admin** | http://localhost:80 | Admin-Interface |
| **phpMyAdmin** | http://localhost:8081 | Datenbank-Management |
### Login-Daten
#### Laravel Admin
```
Email: admin@laravel-llm.local
Password: [Dein Admin-Passwort]
```
#### phpMyAdmin (MariaDB)
```
Server: mariadb
Username: root
Password: rootpass
Database: gateway
```
---
## 📁 Projekt-Struktur
```
/opt/laravel-llm/
├── docker-compose.yml # Docker Services Definition
├── backup_*.sql # Datenbank-Backups
├── laravel/ # Laravel Docker Config
│ ├── Dockerfile # PHP 8.3 + Nginx
│ ├── nginx.conf # Webserver Config
│ ├── supervisord.conf # Process Manager
│ └── php.ini # PHP Einstellungen
└── laravel-app/ # Laravel Anwendung
├── app/
│ ├── Http/Controllers/ # Admin Controllers
│ ├── Models/ # Eloquent Models
│ ├── Services/LLM/ # Provider Services
│ └── ...
├── database/
│ └── migrations/ # Datenbank Schema
├── resources/
│ └── views/ # Blade Templates
└── routes/
└── web.php # Admin Routes
```
---
## 🗄️ Datenbank-Schema
### Haupttabellen
| Tabelle | Beschreibung |
|---------|--------------|
| `admins` | Admin-Benutzer für das Interface |
| `users` | Gateway-Benutzer (API-Nutzer) |
| `user_provider_keys` | Verschlüsselte Provider API-Keys |
| `usage_logs` | Request-Tracking und Kosten |
| `budgets` | Budget-Definitionen |
| `budget_reset_logs` | Budget-Historie |
| `model_pricing` | Modell-Kosten-Konfiguration |
### Datenbank-Zugriff
**Via phpMyAdmin:**
```
http://localhost:8081
Server: mariadb
User: root
Password: rootpass
```
**Via CLI:**
```bash
docker compose exec mariadb mysql -u gateway -pgateway gateway
# Beispiel-Queries
SELECT * FROM users;
SELECT * FROM usage_logs ORDER BY created_at DESC LIMIT 10;
```
---
## 🔧 Docker Commands
### Container Management
```bash
# Container starten
docker compose up -d
# Container stoppen
docker compose down
# Logs anzeigen
docker compose logs -f laravel
# Container neu bauen
docker compose up -d --build
# In Laravel Container einloggen
docker compose exec laravel bash
```
### Laravel Artisan Commands
```bash
# Migrationen
docker compose exec laravel php artisan migrate
# Cache leeren
docker compose exec laravel php artisan cache:clear
docker compose exec laravel php artisan config:clear
# Queue Worker starten
docker compose exec laravel php artisan queue:work
# Tinker (Laravel REPL)
docker compose exec laravel php artisan tinker
```
### Asset Compilation
```bash
# Development (mit Hot Reload)
docker compose exec laravel npm run dev
# Production Build
docker compose exec laravel npm run build
```
---
## 🛠️ Entwicklung
### Admin-Interface Features
Das Admin-Interface unter http://localhost:80 bietet:
1. **Dashboard**
- Übersicht über Nutzungsstatistiken
- Kosten-Trends (Chart.js)
- Provider-Verteilung
- Aktive Benutzer
2. **Gateway Users**
- Benutzerverwaltung
- API-Key Management
- Pro-User Provider-Credentials
3. **API Keys**
- Virtual Keys erstellen/löschen
- Key-Testing
- Nutzungsstatistiken
4. **Budgets**
- Budget-Limits definieren
- Reset-Zeiträume (täglich/wöchentlich/monatlich)
- Benachrichtigungen
5. **Usage Logs**
- Request-Historie
- Filter & Export (CSV)
- Kosten-Analyse
6. **Model Pricing**
- Preis-Konfiguration
- Dynamische Model-Liste
- Kosten-Rechner
### LLM Provider Services
Das System unterstützt folgende Provider mit dynamischer Model-Discovery:
- **OpenAI**: GPT-3.5, GPT-4, GPT-4 Turbo
- **Anthropic**: Claude 3 (Haiku, Sonnet, Opus)
- **DeepSeek**: DeepSeek Chat Modelle
- **Google Gemini**: Gemini Pro, Flash
- **Mistral AI**: Mistral Large, Medium, Small
Alle Provider-Services befinden sich in `app/Services/LLM/`.
---
## 🔐 Sicherheit
### Production Checklist
Vor dem Production-Einsatz:
1.`.env` Konfiguration:
```env
APP_ENV=production
APP_DEBUG=false
APP_KEY=... (sicher generieren!)
```
2. ✅ Admin-Passwort ändern
3. ✅ MariaDB Root-Passwort ändern
4. ✅ phpMyAdmin deaktivieren oder absichern
5. ✅ SSL/TLS einrichten
6. ✅ Laravel Caches aktivieren:
```bash
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
```
### API-Key Verschlüsselung
Provider API-Keys werden verschlüsselt in der Datenbank gespeichert:
- Verwendung von Laravel's Encryption
- Basiert auf APP_KEY
- Automatische Ver-/Entschlüsselung
---
## 📊 Monitoring & Analytics
### Dashboard Metriken
- Gesamte Requests
- Token-Nutzung (Input/Output)
- Gesamtkosten
- Requests pro Provider
- Top-Nutzer
- Kosten-Trends (Chart.js Visualisierung)
### Export Funktionen
Usage Logs können als CSV exportiert werden mit:
- Zeitraum-Filter
- Provider-Filter
- Benutzer-Filter
- Kosten-Zusammenfassung
---
## 🐛 Troubleshooting
### Container startet nicht
```bash
# Logs prüfen
docker compose logs laravel
docker compose logs mariadb
# Container neu bauen
docker compose down
docker compose up -d --build
```
### Datenbank Connection Fehler
```bash
# MariaDB Status prüfen
docker compose ps mariadb
# Connection testen
docker compose exec laravel php artisan migrate:status
```
### Permissions Fehler
```bash
# Storage Permissions setzen
docker compose exec laravel chmod -R 777 storage bootstrap/cache
```
### Assets werden nicht geladen
```bash
# Assets neu kompilieren
docker compose exec laravel npm run build
# Storage Link neu erstellen
docker compose exec laravel php artisan storage:link
```
---
## 📚 Technologie-Stack
- **Framework**: Laravel 11.x
- **Frontend**: Livewire 3.x + Tailwind CSS 3.x
- **Datenbank**: MariaDB 11.4
- **Webserver**: Nginx + PHP-FPM 8.3
- **Charts**: Chart.js
- **Container**: Docker + Docker Compose
---
## 🔗 Nützliche Links
- **Laravel Docs**: https://laravel.com/docs
- **Livewire Docs**: https://livewire.laravel.com
- **Tailwind CSS**: https://tailwindcss.com
- **Chart.js**: https://www.chartjs.org
---
## 📝 System-Status
### ✅ Implementiert
- [x] Docker-Setup (Laravel + MariaDB + phpMyAdmin)
- [x] Admin-Authentifizierung
- [x] Gateway User Management
- [x] API Key Management mit Testing
- [x] Budget-System mit Limits
- [x] Usage Logs mit CSV Export
- [x] Model Pricing Management
- [x] Dashboard mit Statistiken
- [x] Multi-Provider Support (5 Provider)
- [x] Verschlüsselte Credential-Speicherung
- [x] Dynamische Model-Discovery
### 🚧 Geplant
- [ ] API Gateway Endpoints (OpenAI-kompatibel)
- [ ] Rate Limiting Implementation
- [ ] Email-Benachrichtigungen
- [ ] Erweiterte Analytics
- [ ] API-Dokumentation
---
**Entwickelt von Wilfried Trinkl | Laravel LLM Gateway** 🚀