درس 8 — Fiabiliser, maîtriser les coûts, projet final

Limites, coûts et bonnes pratiques

5 دقائق قراءة

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Limites, coûts et bonnes pratiques

Les limites à connaître

Valeurs relevées dans la documentation de l'API Gemini le 2026-10-15 (elles évoluent : vérifiez les pages citées en références).

ÉlémentLimite documentée
Requête inline20 Mo au total selon les guides image, audio et vidéo ; le tableau des méthodes d'envoi annonce jusqu'à 100 Mo
PDF50 Mo ou 1 000 pages, inline comme via l'API Files
API Files2 Go par fichier, 20 Go par projet, conservation 48 h
URL externe15 Mo par fichier
Imagesjusqu'à 3 600 par requête
Audiojusqu'à 9 h 30 par prompt
Vidéoenviron 3 h en résolution par défaut avec un modèle à 1 million de tokens ; jusqu'à 10 vidéos par requête
flowchart TD
  A["Fichier"] --> B{"Plus de 20 Mo ?"}
  B -- "non" --> C["Inline"]
  B -- "oui" --> D{"Plus de 2 Go ?"}
  D -- "non" --> E["API Files"]
  D -- "oui" --> F["Découper (pages, extraits) ou compresser"]

Calculer un coût

Le prix se calcule en tokens, séparément pour l'entrée et la sortie :

couˆt=tokens d’entreˊe106×Pentreˊe+tokens de sortie106×Psortie\text{coût} = \frac{\text{tokens d'entrée}}{10^6} \times P_{\text{entrée}} + \frac{\text{tokens de sortie}}{10^6} \times P_{\text{sortie}}

où PP est le prix par million de tokens affiché sur la page « Tarifs » pour votre modèle. Certains modèles ont un prix d'entrée différent pour l'audio : lisez bien la ligne correspondante.

Nos mesures réelles (module 1) donnent la base du calcul :

TraitementEntréeSortiePour 1 000 documents
Justificatif (ticket)1 123133environ 1,1 M d'entrée, 0,13 M de sortie
Résumé de PDF (3 pages)1 622542environ 1,6 M d'entrée, 0,54 M de sortie
Mémo vocal (11 s)295117environ 0,3 M d'entrée, 0,12 M de sortie

Que faire pour réduire le coût d'un traitement de 10 000 photos de tickets ?

Bonnes pratiques

PratiquePourquoi
Consigne après le média, précise et en françaisréponses plus pertinentes
Sortie structurée (JSON + schéma)exploitable par le code, validable
temperature=0 pour l'extractionréponses stables
Porte de sortie (lisible, null, « INCONNU »)le modèle n'invente pas pour combler
Contrôles en Pythonles calculs et formats sont vérifiés à coup sûr
Réessais avec attente sur 429/503les quotas et surcharges sont normaux
files.delete() après usagepas de documents qui traînent 48 h
Données fictives pour tester, minimisation en productionconfidentialité
Humain dans la boucle pour toute décisionresponsabilité

Les réessais du lab :

files/multimodal.py (extrait)
for i in range(essais):
    try:
        return client.models.generate_content(model=MODEL, contents=contents, config=config)
    except errors.APIError as e:
        if e.code not in (429, 500, 503) or i == essais - 1:
            raise
        time.sleep(5 * 2 ** i)  # 5 s, 10 s, 20 s

Le code 429 signifie « trop de requêtes » (quota dépassé), 503 « service momentanément indisponible ». Attendre de plus en plus longtemps entre deux essais s'appelle un backoff exponentiel. Une erreur 400 (requête invalide) ne se réessaie pas : elle échouerait pareil.

Une requête renvoie 400 INVALID_ARGUMENT. Que fait notre fonction generer() ?

Exercice : estimer un budget

Votre service comptable reçoit environ 800 justificatifs par mois. À partir du tableau des mesures et en notant PeP_e et PsP_s les prix par million de tokens d'entrée et de sortie, écrivez la formule du coût mensuel. Puis écrivez le code qui mesure les tokens d'entrée de ticket.png sans générer de réponse.

Voir la solution

Coût mensuel ≈ 800×(1 123106Pe+133106Ps)≈0,9 Pe+0,11 Ps800 \times \left(\frac{1\,123}{10^6} P_e + \frac{133}{10^6} P_s\right) \approx 0{,}9\,P_e + 0{,}11\,P_s (en unités monétaires de la grille tarifaire).

from google import genai
from google.genai import types
from pathlib import Path

client = genai.Client()
img = types.Part.from_bytes(data=Path("ticket.png").read_bytes(), mime_type="image/png")
print(client.models.count_tokens(model="gemini-3.5-flash", contents=[img]).total_tokens)

Ajoutez une marge (réessais, photos plus grandes) et remesurez sur vos vraies photos.

Résultat obtenu

count_tokens sur l'image seule, exécution réelle du 2026-10-15 :

sortie
count_tokens image seule 1065

Le reste des 1 123 tokens mesurés à l'extraction correspond à la consigne et au schéma.

  • Je connais les limites de taille de chaque modalité et où les vérifier
  • Je sais calculer un coût à partir des tokens et de la grille tarifaire
  • Je sais estimer les tokens avant de payer avec count_tokens
  • Je réessaie seulement les erreurs passagères, avec un maximum
التالي