FEAT-12a: provider setup docs (env vars per provider incl. TrueNAS compose placement)
This commit is contained in:
50
docs/ai-provider.md
Normal file
50
docs/ai-provider.md
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# KI-Anbieter für das Abgabe-Inserat (FEAT-12a)
|
||||||
|
|
||||||
|
`POST /gerbils/sale-ad` spricht einen beliebigen **OpenAI-kompatiblen**
|
||||||
|
Chat-Completions-Endpunkt an — kein SDK, nur drei Einstellungen (Sektion `AI`),
|
||||||
|
gesetzt als **Umgebungsvariablen oder user-secrets, niemals in appsettings
|
||||||
|
committen**. Fehlt eine der drei, antwortet der Endpunkt mit
|
||||||
|
`503 {code:"AiKeyMissing"}` und die Oberfläche zeigt den deutschen Hinweis.
|
||||||
|
|
||||||
|
| Variable | Bedeutung |
|
||||||
|
|---|---|
|
||||||
|
| `AI__BaseUrl` | Basis-URL des Anbieters (ohne `/chat/completions`) |
|
||||||
|
| `AI__ApiKey` | API-Schlüssel (Bearer) |
|
||||||
|
| `AI__Model` | Modellname des Anbieters |
|
||||||
|
|
||||||
|
## Anbieter-Matrix (alle mit derselben Implementierung getestet)
|
||||||
|
|
||||||
|
| Anbieter | `AI__BaseUrl` | Beispiel-`AI__Model` | Kosten |
|
||||||
|
|---|---|---|---|
|
||||||
|
| **Google Gemini** (vermutlich Julians Wahl) | `https://generativelanguage.googleapis.com/v1beta/openai` | `gemini-2.0-flash` | Free Tier |
|
||||||
|
| **Groq** | `https://api.groq.com/openai/v1` | `llama-3.3-70b-versatile` | Free Tier |
|
||||||
|
| **Mistral** | `https://api.mistral.ai/v1` | `mistral-small-latest` | Free Tier |
|
||||||
|
| **Ollama** (lokal/TrueNAS) | `http://<host>:11434/v1` | `llama3.2` | kostenlos, lokal |
|
||||||
|
|
||||||
|
Ollama ignoriert den Schlüssel — `AI__ApiKey=ollama` als Platzhalter setzen
|
||||||
|
(die Einstellung darf nur nicht leer sein).
|
||||||
|
|
||||||
|
## Setzen der Variablen
|
||||||
|
|
||||||
|
**Entwicklung (PowerShell, vor dem AppHost-Start):**
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
$env:AI__BaseUrl = 'https://generativelanguage.googleapis.com/v1beta/openai'
|
||||||
|
$env:AI__ApiKey = '<schlüssel>'
|
||||||
|
$env:AI__Model = 'gemini-2.0-flash'
|
||||||
|
```
|
||||||
|
|
||||||
|
oder per user-secrets im API-Projekt:
|
||||||
|
`dotnet user-secrets set "AI:ApiKey" "<schlüssel>" --project GerbilManagerWebAPI` (usw.).
|
||||||
|
|
||||||
|
**TrueNAS / Docker Compose** (für Dwights Ops-Doku): im `environment:`-Block des
|
||||||
|
API-Containers —
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
services:
|
||||||
|
webapi:
|
||||||
|
environment:
|
||||||
|
AI__BaseUrl: https://generativelanguage.googleapis.com/v1beta/openai
|
||||||
|
AI__ApiKey: ${AI_API_KEY} # Wert in der TrueNAS-App/.env hinterlegen
|
||||||
|
AI__Model: gemini-2.0-flash
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user