from smolagents import Tool from huggingface_hub import InferenceClient from PIL import Image import requests from io import BytesIO class ImageCaptioningTool(Tool): description = "Cet outil génère une légende descriptive pour une image donnée." name = "image_captioner" inputs = {"image_url": {"type": "string", "description": "URL de l'image à décrire."}} output_type = "string" model_id = "Salesforce/blip-image-captioning-large" client = InferenceClient(model_id) def forward(self, image_url): response = requests.get(image_url) if response.status_code == 200: image = Image.open(BytesIO(response.content)) return self.client.image_to_text(image) else: return f"Erreur lors du téléchargement de l'image : {response.status_code}"