coffreobsidian/inbox/Architecture_Agents_LLM_et_Configurations_RAGFLOW.md
2025-03-27 16:48:21 +01:00

7.2 KiB
Raw Permalink Blame History

⚙️ Architecture enrichie Prétraitement PDF + Agents LLM personnalisables pour Ragflow

🎯 Objectif

Structurer un programme complet de prétraitement de documents PDF techniques (type normes), intégrant :

  • Affichage interactif du PDF
  • Sélection visuelle de zones à analyser
  • Choix dynamique des LLMs à chaque étape
  • Personnalisation des paramètres de génération
  • Export structuré en Markdown pour Ragflow

🧠 LLMs disponibles via Ollama (http://217.182.105.173:11434)

Rôle Nom du modèle Taille Notes
Texte rapide mistral:latest 4.1 GB Idéal pour traduction courte ou génération FR
Traduction fine cline_deepseek, qwen2.5, mistral 6477 GB Meilleur raisonnement logique
Résumé avancé deepseek-r1:70b-llama-distill-q8_0 74 GB Long documents, résumés normés
Vision complète llama3.2-vision:90b-instruct-q8_0 95 GB Le plus puissant pour schémas annotés
Vision rapide llava:34b-v1.6-fp16 69 GB Prototypage ou analyse légère
Embedding nomic-embed-text:137m-v1.5-fp16 274 MB Pour vectorisation RAG
Reranker bge-reranker-v2-m3 1.2 GB Classement de pertinence

🧩 Profils de configuration LLM

🔁 Modes prédéfinis

Mode Vision Traduction Résumé
Test rapide llava mistral mistral
Standard llava qwen2.5 deepseek
Avancé llama3.2-vision deepseek deepseek

🧠 Architecture des agents LLM

📦 Base : LLMBaseAgent

class LLMBaseAgent:
    def __init__(self, model_name, endpoint, **generation_config):
        self.model_name = model_name
        self.endpoint = endpoint
        self.config = generation_config

    def generate(self, prompt, images=None):
        # Requête HTTP vers Ollama API
        pass

🧱 Spécialisations :

  • VisionAgent : Interprétation de schémas
  • TranslationAgent : Traduction FR ↔ EN
  • SummaryAgent : Résumé / Réécriture

⚙️ Paramètres de génération à exposer

Paramètre Description Exemple par défaut
temperature Contrôle de la créativité 0.2 (factuel)
top_p Nucleus sampling (proportion cumulée) 0.9
top_k Nombre de tokens candidats 40
num_predict Nombre max de tokens générés 512 ou 1024
repeat_penalty Réduction des répétitions 1.1
stop Liste de tokens d'arrêt ["\n\n"]

🧩 UI Interface utilisateur LLM

Dans linterface graphique :

  • 🔘 Menus déroulants pour choisir le modèle par tâche
  • 🧪 Champs sliders ou numériques pour :
    • temperature
    • top_k
    • top_p
    • max_tokens
  • 💾 Bouton « Sauvegarder profil personnalisé »
  • 📂 Fichier llm_config.json utilisé à lexécution

Exemple de bloc .md généré

## Figure 4  Répartition granulométrique

**Contexte** : Ce schéma illustre la classification...

**Analyse par modèle Vision** (llama3.2-vision):
- The diagram shows a distribution curve...
- Key terms: grain size, density...

**Paramètres utilisés** : temperature=0.3, top_p=0.95, modèle=llama3.2-vision

📦 Fichiers suggérés

  • config/llm_profiles.json : profils prédéfinis
  • config/llm_custom.json : dernier profil personnalisé utilisé
  • agents/vision.py, agents/translation.py, etc. : agents spécifiques
  • utils/api_ollama.py : centralise les appels aux modèles

🧠 Conclusion

Cette structuration permet une flexibilité complète :

  • pour le développement rapide
  • pour les expérimentations
  • pour la production normée de chunks optimisés pour Ragflow

🧑‍💻 Rôles dagents spécialisés avec langues et prompts adaptés

🎭 Objectif

Chaque agent doit :

  • Avoir un rôle explicite (vision, résumé, reformulation, etc.)
  • Être lié à un modèle spécifique (optimisé pour la tâche)
  • Suggérer ou imposer une langue de prompt adaptée
  • Fournir des préréglages de génération par défaut

🔁 Exemples dagents spécialisés

Rôle Classe agent Modèle recommandé Langue du prompt Température Notes
🔍 Interprétation VisionAgent llama3.2-vision 🇬🇧 Anglais 0.2 Précision, analyse dimage
✍️ Résumé normatif SummaryAgent deepseek-r1 🇫🇷 Français 0.3 Résumé technique long
🔄 Traduction TranslationAgent mistral, qwen2.5 🇫🇷🇬🇧 Auto 0.1 Traduction fidèle
🧱 Reformulation RewriterAgent mistral ou deepseek 🇫🇷 Français 0.3 Clarification technique
🧩 Markdown Formatter MarkdownAgent cline_qwen_fp16, mistral 🇫🇷 0.25 Structuration finale

⚙️ Intégration dans le système de profils

Chaque profil (test, standard, avancé) peut :

  • Charger automatiquement les agents recommandés
  • Définir pour chaque rôle :
    • modèle
    • langue
    • params : temperature, top_p, top_k, etc.
    • prompt_template (optionnel)

🗂️ Exemple de configuration dans llm_profiles.json

{
  "standard": {
    "translation": {
      "model": "mistral",
      "language": "fr",
      "temperature": 0.1
    },
    "vision": {
      "model": "llava",
      "language": "en",
      "temperature": 0.2,
      "top_p": 0.95
    },
    "summary": {
      "model": "deepseek-r1",
      "language": "fr",
      "temperature": 0.3
    }
  }
}

💬 Exemple dutilisation (interface ou ligne de commande)

  • Sélectionner un rôle : "interpréter un schéma"
  • Loutil :
    • Affiche le modèle recommandé (llama3.2-vision)
    • Définit la langue du prompt : 🇬🇧
    • Pré-remplit température / top_p
    • Permet lédition ou loverride

Cette stratégie permet dadapter finement les prompts, la langue et les paramètres à chaque rôle métier dans ton flux RAG/Ragflow.