AI-Provider einrichten¶
Drei Pfade. Mische dich nicht zwischen ihnen — pro Instanz ein Provider, Embeddings können separat laufen.
Ollama (lokal, empfohlen für Self-Hosting)¶
Vorteile¶
- Daten bleiben im Stack
- Keine API-Kosten
- Kein Internetzugang nötig
Voraussetzungen¶
- 8 GB RAM für
llama3.1:8b, 64 GB+ fürllama3.1:70b - GPU stark empfohlen (NVIDIA mit
nvidia-container-toolkit) - 10–80 GB Disk für Modelle
Aktivieren¶
In .env:
Ollama als Compose-Profil starten:
GPU-Beschleunigung¶
In docker-compose.prod.yml (oder Override-File):
ollama:
image: ollama/ollama:latest
profiles: ["ai"]
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
volumes:
- ollama-models:/root/.ollama
Voraussetzung auf dem Host: nvidia-container-toolkit installiert.
Modell installieren¶
/admin/ai:
- Provider: Ollama
- Modellname:
llama3.1:8b(oder anderes) - Installieren — Fortschritt streamt per SSE
- Embedding-Modell:
nomic-embed-text, ebenfalls installieren
Modell-Empfehlungen nach RAM:
| RAM | Modell | Parameter |
|---|---|---|
| 8 GB | llama3.1:8b |
8B |
| 16 GB | llama3.1:8b |
8B (schneller) |
| 32 GB+ | mistral oder mixtral:8x7b |
7B/56B |
| 64 GB+ GPU | llama3.1:70b |
70B |
Modelle verwalten¶
/admin/ai/models:
- Liste installierte Modelle
- Modelle löschen (POST-Endpoint, nicht DELETE —
axios.delete()mit Body ist unzuverlässig) - Modelle nachinstallieren
Anthropic (Cloud, höchste Qualität)¶
Voraussetzungen¶
- Anthropic-Account (
console.anthropic.com) - API-Key
- Outbound-Zugriff auf
api.anthropic.com
Konfiguration¶
/admin/ai:
- Provider: Anthropic
- API-Key einsetzen
- Modell wählen:
claude-sonnet-4-6,claude-opus-4-7, … - Embedding-Modell separat (Ollama nötig, siehe oben)
Kosten¶
Pay-as-you-go pro Token. Faustregel:
- Service-Analyse: ~2 000 Input + 500 Output Tokens → ein paar Cent
- Chat-Frage: ~1 000–3 000 Input + 200–800 Output → ein paar Cent
Für viele Tenants kann das im Monat zu zweistelligen Eurobeträgen werden — Kosten in der Anthropic-Console behalten.
Externer OpenAI-kompatibler Anbieter¶
Für vLLM, LM Studio, text-generation-inference, lokal gehostete Cloud-Modelle:
/admin/ai:
- Provider: Extern
- API-URL:
http://gpu-server:8080/v1 - API-Key (falls nötig)
- Modellname
Der Endpoint muss OpenAI-kompatibel sein (Chat-Completion mit messages-Array).
Verbindung testen¶
Nach Konfiguration: Verbindung testen schickt eine kleine Test-Frage und zeigt:
- Antwortzeit
- Antwort-Inhalt (oder Fehler-Code)
- Token-Counts (Input + Output)
So weißt du sofort ob die Konfiguration trägt.
Default-Parameter¶
Pro Provider:
| Parameter | Default | Bedeutung |
|---|---|---|
temperature |
0.3 | niedrig = sachlich, hoch = kreativ |
max_tokens |
1024 | Output-Limit |
top_p |
0.9 | Nukleus-Sampling |
Anpassbar in der Admin-UI.
Fallback bei Provider-Ausfall¶
Wenn der konfigurierte Provider nicht antwortet (Anthropic-API-Outage, Ollama-Container down):
- Chat-Widget zeigt „AI gerade nicht verfügbar — bitte später erneut versuchen"
- Service-Analyse fällt auf gecachte Antworten zurück, wenn vorhanden
- Keine Auto-Retry, kein anderer Provider — bewusst, um nicht überraschende Cloud-Kosten zu verursachen
Schema¶
Konfiguration liegt in ai_config-Tabelle (Migration 065+067):
| Feld | Wert |
|---|---|
provider |
ollama / anthropic / openai_compat |
chat_model |
Modellname |
embed_provider |
Default ollama (auch wenn Chat anderswo läuft) |
embed_model |
nomic-embed-text |
temperature |
float |
api_url |
für extern |
api_key |
verschlüsselt gespeichert |
Permission¶
ai.config für Admins. Andere User sehen nur „AI ist aktiv / inaktiv" ohne API-Key.
Anschluss¶
- AI-Chat & Analyse — wofür der Provider gebraucht wird
- Wiki — Embeddings sind nur sinnvoll wenn Wiki-Artikel da sind