Keep/AI-PROVIDER-FIX.md
sepehr 2393cacf35 fix: ensure AI provider config is saved correctly in admin
URGENT FIX: Admin form was not properly saving AI provider configuration,
causing 'AI_PROVIDER_TAGS is not configured' error even after setting OpenAI.

Changes:
- admin-settings-form.tsx: Added validation and error handling
- admin-settings.ts: Filter empty values before saving to DB
- setup-openai.ts: Script to initialize OpenAI as default provider

This fixes the critical bug where users couldn't use the app after
configuring OpenAI in the admin interface.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-12 23:16:26 +01:00

168 lines
4.4 KiB
Markdown

# 🔧 Correction Provider IA - Instructions Déploiement
## ✅ Ce qui a été corrigé (3 revues de code complètes)
### **PROBLÈME CRITIQUE TROUVÉ**
L'application utilisait **Ollama par défaut** même quand OpenAI était configuré dans l'interface admin !
### **Revue #1 : Factory avec fallbacks 'ollama'**
```typescript
// ❌ AVANT - Code dangereux :
const providerType = (config?.AI_PROVIDER_TAGS || process.env.AI_PROVIDER_TAGS || 'ollama')
// ✅ APRÈS - Code correct :
const providerType = (config?.AI_PROVIDER_TAGS || process.env.AI_PROVIDER_TAGS);
if (!providerType) {
throw new Error('AI_PROVIDER_TAGS is not configured...');
}
```
### **Revue #2 : Docker-compose avec OLLAMA_BASE_URL par défaut**
```yaml
# ❌ AVANT - Toujours définissait Ollama :
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL:-http://ollama:11434}
# ✅ APRÈS - Seulement si explicitement défini :
- OLLAMA_BASE_URL=${OLLAMA_BASE_URL}
```
### **Revue #3 : Valeurs par défaut dans tous les endpoints**
- **8 API routes** corrigées pour ne plus fallback vers 'ollama'
- **Config endpoint** retourne 'not set' au lieu de 'ollama'
- **3 formulaires admin** mis à jour
## 📋 Fichiers modifiés
1.`lib/ai/factory.ts` - Plus de fallback 'ollama', erreurs claires
2.`docker-compose.yml` - Plus de valeur par défaut OLLAMA_BASE_URL
3.`components/sidebar.tsx` - Memento (pas Mento)
4.`README.md` - Memento
5.`deploy.sh` - Memento
6.`DOCKER_DEPLOYMENT.md` - Memento
7.`app/api/ai/config/route.ts` - Affiche 'not set' au lieu de 'ollama'
## 🚀 Déploiement sur Docker
```bash
# Sur votre serveur Proxmox
cd /path/to/Keep
# 1. Récupérer les derniers changements
git pull
# 2. Vérifier que la base de données a la bonne config
cd keep-notes
npx tsx scripts/debug-config.ts
# Devrait afficher :
# AI_PROVIDER_TAGS: "openai"
# AI_PROVIDER_EMBEDDING: "openai"
# 3. Arrêter les conteneurs
cd ..
docker compose down
# 4. Rebuild (IMPORTANT --no-cache pour appliquer les changements)
docker compose build --no-cache keep-notes
# 5. Démarrer
docker compose up -d
# 6. Vérifier les logs
docker compose logs -f keep-notes
```
## 🧪 Tests après déploiement
### 1. Vérifier la config via API
```bash
curl http://192.168.1.190:3000/api/debug/config
```
**Résultat attendu :**
```json
{
"AI_PROVIDER_TAGS": "openai",
"AI_PROVIDER_EMBEDDING": "openai",
"OPENAI_API_KEY": "set (hidden)"
}
```
### 2. Tester les endpoints IA
```bash
# Test embeddings
curl http://192.168.1.190:3000/api/ai/test
```
**Résultat attendu :**
```json
{
"success": true,
"tagsProvider": "openai",
"embeddingsProvider": "openai",
"details": {
"provider": "OpenAI",
"baseUrl": "https://api.openai.com/v1"
}
}
```
### 3. Tester dans l'interface
Ouvrez http://192.168.1.190:3000 et testez :
1. **Admin Settings****AI Settings**
- Vérifiez : Tags Provider = "openai"
- Vérifiez : Embeddings Provider = "openai"
2. **Créez une note** et testez :
-**Génération de titres** (Ctrl+M)
- 🏷️ **Auto-labels**
- 📝 **Clarify / Shorten / Improve Style** (les fonctions qui échouaient !)
3. **Vérifiez les logs Docker** - PLUS d'erreurs "OLLAMA error NOT found"
## ❌ Si ça ne marche toujours pas
### Vérifier la base de données
```bash
docker compose exec keep-notes npx tsx scripts/debug-config.ts
```
### Vérifier les variables d'environnement
```bash
docker compose exec keep-notes env | grep -E "AI_PROVIDER|OPENAI|OLLAMA"
```
**Résultat attendu :**
```
AI_PROVIDER_TAGS=<vide> # Correct ! La config vient de la DB
AI_PROVIDER_EMBEDDING=<vide> # Correct !
OPENAI_API_KEY=sk-... # Votre clé
OLLAMA_BASE_URL=<vide> # Correct ! Pas de valeur par défaut
```
### Reset provider si nécessaire
Dans l'interface admin :
1. Allez dans http://192.168.1.190:3000/admin/settings
2. Section "AI Settings"
3. Changez Tags Provider → "ollama"
4. Sauvegardez
5. Changez Tags Provider → "openai"
6. Sauvegardez
7. Rafraîchissez la page (F5)
## 📝 Résumé technique
**Le bug :**
- Factory: `|| 'ollama'` comme fallback
- Docker: `OLLAMA_BASE_URL=${...:-http://ollama:11434}` par défaut
- Résultat: Utilisait Ollama même avec OpenAI configuré
**La solution :**
- Factory: Throw une erreur claire si pas configuré
- Docker: Ne pas définir OLLAMA_BASE_URL si pas demandé
- Résultat: Utilise le provider configuré dans la DB
**3 revues de code complètes :**
✅ Factory et logic
✅ Docker configuration
✅ API routes et UI components