mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-15 21:56:49 +01:00
137 lines
3.9 KiB
Python
137 lines
3.9 KiB
Python
"""
|
|
Factory pour les agents LLM utilisés dans les tests.
|
|
Centralise l'initialisation des agents pour éviter la duplication de code.
|
|
"""
|
|
|
|
import logging
|
|
import time
|
|
from typing import Dict, Any, Optional, List, Tuple, Union
|
|
|
|
# Import des agents disponibles
|
|
from agents.mistral_large.agent_ticket_analyser import AgentTicketAnalyser
|
|
from agents.pixtral_large.agent_image_sorter import AgentImageSorter
|
|
from agents.pixtral_large.agent_image_analyser import AgentImageAnalyser
|
|
from agents.mistral_large.agent_report_generator import AgentReportGenerator
|
|
|
|
# Import de la factory LLM
|
|
from tests.common.llm_factory import create_llm, get_best_text_model, get_best_vision_model
|
|
|
|
logger = logging.getLogger("AgentFactory")
|
|
|
|
def create_ticket_analyser(llm=None):
|
|
"""
|
|
Crée un agent d'analyse de tickets.
|
|
|
|
Args:
|
|
llm: Instance du modèle LLM à utiliser (si None, utilise le meilleur modèle texte disponible)
|
|
|
|
Returns:
|
|
Agent d'analyse de tickets
|
|
"""
|
|
if llm is None:
|
|
llm = get_best_text_model()
|
|
|
|
logger.info("Création de l'agent d'analyse de tickets")
|
|
start_time = time.time()
|
|
|
|
agent = AgentTicketAnalyser(llm)
|
|
|
|
init_time = time.time() - start_time
|
|
logger.info(f"Agent d'analyse de tickets créé en {init_time:.2f} secondes")
|
|
|
|
return agent
|
|
|
|
def create_image_sorter(llm=None):
|
|
"""
|
|
Crée un agent de tri d'images.
|
|
|
|
Args:
|
|
llm: Instance du modèle LLM à utiliser (si None, utilise le meilleur modèle vision disponible)
|
|
|
|
Returns:
|
|
Agent de tri d'images
|
|
"""
|
|
if llm is None:
|
|
llm = get_best_vision_model()
|
|
|
|
logger.info("Création de l'agent de tri d'images")
|
|
start_time = time.time()
|
|
|
|
agent = AgentImageSorter(llm)
|
|
|
|
init_time = time.time() - start_time
|
|
logger.info(f"Agent de tri d'images créé en {init_time:.2f} secondes")
|
|
|
|
return agent
|
|
|
|
def create_image_analyser(llm=None):
|
|
"""
|
|
Crée un agent d'analyse d'images.
|
|
|
|
Args:
|
|
llm: Instance du modèle LLM à utiliser (si None, utilise le meilleur modèle vision disponible)
|
|
|
|
Returns:
|
|
Agent d'analyse d'images
|
|
"""
|
|
if llm is None:
|
|
llm = get_best_vision_model()
|
|
|
|
logger.info("Création de l'agent d'analyse d'images")
|
|
start_time = time.time()
|
|
|
|
agent = AgentImageAnalyser(llm)
|
|
|
|
init_time = time.time() - start_time
|
|
logger.info(f"Agent d'analyse d'images créé en {init_time:.2f} secondes")
|
|
|
|
return agent
|
|
|
|
def create_report_generator(llm=None):
|
|
"""
|
|
Crée un agent de génération de rapports.
|
|
|
|
Args:
|
|
llm: Instance du modèle LLM à utiliser (si None, utilise le meilleur modèle texte disponible)
|
|
|
|
Returns:
|
|
Agent de génération de rapports
|
|
"""
|
|
if llm is None:
|
|
llm = get_best_text_model()
|
|
|
|
logger.info("Création de l'agent de génération de rapports")
|
|
start_time = time.time()
|
|
|
|
agent = AgentReportGenerator(llm)
|
|
|
|
init_time = time.time() - start_time
|
|
logger.info(f"Agent de génération de rapports créé en {init_time:.2f} secondes")
|
|
|
|
return agent
|
|
|
|
def create_all_agents(text_llm=None, vision_llm=None) -> Dict[str, Any]:
|
|
"""
|
|
Crée tous les agents nécessaires.
|
|
|
|
Args:
|
|
text_llm: Modèle LLM pour les agents texte
|
|
vision_llm: Modèle LLM pour les agents vision
|
|
|
|
Returns:
|
|
Dictionnaire contenant tous les agents
|
|
"""
|
|
if text_llm is None:
|
|
text_llm = get_best_text_model()
|
|
|
|
if vision_llm is None:
|
|
vision_llm = get_best_vision_model()
|
|
|
|
agents = {
|
|
"ticket_analyser": create_ticket_analyser(text_llm),
|
|
"image_sorter": create_image_sorter(vision_llm),
|
|
"image_analyser": create_image_analyser(vision_llm),
|
|
"report_generator": create_report_generator(text_llm)
|
|
}
|
|
|
|
return agents |