feat(agent): v4.11.0 - clés API par utilisateur, chargement dynamique modèles, commandes slash
This commit is contained in:
+36
-1
@@ -1,6 +1,41 @@
|
||||
# Changelog — FlowDeck
|
||||
|
||||
## v4.10.1 (2026-09-05) — Agent IA : configuration LLM dans l'UI
|
||||
## v4.11.0 (2026-09-05) — Agent IA : clés API par utilisateur & chargement dynamique des modèles
|
||||
|
||||
> Suite de v4.10.1 : migre la config LLM d'un **global admin** vers des **credentials par
|
||||
> utilisateur**. Chacun peut enregistrer plusieurs provider + clé API dans son profil, les modèles
|
||||
> disponibles sont **chargés automatiquement depuis le fournisseur**, et le provider/modèle actif
|
||||
> d'une conversation se pilote **directement dans le chat** via des commandes slash.
|
||||
|
||||
### Added
|
||||
- **Clés par utilisateur** : table `user_llm_keys` (UNIQUE(user_id, provider)) + service
|
||||
`app/services/llm_config.py` : `get_user_llm_key`, `list_user_llm_keys` (masqué),
|
||||
`upsert_user_llm_key`, `delete_user_llm_key`. Une clé vide conserve l'existante.
|
||||
- **Chargement dynamique des modèles** : `fetch_provider_models()` (httpx) — GET `{base}/models`
|
||||
pour OpenAI-compatible (Bearer), headers `x-api-key`/`anthropic-version` (Anthropic),
|
||||
`x-goog-api-key` (Gemini) ; stockés dans `models_json` et fusionnés dans `GET /providers`.
|
||||
- **Endpoints API** (tout utilisateur authentifié) :
|
||||
- `GET /api/agent/keys`, `PUT/DELETE /api/agent/keys/{provider}`,
|
||||
- `POST /api/agent/keys/{provider}/models` (fallback sur la clé stockée, pas de fuite de clé),
|
||||
- `PATCH /api/agent/conversations/{id}` (title / provider / model — commande slash).
|
||||
- **`POST /run`** : utilise la clé API de l'utilisateur pour le provider de la conversation
|
||||
(sinon config globale / `.env` / offline mock).
|
||||
- **UI Settings → Agent & IA** (visible pour tous, plus seulement admin) : carte par provider
|
||||
(clé API masquée, URL API, « Charger les modèles » en live, modèle par défaut,
|
||||
Enregistrer / Supprimer). La config globale reste admin sous « Configuration globale ».
|
||||
- **Commandes slash dans le panel agent** : `/help`, `/providers`, `/keys`,
|
||||
`/provider <nom>`, `/model <nom>` — menu de suggestions live, appliquées via `PATCH`
|
||||
et sans appel LLM.
|
||||
|
||||
### Infra
|
||||
- `VERSION` → 4.11.0 ; migration idempotente (création table `user_llm_keys` + index).
|
||||
|
||||
### Tests
|
||||
- **239 tests verts** (+7 : CRUD clés + masquage des secrets, isolation par utilisateur,
|
||||
provider invalide, fetch modèles (clé stockée / body gagnant / erreur), PATCH conversation,
|
||||
`/run` utilise la clé de l'utilisateur).
|
||||
|
||||
|
||||
|
||||
> Comble le trou UX de v4.10.0 : l'utilisateur pouvait discuter avec l'agent mais **ne pouvait
|
||||
> configurer ni provider ni modèle**. Ajout d'un sélecteur provider/modèle dans le panneau, d'une
|
||||
|
||||
Reference in New Issue
Block a user