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

4.4 KiB

🔧 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'

// ❌ 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

# ❌ 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

# 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

curl http://192.168.1.190:3000/api/debug/config

Résultat attendu :

{
  "AI_PROVIDER_TAGS": "openai",
  "AI_PROVIDER_EMBEDDING": "openai",
  "OPENAI_API_KEY": "set (hidden)"
}

2. Tester les endpoints IA

# Test embeddings
curl http://192.168.1.190:3000/api/ai/test

Résultat attendu :

{
  "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 SettingsAI 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

docker compose exec keep-notes npx tsx scripts/debug-config.ts

Vérifier les variables d'environnement

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