mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-15 19:06:50 +01:00
115 lines
4.4 KiB
Python
115 lines
4.4 KiB
Python
from typing import Dict, Any, Optional
|
|
|
|
class AgentConfig:
|
|
"""
|
|
Classe pour configurer les paramètres LLM par rôle d'agent.
|
|
Cette classe permet d'harmoniser les paramètres entre différents LLM.
|
|
"""
|
|
|
|
# Configurations par défaut pour chaque rôle d'agent
|
|
DEFAULT_CONFIGS = {
|
|
"json_analyser": {
|
|
"temperature": 0.2, # Besoin d'analyse précise
|
|
"top_p": 0.9,
|
|
"max_tokens": 1500,
|
|
"system_prompt": "Tu es un assistant spécialisé dans l'analyse de tickets JSON. Extrais les informations pertinentes et structure ta réponse de manière claire.",
|
|
},
|
|
"image_sorter": {
|
|
"temperature": 0.3, # Décision de classification binaire
|
|
"top_p": 0.9,
|
|
"max_tokens": 200,
|
|
"system_prompt": "Tu es un assistant spécialisé dans le tri d'images. Tu dois décider si une image est pertinente ou non pour BRG_Lab.",
|
|
},
|
|
"image_analyser": {
|
|
"temperature": 0.5, # Analyse créative mais factuelle
|
|
"top_p": 0.95,
|
|
"max_tokens": 1000,
|
|
"system_prompt": "Tu es un assistant spécialisé dans l'analyse d'images. Décris ce que tu vois en tenant compte du contexte fourni.",
|
|
},
|
|
"report_generator": {
|
|
"temperature": 0.7, # Génération de rapport plus créative
|
|
"top_p": 1.0,
|
|
"max_tokens": 2000,
|
|
"system_prompt": "Tu es un assistant spécialisé dans la génération de rapports. Synthétise les informations fournies de manière claire et professionnelle.",
|
|
}
|
|
}
|
|
|
|
# Paramètres spécifiques à chaque type de modèle pour harmoniser les performances
|
|
MODEL_ADJUSTMENTS = {
|
|
"mistral": {}, # Pas d'ajustement nécessaire, modèle de référence
|
|
"pixtral": {
|
|
"temperature": -0.1, # Légèrement plus conservateur
|
|
},
|
|
"ollama": {
|
|
"temperature": +0.1, # Légèrement plus créatif
|
|
"num_ctx": 2048,
|
|
"repeat_penalty": 1.1,
|
|
}
|
|
}
|
|
|
|
def __init__(self, role: str, model_type: str = "mistral"):
|
|
"""
|
|
Initialise la configuration avec les paramètres appropriés pour le rôle et le modèle.
|
|
|
|
Args:
|
|
role: Rôle de l'agent ('json_analyser', 'image_sorter', etc.)
|
|
model_type: Type de modèle ('mistral', 'pixtral', 'ollama', etc.)
|
|
"""
|
|
self.role = role
|
|
self.model_type = model_type.lower()
|
|
|
|
# Récupérer la configuration de base pour ce rôle
|
|
if role in self.DEFAULT_CONFIGS:
|
|
self.config = self.DEFAULT_CONFIGS[role].copy()
|
|
else:
|
|
# Configuration par défaut
|
|
self.config = {
|
|
"temperature": 0.5,
|
|
"top_p": 0.9,
|
|
"max_tokens": 1000,
|
|
"system_prompt": ""
|
|
}
|
|
|
|
# Appliquer les ajustements spécifiques au modèle
|
|
if model_type.lower() in self.MODEL_ADJUSTMENTS:
|
|
adjustments = self.MODEL_ADJUSTMENTS[model_type.lower()]
|
|
for key, adjustment in adjustments.items():
|
|
if key in self.config:
|
|
if isinstance(adjustment, (int, float)) and isinstance(self.config[key], (int, float)):
|
|
self.config[key] += adjustment # Ajustement relatif
|
|
else:
|
|
self.config[key] = adjustment # Remplacement direct
|
|
else:
|
|
self.config[key] = adjustment # Ajout d'un nouveau paramètre
|
|
|
|
def get_params(self) -> Dict[str, Any]:
|
|
"""
|
|
Retourne tous les paramètres sauf le prompt système.
|
|
"""
|
|
params = self.config.copy()
|
|
if "system_prompt" in params:
|
|
params.pop("system_prompt")
|
|
return params
|
|
|
|
def get_system_prompt(self) -> str:
|
|
"""
|
|
Retourne le prompt système.
|
|
"""
|
|
return self.config.get("system_prompt", "")
|
|
|
|
def to_dict(self) -> Dict[str, Any]:
|
|
"""
|
|
Retourne toute la configuration sous forme de dictionnaire.
|
|
"""
|
|
return {
|
|
"role": self.role,
|
|
"model_type": self.model_type,
|
|
"config": self.config
|
|
}
|
|
|
|
def update(self, **kwargs) -> None:
|
|
"""
|
|
Met à jour la configuration avec les nouveaux paramètres.
|
|
"""
|
|
self.config.update(kwargs)
|