DEV Community

Cover image for Guide de migration d'API Gemini 3.7 Flash vers 3.8 Flash
Antoine Laurent
Antoine Laurent

Posted on Originally published at apidog.com

Guide de migration d'API Gemini 3.7 Flash vers 3.8 Flash

Migrer de Gemini 3.7 Flash vers Gemini 3.8 Flash : checklist pratique

Google a lancé Gemini 3.8 Flash le 2 septembre 2026, trois semaines après Gemini 3.7 Flash, avec le même prix de lancement et une vitesse comparable. L’ID du modèle est gemini-3.8-flash, sans suffixe de prévisualisation, et sa fiche le décrit comme « basé sur Gemini 3.7 Flash ». Pour une simple invite de chat, remplacer l’ID suffit. Dès que vous utilisez la réflexion, l’échantillonnage ou une boucle d’outils, vérifiez toutefois ces neuf points.

Essayez Apidog dès aujourd’hui

Ce guide s’appuie sur la page What’s new in Gemini 3.8 Flash et le guide développeur Gemini 3. Chaque étape fournit un exemple pour l’API Interactions, désormais privilégiée par Google, et pour le point de terminaison hérité generateContent.

Vous pouvez copier ces fragments dans Apidog et les tester sur le point de terminaison actif avant le déploiement. Pour une présentation du modèle, consultez ce qu’est Gemini 3.8 Flash.

Gemini 3.8 Flash « travaille plus dur » sur les tâches complexes : il effectue des étapes de raisonnement plus courtes, vérifie son travail et appelle les outils de manière itérative. Ces gains peuvent augmenter la consommation de jetons. La migration doit donc couvrir la configuration et le budget par route.

Ce qui change — et ce qui ne change pas

Domaine Gemini 3.7 Flash Gemini 3.8 Flash
ID du modèle gemini-3.7-flash gemini-3.8-flash
Contexte / sortie 1 048 576 / 65 536 Identique
Prix jusqu’au 31 décembre 2026 0,75 $ / 3,75 $ par million de jetons Identique
Prix à partir du 1er janvier 2027 1,50 $ / 7,50 $ pour les deux modèles
Niveaux de réflexion low, medium, high Identiques ; minimal provoque une erreur ; medium par défaut
Jetons par tâche Référence Environ 30 % de jetons de sortie supplémentaires en moyenne
Résultats de fonction call_id + name Les deux sont obligatoires
Support Entièrement supporté, aucune date de dépréciation Modèle actuel

Les prix proviennent de la page de tarification Gemini API, où les lignes Flash 3.6, 3.7 et 3.8 sont identiques.

Étape 0 : décider si la migration est nécessaire

La migration n’est pas obligatoire. Google indique dans son post de lancement que Gemini 3.7 Flash « reste entièrement pris en charge », sans date de fin publiée.

Le prix par jeton est inchangé, mais la consommation peut augmenter. Selon Artificial Analysis, Gemini 3.8 Flash en niveau de réflexion élevé utilise environ 48 000 jetons de sortie par tâche sur leur index, soit 30 % de plus que Gemini 3.7 Flash. Le coût passe ainsi d’environ 0,40 $ à 0,58 $ par tâche, tandis que le score de l’index progresse de 56 à 59. La précision d’utilisation des outils sur τ³-Banking augmente de 12 points, jusqu’à 45 %.

En pratique :

  • restez sur 3.7 Flash si votre charge est courte, sensible à la latence ou déjà validée ;
  • migrez vers 3.8 Flash si vous privilégiez la capacité sur les tâches complexes ;
  • utilisez la comparaison Gemini 3.8 Flash vs Gemini 3.7 Flash pour choisir route par route.

Étape 1 : remplacer l’ID du modèle

API Interactions

{"model": "gemini-3.7-flash", "input": "..."}
{"model": "gemini-3.8-flash", "input": "..."}
Enter fullscreen mode Exit fullscreen mode

API generateContent

POST /v1beta/models/gemini-3.7-flash:generateContent
POST /v1beta/models/gemini-3.8-flash:generateContent
Enter fullscreen mode Exit fullscreen mode

SDK Python

