# Classes Python pour l'intégration de LLM

Ce package fournit des classes Python permettant d'intégrer facilement différents modèles de langage (LLM) dans vos applications.

## Classes disponibles

- `LLM` : Classe de base abstraite pour tous les modèles de langage
- `Mistral` : Intégration avec l'API Mistral
- `Ollama` : Intégration avec Ollama (modèles locaux)
- `DeepSeek` : Intégration avec l'API DeepSeek
- `Perplexity` : Intégration avec l'API Perplexity
- `DeepL` : Intégration avec l'API DeepL pour la traduction
- `RAG` : Système de Retrieval Augmented Generation
- `LlamaVision` : Intégration avec Llama Vision 3.2 pour l'analyse d'images
- `Agent`, `AgentAnalyseImage`, `AgentAnalyseJSON`, `AgentQuestionReponse` : Agents spécialisés pour l'analyse d'images et de données

## Installation

```bash
pip install -r requirements.txt
```

## Exemples d'utilisation

### Utilisation de Mistral

```python
from llm_classes import Mistral

# Création d'une instance
mistral = Mistral(api_key="votre_clé_api")

# Configuration
mistral.temperature = 0.7
mistral.max_tokens = 500

# Interrogation
reponse = mistral.Interroger("Explique-moi la théorie de la relativité")
print(reponse)
```

### Utilisation d'Ollama

```python
from llm_classes import Ollama

# Création d'une instance
ollama = Ollama()
ollama.Modele = "llama2"  # ou tout autre modèle disponible dans Ollama

# Interrogation
reponse = ollama.Interroger("Comment fonctionne une machine à vapeur?")
print(reponse)
```

### Utilisation de DeepL

```python
from llm_classes import DeepL

# Création d'une instance
deepl = DeepL(api_key="votre_clé_api")

# Traduction
texte_traduit = deepl.traduire("Hello world", "FR")
print(texte_traduit)  # Bonjour le monde
```

### Utilisation de LlamaVision pour l'analyse d'images

```python
from llm_classes import LlamaVision

# Création d'une instance
vision = LlamaVision()

# Chargement d'une image
vision.set_image("chemin/vers/image.jpg")

# Analyse de l'image
reponse = vision.Interroger("Décris en détail ce que tu vois dans cette image")
print(reponse)

# Avec données JSON complémentaires
vision.set_json_data({"contexte": "Photo prise en vacances"})
reponse = vision.Interroger("En tenant compte du contexte, décris cette image")
print(reponse)

# Sauvegarde des résultats
vision.sauvegarder_resultats("resultats.json")
```

### Utilisation des agents pour un workflow complet

```python
from llm_classes import AgentAnalyseImage, AgentAnalyseJSON, AgentQuestionReponse

# Analyse d'une image
agent_image = AgentAnalyseImage("Agent Vision")
resultats_image = agent_image.executer("chemin/vers/image.jpg")

# Analyse des données extraites
agent_json = AgentAnalyseJSON("Agent JSON")
resultats_analyse = agent_json.executer(resultats_image, "Analyse les éléments clés de cette image")

# Questions/Réponses sur les données
agent_qr = AgentQuestionReponse("Agent QR")
questions = [
    "Que représente principalement cette image?",
    "Y a-t-il des personnes ou des animaux visibles?"
]
resultats_qr = agent_qr.executer(resultats_analyse, questions)

# Évaluation des réponses
evaluation = agent_qr.evaluer_reponses(resultats_qr["resultats_qr"])
print(f"Note moyenne des réponses: {evaluation['meta']['note_moyenne']}/10")
```

## Scripts d'exemple

Le package inclut deux scripts d'exemple :

- `example.py` : Démontre l'utilisation des classes Mistral, Ollama, DeepSeek, Perplexity, DeepL et RAG
- `example_vision.py` : Démontre l'utilisation de LlamaVision et des agents d'analyse d'images

### Utilisation de example_vision.py

```bash
# Analyse directe d'une image
python example_vision.py --image chemin/vers/image.jpg --mode direct

# Workflow complet avec analyse et génération de questions/réponses
python example_vision.py --image chemin/vers/image.jpg --json donnees_complementaires.json
```

## Notes importantes

1. Pour utiliser ces classes, vous devez disposer des clés API appropriées pour les services externes (Mistral, DeepSeek, Perplexity, DeepL).
2. Pour LlamaVision et Ollama, assurez-vous que les services correspondants sont accessibles (généralement sur localhost).
3. Certaines fonctionnalités nécessitent des dépendances supplémentaires comme Pillow pour le traitement d'images.
4. Les exemples supposent que les services sont correctement configurés et accessibles. 