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

200 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ⚙️ 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`
```python
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é
```md
## 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`
```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.