client.interactions.create(
    model="gemini-3.8-flash",
    input=...,
    generation_config={"thinking_level": "medium"},
)

client.models.generate_content(
    model="gemini-3.8-flash",
    contents=...,
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="low")
    ),
)
Enter fullscreen mode Exit fullscreen mode

Si vous n’avez jamais utilisé Interactions, consultez le guide de l’API Gemini 3.8 Flash. L’ancien tutoriel Gemini 3.7 Flash couvre uniquement generateContent.

Checklist de migration en neuf points

1. Remplacer thinking_level: "minimal" par "low"

Gemini 3.8 Flash accepte low, medium et high. La valeur minimal provoque une erreur de validation. Sans configuration explicite, le niveau par défaut est medium.

Avant :

{"generation_config": {"thinking_level": "minimal"}}
Enter fullscreen mode Exit fullscreen mode

Après :

{"generation_config": {"thinking_level": "low"}}
Enter fullscreen mode Exit fullscreen mode

Format hérité :

{"generationConfig": {"thinkingConfig": {"thinkingLevel": "low"}}}
Enter fullscreen mode Exit fullscreen mode

low est le remplacement direct de minimal pour les routes sensibles à la latence. Consultez la documentation Google sur la réflexion et le guide Quel niveau utiliser par itinéraire.

Attention : Gemini 3 Pro utilise high par défaut. Ne copiez pas sa configuration sans la vérifier.

2. Supprimer temperature, top_p et top_k

Google recommande de conserver la température par défaut de 1.0 pour les modèles Gemini 3. Une valeur plus basse peut provoquer des boucles ou dégrader les performances.

Avant :

{"generationConfig": {"temperature": 0.2, "topP": 0.9, "topK": 40}}
Enter fullscreen mode Exit fullscreen mode

Après :

{"generationConfig": {"thinkingConfig": {"thinkingLevel": "medium"}}}
Enter fullscreen mode Exit fullscreen mode

Pour obtenir du JSON reproductible, utilisez plutôt les sorties structurées. Elles imposent un schéma sans modifier l’échantillonnage.

3. Remplacer thinking_budget par thinking_level

thinking_budget était un plafond entier de jetons. thinking_level est une énumération de chaînes ; il n’existe donc pas de conversion arithmétique directe.

Avant :

{"generationConfig": {"thinkingConfig": {"thinkingBudget": 4096}}}
Enter fullscreen mode Exit fullscreen mode

Après :

{"generationConfig": {"thinkingConfig": {"thinkingLevel": "low"}}}
Enter fullscreen mode Exit fullscreen mode

Choisissez le niveau selon l’intention :

  • low pour la latence ;
  • medium pour les routes standard ;
  • high pour les agents et les tâches multi-étapes.

Les jetons de réflexion sont toujours facturés comme des jetons de sortie et apparaissent dans usageMetadata.thoughtsTokenCount. Le contrôle des coûts passe donc d’un plafond strict à un niveau par route et à des assertions dans vos tests.

4. Supprimer candidate_count

Gemini 3 et les versions ultérieures ne prennent pas en charge plusieurs candidats.

Avant :

{"generationConfig": {"candidateCount": 2}}
Enter fullscreen mode Exit fullscreen mode

Après :

{"generationConfig": {}}
Enter fullscreen mode Exit fullscreen mode

Supprimez également tout code qui accède à candidates[1] ou aux indices suivants. Si vous sélectionniez le meilleur candidat, utilisez un niveau de réflexion supérieur afin que le modèle vérifie sa réponse en interne.

5. Ajouter call_id et name aux résultats de fonction

Sur Gemini 3.8 Flash, chaque résultat de fonction doit inclure l’identifiant de l’appel et le nom de la fonction. Un résultat qui ne renvoie que le nom échoue à l’étape suivante.

API Interactions :

