Génération de Fichiers (CSV & PDF)
Ce document décrit le fonctionnement, la mise en place et le dépannage du système de génération de fichiers au sein de l'Assistant OpenWebUI.
Architecture du système
Le processus de génération suit ce flux :
- Requête utilisateur : "Génère un CSV des villes de France".
- Inlter (Filtre) : Le filtre
secure_csvdétecte le mot-clé et injecte des instructions au modèle pour utiliserassistant_tools.create_csv. - Modèle LLM : Génère un bloc de code Python utilisant le module
assistant_tools. - Exécution (Jupyter) : Le code est exécuté dans le conteneur Jupyter. Le fichier est écrit dans le volume partagé
/downloads. - Outlet (Filtre) : Le filtre détecte la création du fichier, le déplace vers un stockage sécurisé (
/app/backend/data/uploads), l'enregistre dans la base de données OpenWebUI et génère un lien de téléchargement officiel. - Réponse : L'utilisateur voit un bouton "Télécharger le fichier" au lieu du code Python brut.
Mise en place technique
1. Volume Partagé
Un volume Docker nommé openwebui_downloads_shared est monté sur :
jupyter-notebook:/downloadsopenwebui:/downloadsdownloads-static:/usr/share/nginx/html(pour l'accès legacy)
2. Module assistant_tools
Le fichier /downloads/assistant_tools.py contient la fonction create_csv :
def create_csv(filename, headers, rows):
# Logique d'écriture du fichier...
return f"OK: {url}"
3. Configuration Jupyter (PYTHONPATH)
Dans le docker-compose.yml, le service Jupyter doit avoir le /downloads dans son chemin de recherche Python :
environment:
- PYTHONPATH=/downloads
Guide de dépannage (Que faire si ça casse ?)
1. "ModuleNotFoundError: No module named 'assistant_tools'"
- Cause : Jupyter ne trouve pas le script dans son chemin de recherche.
- Solution :
- Vérifier que
/downloads/assistant_tools.pyexiste physiquement sur le serveur. - Vérifier la variable d'environnement
PYTHONPATH=/downloadsdans ledocker-compose.yml. - Redémarrer le conteneur :
docker compose up -d jupyter.
- Vérifier que
2. Erreur 404 lors du téléchargement
- Cause : Le lien a été généré mais le fichier est introuvable ou le lien est mal formé.
- Solution :
- Vérifier que le filtre
secure_csvest bien ACTIF dans OpenWebUI (Paramètres > Fonctions). - Vérifier les logs d'OpenWebUI :
docker logs openwebui --tail 100. - S'assurer que le script de l'assistant a bien utilisé le dossier
/downloads/et non un chemin aléatoire.
- Vérifier que le filtre
3. L'assistant est très lent ou charge en boucle
- Cause : Le modèle tente peut-être des recherches web massives avant de générer le code, ou plusieurs filtres entrent en conflit.
- Solution :
- Désactiver les filtres redondants (Artifcats, PDF Creator legacy).
- Vérifier que le filtre
secure_csvcontient bien l'instructioninletqui interdit les recherches web inutiles pour la data simple.
Maintenance
Pour mettre à jour la logique de sécurisation des fichiers, le code se trouve dans la base de données SQLite d'OpenWebUI, sous l'ID secure_csv de la table function.