llm_ticket3/agents/utils/agent_info_collector.py
2025-04-14 15:34:51 +02:00

81 lines
3.2 KiB
Python

"""
Module pour collecter les informations sur les agents et leurs prompts.
Ce module permet d'extraire ces fonctionnalités de l'agent_report_generator
pour améliorer sa performance et sa maintenabilité.
"""
import logging
from typing import Dict, Any, Optional
import importlib
import os
logger = logging.getLogger("agent_info_collector")
def collecter_info_agents(rapport_data: Dict, agent_info: Dict) -> Dict:
"""
Collecte des informations sur les agents utilisés dans l'analyse
"""
agents_info = {}
# Informations sur l'agent JSON Analyser (Ticket Analyser)
ticket_analyses = {}
for key in ["ticket_analyse", "analyse_json", "analyse_ticket"]:
if key in rapport_data and isinstance(rapport_data[key], dict) and "metadata" in rapport_data[key]:
ticket_analyses = rapport_data[key]["metadata"]
break
if ticket_analyses:
agents_info["ticket_analyser"] = ticket_analyses
# Informations sur les agents d'image
if "analyse_images" in rapport_data and rapport_data["analyse_images"]:
# Image Sorter
sorter_info = {}
analyser_info = {}
for img_path, img_data in rapport_data["analyse_images"].items():
# Collecter info du sorter
if "sorting" in img_data and isinstance(img_data["sorting"], dict) and "metadata" in img_data["sorting"]:
sorter_info = img_data["sorting"]["metadata"]
# Collecter info de l'analyser
if "analysis" in img_data and isinstance(img_data["analysis"], dict) and "metadata" in img_data["analysis"]:
analyser_info = img_data["analysis"]["metadata"]
# Une fois qu'on a trouvé les deux, on peut sortir
if sorter_info and analyser_info:
break
if sorter_info:
agents_info["image_sorter"] = sorter_info
if analyser_info:
agents_info["image_analyser"] = analyser_info
# Ajouter les informations de l'agent report generator
agents_info["report_generator"] = {
"model": agent_info.get("model", "inconnu"),
"temperature": agent_info.get("temperature", 0),
"top_p": agent_info.get("top_p", 0),
"max_tokens": agent_info.get("max_tokens", 0),
"prompt_version": agent_info.get("prompt_version", "inconnue")
}
return agents_info
def collecter_prompts_agents(system_prompt: str) -> Dict[str, str]:
"""
Collecte les prompts système de tous les agents impliqués dans l'analyse.
Version simplifiée qui n'essaie pas d'importer des agents dynamiquement.
"""
# Retourner simplement un dictionnaire avec le prompt de cet agent
# et des valeurs statiques pour les autres prompts
prompts = {
"report_generator": system_prompt,
"ticket_analyser": "Prompt de l'agent d'analyse de ticket (non récupéré dynamiquement)",
"image_sorter": "Prompt de l'agent de tri d'images (non récupéré dynamiquement)",
"image_analyser": "Prompt de l'agent d'analyse d'images (non récupéré dynamiquement)"
}
logger.info("Collecte des prompts simplifiée utilisée")
return prompts