{
  "previous_interaction_id": "<id de l'étape function_call>",
  "input": [
    {
      "type": "function_result",
      "name": "get_weather",
      "call_id": "<id de l'étape function_call>",
      "result": [
        {
          "type": "text",
          "text": "{\"temp_c\": 24}"
        }
      ]
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

L’étape function_call fournit id, name et arguments. Recopiez id et name tels quels.

Dans l’API héritée, functionResponse utilise :

  • id, correspondant à l’ID de la partie functionCall ;
  • name ;
  • response.

Référez-vous à la documentation Google sur les appels de fonction et au guide Gemini 3.8 Flash sur les appels de fonction.

6. Renvoyer les signatures de pensée sans modification

Les modèles Gemini 3 ajoutent des signatures de pensée aux parties de réponse. Lorsque vous reconstruisez le tour suivant, renvoyez chaque partie exactement comme reçue, signatures incluses — pas uniquement le texte.

Avec Interactions, vous pouvez laisser Google conserver l’état :

{
  "previous_interaction_id": "<id>"
}
Enter fullscreen mode Exit fullscreen mode

Si vous définissez store: false, vous devez conserver et renvoyer vous-même l’historique, les blocs de pensée et les signatures.

Avec generateContent, l’application gère toujours l’historique. Vérifiez tout code qui reconstruit contents à partir d’une copie tronquée de la dernière réponse.

7. Prévoir davantage de jetons par route

Cette évolution ne produit aucune erreur : elle est donc facile à manquer. Google précise que le modèle peut utiliser davantage de jetons sur les tâches longues et complexes, surtout avec des niveaux d’effort élevés.

Planifiez par route :

  • Routes sensibles à la latence : low. Artificial Analysis mesure environ 0,8 minute et 0,24 $ par tâche, contre 2,5 minutes et 0,58 $ avec high.
  • Routes standard : medium, autour de 0,41 $ par tâche sur le même index.
  • Boucles d’agents : prévoyez davantage de tours d’appel d’outils et limitez la boucle par nombre de tours, pas uniquement par nombre de jetons.

Revoyez aussi la limite de 65 536 jetons de sortie. Une invite qui produisait 40 000 jetons avec Gemini 3.7 Flash peut désormais s’en approcher. La ventilation des prix de Gemini 3.8 Flash permet d’estimer le coût aux trois niveaux.

8. Mesurer media_resolution_high sur les PDF et la vidéo

Gemini 3.8 Flash accepte le texte, les images, la vidéo, l’audio et les PDF. La résolution média modifie le nombre de jetons consommés, avec un coût qui varie selon le type de média.

Ne réutilisez pas automatiquement une configuration haute résolution de Gemini 3.7 Flash. Testez un PDF et une vidéo représentatifs à chaque résolution, puis comparez :

usageMetadata.promptTokenCount
Enter fullscreen mode Exit fullscreen mode

Un réglage économique pour une page PDF peut devenir coûteux sur une vidéo longue.

9. Supprimer les appels de segmentation d’image

La segmentation d’image n’est pas prise en charge par les modèles Gemini 3. Si votre pipeline demandait à Gemini 3.8 Flash de produire des masques, le chemin échouera au lieu de renvoyer une sortie exploitable.

La fiche du modèle Gemini 3.8 Flash indique également que la génération d’images, la génération audio et l’API Live ne sont pas prises en charge.

Construire un plan de régression dans Apidog

Deux changements importants — les paramètres de réflexion et les boucles d’outils — ainsi qu’une consommation de jetons différente nécessitent une comparaison reproductible. Apidog envoie les requêtes, vérifie les réponses et planifie les exécutions ; il n’exécute pas le modèle.

1. Créer l’environnement

Créez un environnement Gemini contenant :

  • GEMINI_API_KEY, stockée comme variable secrète ;
  • MODEL, utilisée dans les requêtes.

Réutilisez {{MODEL}} dans l’URL generateContent et dans le champ model d’Interactions.

2. Enregistrer les invites de référence

Préparez 10 à 20 invites représentant vos routes réelles :

  • échange de chat court ;
  • sortie structurée ;
  • appel de fonction en deux tours avec outil simulé ;
  • entrée PDF ;
  • entrée vidéo.

Chaque invite devient une requête dans un scénario de test.

3. Ajouter les assertions

Ajoutez au moins trois assertions par requête :

  1. le statut HTTP vaut 200 et la réponse respecte un schéma JSON ;
  2. les champs consommés en aval sont présents pour les sorties structurées ;
  3. usageMetadata.thoughtsTokenCount reste sous le plafond défini pour la route, par exemple 8 000 en niveau low ;
  4. usageMetadata.totalTokenCount reste sous le budget de la route.

Pour les appels de fonction, vérifiez également que le call_id renvoyé correspond à l’id de l’étape function_call précédente.

4. Comparer les deux modèles côte à côte

Dupliquez le scénario :

  • scénario A : MODEL=gemini-3.7-flash ;
  • scénario B : MODEL=gemini-3.8-flash.

Les rapports de test affichent les assertions et les corps de réponse dans une même vue. Vous pouvez ainsi mesurer le delta de jetons par invite sans reconstruire les données depuis les journaux.

5. Planifier les tests

Transformez le scénario Gemini 3.8 Flash en exécution planifiée afin de vérifier quotidiennement les plafonds de jetons pendant la période de déploiement. Consultez le guide des tests API planifiés.

Vous pouvez aussi télécharger Apidog et importer les fragments cURL.

Préparer le retour arrière

Gemini 3.7 Flash reste supporté et conserve le même tarif. Gardez donc les IDs dans la configuration, pas dans le code :

{
  "gemini_model": "gemini-3.8-flash",
  "gemini_fallback_model": "gemini-3.7-flash"
}
Enter fullscreen mode Exit fullscreen mode

Appliquez ces trois règles :

  • utilisez la forme de requête migrée sur les deux modèles : pas de minimal, pas de paramètres d’échantillonnage, thinking_level plutôt que thinking_budget, pas de candidate_count, et call_id + name pour les outils ;
  • déployez route par route, en commençant par les routes low et en terminant par les boucles d’agents ;
  • surveillez les jetons et la latence, pas uniquement les erreurs HTTP.

Le déclencheur de retour arrière le plus probable est une hausse du coût ou de la latence plutôt qu’une erreur 4xx. Intégrez donc les plafonds de jetons à votre système d’alerte.

FAQ

Gemini 3.8 Flash coûte-t-il plus cher que Gemini 3.7 Flash ?

Pas par jeton. Les deux modèles coûtent 0,75 $ en entrée et 3,75 $ en sortie par million de jetons jusqu’au 31 décembre 2026, puis 1,50 $ et 7,50 $ à partir du 1er janvier 2027. En revanche, Gemini 3.8 Flash utilise davantage de jetons par tâche, surtout avec un niveau de réflexion élevé.

Que se passe-t-il si je conserve thinking_level: "minimal" ?

La requête échoue avec une erreur de validation. Remplacez minimal par low.

Dois-je migrer vers Interactions ?

Non. generateContent est considéré comme hérité, mais reste entièrement supporté sans date de fin de vie. Interactions ajoute surtout la gestion d’état côté serveur avec previous_interaction_id, ce qui simplifie la conservation des signatures de pensée.

Gemini 3.7 Flash est-il déprécié ?

Non. Google indique qu’il reste entièrement pris en charge et n’a publié aucune date de dépréciation. Un retour arrière contrôlé par configuration reste donc viable.

Puis-je conserver la température utilisée avec Gemini 3.7 Flash ?

Google recommande de laisser la température à 1.0 pour les modèles Gemini 3. Si vous utilisiez une température plus basse, supprimez-la et vérifiez vos évaluations. Pour des sorties déterministes, préférez les sorties structurées.

Déployer progressivement

La modification de code est limitée :

  • un changement d’ID ;
  • quatre suppressions ou renommages de configuration ;
  • deux champs supplémentaires dans les boucles d’outils ;
  • la conservation des signatures de pensée.

L’essentiel du travail consiste à vérifier le budget de jetons par route. Enregistrez vos invites de référence, ajoutez des assertions de schéma et de consommation, exécutez Gemini 3.7 et 3.8 Flash côte à côte jusqu’à stabilisation des résultats, puis activez le nouveau modèle route par route.

Si une route régresse, le drapeau de configuration permet de revenir à Gemini 3.7 Flash sans modifier le code des autres routes.

Top comments (0)