Skip to main content

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 :

  1. Requête utilisateur : "Génère un CSV des villes de France".
  2. Inlter (Filtre) : Le filtre secure_csv détecte le mot-clé et injecte des instructions au modèle pour utiliser assistant_tools.create_csv.
  3. Modèle LLM : Génère un bloc de code Python utilisant le module assistant_tools.
  4. Exécution (Jupyter) : Le code est exécuté dans le conteneur Jupyter. Le fichier est écrit dans le volume partagé /downloads.
  5. 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.
  6. 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 : /downloads
  • openwebui : /downloads
  • downloads-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.py existe physiquement sur le serveur.
    • Vérifier la variable d'environnement PYTHONPATH=/downloads dans le docker-compose.yml.
    • Redémarrer le conteneur : docker compose up -d jupyter.

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_csv est 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.

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_csv contient bien l'instruction inlet qui 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.