# Prompt complet pour Cursor Pro – Programme de prétraitement PDF avec agents LLM modulables Développe un programme Python avec interface graphique (Tkinter ou PyQt6) permettant de : 1. Charger un document PDF 2. Naviguer entre les pages 3. Sélectionner une ou plusieurs zones rectangulaires (ex : schéma, tableau, formule) 4. Associer un contexte textuel (automatique via OCR ou manuel) 5. Traduire, interpréter ou résumer le contenu sélectionné en utilisant différents agents LLM configurables 6. Exporter le résultat enrichi au format **Markdown (.md)** prêt à être utilisé dans une base Ragflow --- ## Structure du projet recommandée ``` ragflow_pretraitement/ ├── main.py ├── ui/ │ ├── viewer.py # Navigation et sélection dans le PDF │ └── llm_config_panel.py # Choix des agents, paramètres ├── agents/ │ ├── base.py # Classe LLMBaseAgent │ ├── vision.py # VisionAgent │ ├── translation.py # TranslationAgent │ ├── summary.py # SummaryAgent │ └── rewriter.py # RewriterAgent ├── utils/ │ ├── ocr.py │ ├── translate.py │ ├── markdown_export.py │ └── api_ollama.py ├── config/ │ └── llm_profiles.json # Profils LLM préconfigurés ├── data/ │ └── outputs/ # .md et images générées └── docs/ └── prompts/ ``` --- ## Fonctionnalités de l’interface - Navigation page par page dans le PDF - Zoom/dézoom + recentrage - Sélection d’une zone avec la souris - Attribution d’un **type** : schéma, tableau, formule, autre - Zone de texte modifiable pour le contexte - Menu de sélection : - Modèle par tâche (vision, résumé, traduction…) - Langue de prompt (FR / EN) - Paramètres (température, top_p, top_k, num_tokens) - Bouton : "Appliquer agent" - Aperçu live de la sortie - Export Markdown (`document_final.md`) --- ## Agents LLM ### Classe `LLMBaseAgent` Chaque agent hérite de cette base, et peut : - S’appeler avec un prompt - Prendre une image (pour vision) - Gérer les paramètres dynamiquement ```python class LLMBaseAgent: def __init__(self, model_name, endpoint, **config): ... def generate(self, prompt: str, images: List[bytes] = None) -> str: ... ``` ### Rôles recommandés | Rôle | Classe | Modèle par défaut | Langue | | ------------- | ------------------ | ------------------- | --------- | | Vision | `VisionAgent` | llama3.2-vision:90b | 🇬🇧 | | Traduction | `TranslationAgent` | mistral / qwen2.5 | 🇫🇷↔🇬🇧 | | Résumé | `SummaryAgent` | deepseek-r1 | 🇫🇷 | | Reformulation | `RewriterAgent` | mistral / deepseek | 🇫🇷 | --- ## Profils et configuration dynamique ### Fichier `config/llm_profiles.json` Permet de charger automatiquement un ensemble d’agents, de modèles et de paramètres selon les besoins. ```json { "avancé": { "vision": { "model": "llama3.2-vision:90b-instruct-q8_0", "language": "en", "temperature": 0.2, "top_p": 0.95 }, "translation": { "model": "mistral", "language": "fr", "temperature": 0.1 } } } ``` --- ## Format Markdown exporté ```md ## Figure 3 – Classification des granulats **Contexte** : Ce schéma montre... **Analyse IA (Vision)** : The diagram shows... **Paramètres utilisés** : modèle=llama3.2-vision, temperature=0.2, langue=en **Source** : Page 12, Type: Schéma, Fichier: NF P11-300 ``` --- ## Étapes de test recommandées 1. Charger un PDF 2. Sélectionner une zone 3. Associer un rôle + agent 4. Lancer l’analyse (vision, résumé, etc.) 5. Vérifier la sortie 6. Exporter le fichier Markdown --- ## Modes d'analyse et niveaux de charge LLM L'utilisateur peut choisir entre **trois niveaux d'analyse** dans l'interface : | Niveau | Vision | Résumé / Reformulation | Traduction | Usage recommandé | | --------- | ----------------- | ---------------------- | -------------------- | ------------------------------- | | 🔹 Léger | `llava:34b` | `mistral` | `mistral` | Débogage, prototypes rapides | | ⚪ Moyen | `llava` | `deepseek-r1` | `qwen2.5`, `mistral` | Usage normal | | 🔸 Avancé | `llama3.2-vision` | `deepseek-r1` | `deepseek` | Documents critiques, production | ### Interface - Menu déroulant "Mode d’analyse" : - Léger / Moyen / Avancé - Ce mode détermine les **modèles, la langue, et les paramètres par défaut** - L'utilisateur peut ensuite **modifier manuellement** chaque agent (surcharger les préréglages) ### Exemple de workflow 1. L'utilisateur sélectionne "Avancé" 2. Tous les agents se préconfigurent avec les modèles lourds 3. Pour la traduction uniquement, il choisit manuellement `mistral` car il veut aller plus vite 4. Le fichier `llm_custom.json` conserve ces réglages personnalisés Ce système permet d'adapter la **charge GPU** et la **vitesse de traitement** au besoin sans perdre en contrôle.