Configuration Affine AI (OpenAI Override)
1. Contexte et Problématique
Par défaut, les versions self-hosted d'Affine (v0.18+) sont configurées pour utiliser des modèles Google Gemini spécifiques. L'objectif est de forcer l'utilisation d'OpenAI (GPT-4o) pour tous les scénarios IA en contournant les limitations hardcodées du backend.
2. Configuration Infrastructure (Docker Compose)
La variable d'environnement selfhosted=true est obligatoire pour débloquer le menu d'administration IA et autoriser les API tiers.
Modification du fichier docker-compose.yml
Modifier le service affine pour ajouter les variables et fixer le montage du fichier de configuration dans un répertoire neutre (/opt) pour éviter les problèmes de permissions root vs node.
services:
affine:
image: ghcr.io/toeverything/affine:stable
environment:
# ... variables existantes (DB, Redis) ...
- AFFINE_COPILOT_ENABLED=true
# CRITIQUE : Active le support des API tiers et l'interface Admin AI
- selfhosted=true
# Force le chemin de configuration (évite les erreurs de dossier home)
- AFFINE_CONFIG_PATH=/opt/affine_config.json
volumes:
- ${UPLOAD_LOCATION}:/root/.affine/self-host/storage
# Montage dans /opt pour contourner les restrictions de permissions /root
- ${CONFIG_LOCATION}:/opt/affine_config.json
Note : Assurez-vous que ${CONFIG_LOCATION} dans le fichier .env pointe bien vers votre fichier json sur l'hôte.
3. Configuration Initiale (Fichier JSON)
Ce fichier sert uniquement à déclarer le fournisseur. La configuration fine des modèles se fera via l'interface web.
Fichier sur l'hôte : config.json
{
"copilot": {
"enabled": true,
"providers": {
"openai": {
"apiKey": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
},
"embedding": {
"provider": "openai",
"model": "text-embedding-3-small",
"apiKey": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
}
Note : Laisser les permissions du fichier à 644 pour qu'il soit lisible par le conteneur.
4. Configuration Finale (Interface Web Admin)
C'est la méthode recommandée ("Plan B") pour assurer la persistance et mapper correctement les modèles internes d'Affine vers OpenAI.
- Se connecter à l'instance Affine.
- Accéder à l'URL :
https://votre-domaine-affine.com/admin(ou via le menu Settings > Admin Panel). - Aller dans l'onglet AI (ou Intelligence).
- Activer l'option Enable Copilot.
Mapping des Scénarios (Surcharge)
Dans la section de configuration des scénarios (Custom Models), coller le JSON suivant. Important : Cette configuration redirige toutes les requêtes internes (qui demandent par défaut gemini-2.5-flash) vers gpt-4o.
{
"scenarios": {
"chat": "gpt-4o",
"chat_stream": "gpt-4o",
"writing": "gpt-4o",
"translation": "gpt-4o",
"summary": "gpt-4o",
"brainstorm": "gpt-4o",
"coding": "gpt-4o",
"check_grammar": "gpt-4o",
"quick_decision_making": "gpt-4o",
"quick_text_generation": "gpt-4o",
"complex_text_generation": "gpt-4o",
"polish_and_summarize": "gpt-4o",
"audio_transcribing": "whisper-1",
"image": "dall-e-3"
},
"override_enabled": true
}
Vérification OpenAI Provider
Juste en dessous, dans la section OpenAI Provider, vérifier que la clé API est bien détectée (masquée). Si nécessaire, forcer la configuration :
{
"apiKey": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
5. Dépannage Rapide
Si l'IA ne répond pas (Erreur 500 ou "No provider available") :
- Vérifier les logs :
docker compose logs -f affine - Si erreur
ZodError: Le fichier JSON est mal formé ou le modèle retourné par l'API n'est pas une liste valide. - Si erreur
Permission denied: Vérifier que le montage Docker n'est pas dans/rootcôté conteneur. - Si les menus Admin sont invisibles : Vérifier que
selfhosted=trueest bien chargé dans les variables d'environnement.
No comments to display
No comments to display