# LLM Lab - Documentation

## Vue d'ensemble

LLM Lab est une plateforme modulaire conçue pour l'expérimentation avec différents modèles de langage (LLM) et la création d'agents spécialisés. Cette architecture permet l'intégration facile de nouveaux modèles et la création rapide d'agents pour des tâches spécifiques.

## Architecture du projet

```
llm_lab-test/
│
├── agents/                # Agents spécialisés
│   ├── base_agent.py      # Classe abstraite de base pour tous les agents
│   ├── analyse_image.py   # Agent pour l'analyse d'images
│   └── analyse_json.py    # Agent pour l'analyse de données JSON
│
├── core/                  # Composants principaux
│   ├── factory.py         # Factory pour l'instanciation des LLMs
│   ├── llama_vision90b.py # Implémentation de LlamaVision pour l'analyse d'images
│   └── mistral_api.py     # Implémentation de l'API Mistral
│
├── examples/              # Exemples d'utilisation
│   ├── analyse_image_workflow.py   # Workflow d'analyse d'images
│   ├── test_mistralapi.py          # Test de l'API Mistral
│   └── agent_question_reponse.py   # Agent de questions-réponses
│
├── config/                # Fichiers de configuration
├── prompts/               # Templates de prompts
├── outputs/               # Répertoire pour les sorties générées
├── logs/                  # Journaux d'exécution
└── tests/                 # Tests unitaires
```

## Modèles LLM disponibles

Le projet intègre plusieurs modèles de langage accessibles via la factory `LLMFactory` :

1. **LlamaVision90B** : Modèle spécialisé dans l'analyse d'images avec capacités de vision.
2. **MistralAPI** : Interface pour l'API Mistral, permettant d'accéder aux modèles comme mistral-large-latest.

## Agents disponibles

Les agents sont des composants spécialisés qui encapsulent des fonctionnalités spécifiques :

### Agent de base (`base_agent.py`)

Classe abstraite définissant l'interface commune à tous les agents, avec :
- Gestion d'un historique des actions
- Méthode abstraite `executer()` à implémenter par les sous-classes

### Agent d'analyse d'images (`analyse_image.py`)

Spécialisé dans l'analyse d'images via LlamaVision :
- Analyse d'images individuelles
- Intégration avec des données JSON contextuelles
- Extraction d'informations visuelles (texte, objets, scènes)

### Agent d'analyse JSON (`analyse_json.py`)

Analyse et traite des données JSON :
- Extraction de structure
- Fusion de données JSON
- Analyse approfondie du contenu

### Agent de questions-réponses (`agent_question_reponse.py`)

Agent conversationnel utilisant MistralAPI :
- Réponses à des questions avec ou sans contexte
- Génération de questions pertinentes
- Évaluation de la qualité des réponses

## Exemples d'utilisation

### Workflow d'analyse d'images

```python
# Initialisation d'un agent d'analyse d'image
agent = AgentAnalyseImage("AgentVision")

# Analyse d'une image
resultats = agent.executer("chemin/vers/image.jpg", 
                           question="Décris cette image en détail")
```

### Utilisation de MistralAPI

```python
# Via la factory
llm = LLMFactory().create("mistralapi")

# Configuration des paramètres
llm.parametres_generation["temperature"] = 0.7

# Génération de texte
reponse = llm.generate("Explique-moi comment fonctionne un LLM")
```

### Agent de questions-réponses

```python
# Initialisation
agent = AgentQuestionReponse("AgentQR")

# Poser une question
resultat = agent.executer("Qu'est-ce que l'apprentissage par renforcement?")
print(resultat["reponse"])

# Générer des questions sur un sujet
questions = agent.generer_questions(contexte_json, nombre=3)
```

## Configuration requise

- Python 3.8+
- Clé API Mistral (pour MistralAPI)
- Dépendances listées dans `requirements.txt`

## Pour commencer

1. Cloner le dépôt
2. Installer les dépendances : `pip install -r requirements.txt`
3. Configurer les variables d'environnement nécessaires (ex: `MISTRAL_API_KEY`)
4. Explorer les exemples dans le dossier `examples/` 