mirror of
https://github.com/Ladebeze66/llm_ticket3.git
synced 2025-12-16 03:47:49 +01:00
91 lines
3.1 KiB
Python
91 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Agent pour analyser en détail les images pertinentes dans un contexte de support technique.
|
|
"""
|
|
|
|
import os
|
|
from typing import Dict, Any, Optional
|
|
|
|
from .agent_base import Agent
|
|
from llm import Pixtral
|
|
|
|
class AgentAnalyseImage(Agent):
|
|
"""
|
|
Agent qui analyse en détail le contenu d'une image technique.
|
|
"""
|
|
def __init__(self, api_key: Optional[str] = None):
|
|
"""
|
|
Initialise l'agent d'analyse d'images.
|
|
|
|
Args:
|
|
api_key: Clé API pour le LLM
|
|
"""
|
|
super().__init__("AgentAnalyseImage")
|
|
self.llm = Pixtral(api_key=api_key)
|
|
self.llm.system_prompt = """
|
|
Vous êtes un expert en analyse d'images techniques.
|
|
Votre rôle est d'examiner des captures d'écran ou des photos liées à des problèmes techniques et de:
|
|
1. Décrire précisément le contenu de l'image
|
|
2. Identifier les éléments techniques visibles (erreurs, interfaces, configurations)
|
|
3. Extraire tout texte visible (messages d'erreur, logs, indicateurs)
|
|
|
|
Soyez précis et factuel dans votre analyse.
|
|
"""
|
|
|
|
def executer(self, image_path: str, contexte: Optional[str] = None) -> Dict[str, Any]:
|
|
"""
|
|
Analyse en détail une image technique.
|
|
|
|
Args:
|
|
image_path: Chemin vers l'image à analyser
|
|
contexte: Contexte optionnel du ticket pour une analyse plus pertinente
|
|
|
|
Returns:
|
|
Dictionnaire contenant l'analyse de l'image
|
|
"""
|
|
# Vérifier que l'image existe
|
|
if not os.path.exists(image_path):
|
|
erreur = f"L'image {image_path} n'existe pas"
|
|
self.ajouter_historique("analyse_image_erreur", image_path, erreur)
|
|
return {"error": erreur}
|
|
|
|
# Construire le prompt pour l'analyse
|
|
if contexte:
|
|
prompt = f"""
|
|
Analysez cette image dans le contexte suivant:
|
|
|
|
{contexte}
|
|
|
|
Décrivez précisément:
|
|
1. Ce que vous voyez dans l'image
|
|
2. Les éléments techniques visibles
|
|
3. Tout texte visible (messages d'erreur, logs, etc.)
|
|
4. Les indices sur le problème potentiel
|
|
"""
|
|
else:
|
|
prompt = """
|
|
Analysez cette image en détail et décrivez ce que vous voyez.
|
|
Identifiez tout problème technique visible, messages d'erreur, et éléments importants.
|
|
"""
|
|
|
|
# Enregistrer l'action dans l'historique
|
|
self.ajouter_historique("analyse_image", image_path, "Analyse en cours...")
|
|
|
|
# Appel au LLM
|
|
try:
|
|
resultat = self.llm.analyze_image(image_path, prompt)
|
|
|
|
# Vérifier si l'appel a réussi
|
|
if "error" in resultat:
|
|
self.ajouter_historique("analyse_image_erreur", image_path, resultat["error"])
|
|
return resultat
|
|
|
|
self.ajouter_historique("analyse_image_resultat", "Analyse terminée",
|
|
resultat.get("content", "")[:200])
|
|
return resultat
|
|
except Exception as e:
|
|
erreur = f"Erreur lors de l'analyse: {str(e)}"
|
|
self.ajouter_historique("analyse_image_erreur", image_path, erreur)
|
|
return {"error": erreur} |