Vision

Les trois modèles Mina acceptent des images en entrée. Envoyez une capture d'écran, une photo de document, un graphique : le modèle la décrit, en extrait le texte ou répond à vos questions dessus.

Envoyer une image#

Le format est le format standard : un tableau de blocs mêlant texte et image_url.

import base64
from openai import OpenAI

client = OpenAI(api_key="zir_ai_...", base_url="https://api.cloudzir.com/v1")

with open("facture.png", "rb") as fichier:
    image = base64.b64encode(fichier.read()).decode()

reponse = client.chat.completions.create(
    model="mina-low",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Quel est le montant total de cette facture ?"},
            {"type": "image_url",
             "image_url": {"url": f"data:image/png;base64,{image}"}},
        ],
    }],
    max_tokens=300,
)

print(reponse.choices[0].message.content)

Deux façons de fournir l'image#

FormeExempleRemarque
Data URI base64 (recommandé) data:image/png;base64,iVBORw0… L'image part avec la requête : rien à héberger, rien à exposer publiquement.
URL http(s) https://example.invalid/photo.jpg L'image doit être accessible publiquement (pas d'authentification, pas de réseau privé).

Limites#

ContrainteValeur
Formats acceptésPNG, JPEG, WebP, GIF
Taille par image8 Mo une fois décodée
Images par requête8
ModèlesLes trois : mina-flash, mina-low, mina-full

Une image mal encodée, dans un format non listé ou trop lourde renvoie un 400 dont le message dit précisément ce qui cloche.

Ce que ça coûte#

Une image est convertie en jetons d'entrée, facturés au tarif normal du modèle. La quantité dépend de la taille de l'image : comptez de l'ordre de 200 à 1 700 jetons par image. Le décompte exact est toujours dans le champ usage de la réponse et dans Usage.

Réduire la facture

Redimensionnez avant l'envoi : une capture d'écran en 4K coûte cher et n'apporte rien de plus qu'une version 1024 px de large pour lire du texte. Recadrez sur la zone utile quand vous le pouvez.

Format Anthropic#

Sur /anthropic, utilisez les blocs image de la spécification Anthropic : c'est ce qu'envoient les SDK et les agents compatibles.

import anthropic, base64

client = anthropic.Anthropic(
    api_key="zir_ai_...",
    base_url="https://api.cloudzir.com/anthropic",
)

with open("capture.png", "rb") as fichier:
    image = base64.b64encode(fichier.read()).decode()

message = client.messages.create(
    model="mina-low",
    max_tokens=500,
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Décris cette capture d'écran."},
            {"type": "image", "source": {
                "type": "base64", "media_type": "image/png", "data": image,
            }},
        ],
    }],
)

print(message.content[0].text)

La forme {"type": "url", "url": "https://…"} est également acceptée.

Cas d'usage courants#

  • Lecture de documents : factures, bons de commande, formulaires manuscrits : demandez une sortie JSON (guide) pour récupérer des champs exploitables directement.
  • Captures d'écran : diagnostiquer une erreur, décrire une interface, aider un utilisateur qui ne sait pas décrire son problème.
  • Contrôle qualité : comparer une photo produit à une description attendue.
  • Accessibilité : générer des textes alternatifs pour un catalogue d'images.

Ce qui n'est pas encore supporté#

  • Les documents PDF envoyés tels quels (blocs document côté Anthropic). Convertissez les pages en images, ou extrayez le texte : voir API Fichiers.
  • La génération d'images. L'API produit du texte à partir d'images, pas l'inverse.
  • La vidéo et l'audio.

Paramètres

Réponse API