Aller au contenu principal

Prompts multimodaux avec images

Capacites vision

La famille Claude 3 et au-dela possede des capacites de vision qui permettent de comprendre et d’analyser des images. Vous pouvez fournir a la fois du texte et des images dans vos prompts.

Format des messages avec images

Le content d’un message peut etre une liste de blocs :

messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Raconte-moi une histoire"},
        ]
    }
]

Pour inclure une image, ajoutez un bloc de type image :

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/jpeg",
                    "data": "<donnees_base64>"
                }
            }
        ]
    }
]

Les formats supportes sont : image/jpeg, image/png, image/gif et image/webp.

Encoder une image locale

import base64

with open("mon_image.jpg", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

Image seule vs image + texte

Vous pouvez envoyer une image sans texte — Claude la decrira automatiquement. Pour des resultats plus precis, combinez image et texte :

messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/jpeg",
                    "data": image_data
                }
            },
            {"type": "text", "text": "Decris cette image en detail."}
        ]
    }
]

Plusieurs images

Ajoutez simplement plusieurs blocs image dans le content. Conseil pratique : avec certains modeles, labellisez chaque image avec un bloc texte (“Image 1”, “Image 2”, etc.) pour de meilleurs resultats.

Images depuis une URL

Pour des images distantes, recuperez-les avec une bibliotheque HTTP puis encodez-les :

import httpx
import base64

url = "https://example.com/image.jpg"
image_bytes = httpx.get(url).content
image_data = base64.standard_b64encode(image_bytes).decode("utf-8")

Fonction helper

Pour simplifier le travail repetitif, creez une fonction utilitaire :

import base64
import mimetypes

def image_block_from_path(path):
    mime_type = mimetypes.guess_type(path)[0]
    with open(path, "rb") as f:
        data = base64.standard_b64encode(f.read()).decode("utf-8")
    return {
        "type": "image",
        "source": {
            "type": "base64",
            "media_type": mime_type,
            "data": data
        }
    }

Bonnes pratiques pour la vision

Soyez specifique

Comme pour les prompts texte, la precision ameliore les resultats. Au lieu de simplement demander “combien de personnes ?”, guidez Claude :

  • Demandez-lui de reflechir etape par etape
  • Precisez qu’il est un expert en comptage
  • Mentionnez les cas limites (personnes partiellement visibles)

Utilisez des exemples

Le few-shot prompting fonctionne aussi avec les images. Fournissez un exemple d’image + reponse attendue dans l’historique de conversation, puis envoyez la nouvelle image a analyser.

Exercice

Utilisez Claude pour transcrire et resumer un document en images :

  1. Envoyez chaque page a Claude pour transcription
  2. Combinez les transcriptions
  3. Demandez a Claude un resume non technique du document complet