KI-Einstellungen: Schluessel und Modell in der Oberflaeche

This commit is contained in:
2026-09-14 16:06:39 +02:00
parent 96ab707bfc
commit 09e2d353a1
+23 -3
View File
@@ -1,13 +1,33 @@
# 05 KI # 05 KI
Modell: **`gpt-5.6-luna`** (OpenAI), angesprochen über `chat/completions`. Modell: **`gpt-5.6-luna`** (OpenAI), angesprochen über `chat/completions`. Der
Schlüssel und Modell stehen ausschließlich in `server/.env` (chmod 600) – der
Browser spricht nie direkt mit OpenAI, jede Anfrage läuft über das Backend Browser spricht nie direkt mit OpenAI, jede Anfrage läuft über das Backend
(`server/src/ai.js`). (`server/src/ai.js`). Schlüssel und Modell werden unter *Einstellungen → KI*
gepflegt und liegen in `icon_settings`; `server/.env` (chmod 600) bleibt
Startwert und Rückfall.
Fehlt der Schlüssel, läuft das CRM normal weiter und blendet die KI-Knöpfe aus. Fehlt der Schlüssel, läuft das CRM normal weiter und blendet die KI-Knöpfe aus.
`GET /api/ai/status` sagt der Oberfläche, ob etwas eingerichtet ist. `GET /api/ai/status` sagt der Oberfläche, ob etwas eingerichtet ist.
## Schlüssel pflegen
*Einstellungen → KI* (nur Administratoren). Der Schlüssel steht in
`icon_settings` (`openai_api_key`), die `.env` bleibt Startwert und Rückfall –
**die Datenbank gewinnt**. Grund: ein Schlüssel läuft ab oder wird gewechselt,
und dann soll niemand dafür eine Datei auf dem Server bearbeiten und einen
Dienst neu starten müssen.
| Was | Verhalten |
| --- | --- |
| Anzeige | nur verkürzt (`sk-proj…a1b2`) – vollständig verlässt der Schlüssel den Server nie |
| Eingabe | Passwortfeld, schreibt nur; ein bestehender Wert wird ersetzt |
| Entfernen | löscht den Wert in der Datenbank; steht in der `.env` einer, gilt wieder dieser |
| Modell | frei setzbar, Vorgabe `gpt-5.6-luna` |
| Test | ein Miniaufruf gegen das Modell – sagt, ob Schlüssel, Modellname und Kontingent zusammenpassen |
In der Historie landet, **dass** jemand den Schlüssel gewechselt hat, nie der
Wert. Ein stiller Wechsel wäre später nicht mehr nachvollziehbar.
> **Fallstrick:** `gpt-5.6-luna` akzeptiert **kein eigenes `temperature`** und > **Fallstrick:** `gpt-5.6-luna` akzeptiert **kein eigenes `temperature`** und
> weist jeden Wert außer dem Standard mit HTTP 400 ab. `ai.js` schickt deshalb > weist jeden Wert außer dem Standard mit HTTP 400 ab. `ai.js` schickt deshalb
> keines. `response_format: {type:'json_object'}` funktioniert dagegen. > keines. `response_format: {type:'json_object'}` funktioniert dagegen.