2025-03-27 17:59:10 +01:00

77 lines
2.4 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Classe de base pour tous les agents LLM
"""
from typing import List, Dict, Any, Optional
class LLMBaseAgent:
"""
Classe de base pour tous les agents LLM. Fournit des méthodes communes
pour interagir avec différents modèles de langage.
"""
def __init__(self, model_name: str, endpoint: str = "http://217.182.105.173:11434", **config):
"""
Initialise un agent LLM
Args:
model_name (str): Nom du modèle à utiliser
endpoint (str): URL de l'API Ollama ou autre endpoint
**config: Paramètres de configuration supplémentaires
- temperature (float): Température pour la génération (défaut: 0.2)
- top_p (float): Valeur top_p (défaut: 0.95)
- top_k (int): Valeur top_k (défaut: 40)
- max_tokens (int): Nombre maximal de tokens à générer (défaut: 1024)
- language (str): Langue pour les prompts ("fr" ou "en")
"""
self.model_name = model_name
self.endpoint = endpoint
# Paramètres par défaut
self.config = {
"temperature": 0.2,
"top_p": 0.95,
"top_k": 40,
"max_tokens": 1024,
"language": "fr"
}
# Mise à jour avec les paramètres fournis
self.config.update(config)
def generate(self, prompt: str, images: Optional[List[bytes]] = None) -> str:
"""
Génère une réponse à partir d'un prompt et d'images optionnelles
Args:
prompt (str): Le texte du prompt
images (List[bytes], optional): Liste d'images en bytes
Returns:
str: La réponse générée par le modèle
"""
raise NotImplementedError("Cette méthode doit être implémentée par les classes dérivées")
def get_params(self) -> Dict[str, Any]:
"""
Renvoie les paramètres actuels de l'agent
Returns:
Dict[str, Any]: Les paramètres de configuration
"""
return {
"modèle": self.model_name,
**self.config
}
def update_config(self, **kwargs):
"""
Met à jour la configuration de l'agent
Args:
**kwargs: Paramètres à mettre à jour
"""
self.config.update(kwargs)