Gemini 4 Argon est le modèle de pointe de Google. Il excelle dans les tâches complexes et concrètes dans différents domaines, y compris le codage, la finance, le droit, la cybersécurité et les sciences. Il s'agit du premier modèle de la gamme Gemini 4.
Ce document présente les nouveautés de 4 Argon, les conventions d'API qu'il applique, comment migrer vers ce modèle et un guide de démarrage rapide. Pour obtenir une présentation de la gamme Gemini 4, consultez Premiers pas avec Gemini 4.
Nouveautés de Gemini 4 Argon
- Fenêtre de contexte : la fenêtre de contexte de 1 048 576 jetons est partagée entre les jetons d'entrée, de réflexion et de sortie.
- Longues décodes jusqu'à 1 048 576 jetons : étend la génération au-delà de la
limite de sortie d'une seule requête (65 536 jetons pour les requêtes de streaming ou 32 768
jetons pour les requêtes HTTP directes non diffusées en streaming) jusqu'à 1 048 576 jetons sur
GenerateContent. Le SDK Google Gen AI gère automatiquementcontinuation_tokendans les requêtes, mais vous pouvez également gérercontinuation_tokendans votre propre boucle de continuation. - Niveaux de réflexion :
LOW,MEDIUM(par défaut surgemini-4-argon) etHIGH(par défaut surgemini-4-argon-cyber-permissive). - Mise en cache implicite avec mise en cache durable : la mise en cache implicite s'applique automatiquement aux préfixes de prompt partagés de 6 144 jetons ou plus, avec la mise en cache durable activée par défaut. La mise en cache explicite du contexte n'est pas prise en charge.
- Compréhension agentique des vidéos : disponibilité générale et désactivée par défaut.
Guide de démarrage rapide
Avant de commencer, vous devez vous authentifier auprès d'Agent Platform à l'aide des identifiants par défaut de l'application (ADC) ou d'une clé API. Pour en savoir plus, consultez Premiers pas avec Gemini Enterprise Agent Platform.
Dans les blocs de code suivants, remplacez PROJECT_ID par l'ID de votre projet.
Installation
Passez à la dernière version du SDK Google Gen AI (google-genai >= 2.30.1 pour Python,
@google/genai >= 2.29.1 pour JavaScript, >= 1.74.0 pour Go, >= 1.77.0 pour
Java, >= 1.26.0 pour .NET ou >= 1.6.0 pour Kotlin) :
pip install --upgrade "google-genai>=2.30.1"
Requête de base
Python (GenerateContent)
from google import genai
client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")
response = client.models.generate_content(
model="gemini-4-argon",
contents="How does AI work?",
)
print(response.text)
Python (API Interactions)
from google import genai
client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")
turn1 = client.interactions.create(
model="gemini-4-argon",
input="Design a lock-free ring buffer in Rust for multi-producer, single-consumer telemetry ingestion.",
store=True,
)
print(turn1.output_text)
turn2 = client.interactions.create(
model="gemini-4-argon",
input="Add a bounded backpressure policy and unit tests for concurrent writers.",
previous_interaction_id=turn1.id,
)
print(turn2.output_text)
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-4-argon:generateContent \
-d '{
"contents": {
"role": "USER",
"parts": { "text": "Why is the sky blue?" }
}
}'
Sortie structurée
from pydantic import BaseModel, Field
from google import genai
from google.genai import types
class ArchitectureReview(BaseModel):
component: str = Field(description="Service or module name")
bottlenecks: list[str] = Field(description="Throughput or latency bottlenecks")
recommended_changes: list[str] = Field(description="Concrete refactoring steps")
client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")
response = client.models.generate_content(
model="gemini-4-argon",
contents="Review a synchronous order-processing pipeline backed by a single primary database at 15,000 writes/sec.",
config=types.GenerateContentConfig(
response_mime_type="application/json",
response_schema=ArchitectureReview,
thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
),
)
print(response.text)
Longues décodes
Par défaut, une seule requête API génère jusqu'à 65 536 jetons de réflexion et de sortie (ou 32 768 jetons pour les requêtes HTTP directes non diffusées en streaming). Pour générer des achèvements jusqu'à 1 048 576 jetons sur GenerateContent (v1beta1), définissez max_output_tokens sur une valeur supérieure à 65 536 (jusqu'à 1 048 576). Le SDK Google Gen AI suit automatiquement continuation_token dans les requêtes lorsque finish_reason est CONTINUATION (définissez automatic_continuation=False dans GenerateContentConfig pour désactiver la continuation automatique), ou vous pouvez transmettre continuation_token dans une boucle personnalisée.
Python (SDK – Recommandé)
from google import genai
from google.genai import types
client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")
# Automatic continuation is enabled by default in google-genai >= 2.30.1.
# Chunks across all continuation requests are yielded as a single stream.
for chunk in client.models.generate_content_stream(
model="gemini-4-argon",
contents="Write a complete formal proof of the prime number theorem.",
config=types.GenerateContentConfig(
max_output_tokens=256000,
thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
),
):
print(chunk.text, end="")
# Set automatic_continuation=False to disable automatic continuation
# and stop at a single request.
single_request_response = client.models.generate_content(
model="gemini-4-argon",
contents="Write a complete formal proof of the prime number theorem.",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
automatic_continuation=False,
),
)
print(single_request_response.text)
REST (boucle de continuation personnalisée)
# Request 1: Initial request with maxOutputTokens > 32,768
curl -s -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-4-argon:generateContent" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Write a complete formal proof of the prime number theorem."}]
}],
"generationConfig": {
"maxOutputTokens": 131072,
"thinkingConfig": {"thinkingLevel": "HIGH"}
}
}'
# Request 2: Resend the original request with top-level continuationToken
# from Request 1 (candidates[0].continuationToken)
curl -s -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-4-argon:generateContent" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Write a complete formal proof of the prime number theorem."}]
}],
"continuationToken": "CONTINUATION_TOKEN_FROM_REQUEST_1",
"generationConfig": {
"maxOutputTokens": 131072,
"thinkingConfig": {"thinkingLevel": "HIGH"}
}
}'
Règles d'API et conventions de comportement obligatoires
Gemini 4 Argon applique les conventions suivantes :
- Fenêtre de contexte et limites de sortie d'une seule requête:
- La fenêtre de contexte de 1 048 576 jetons est partagée entre les jetons d'entrée, de réflexion et de sortie. Définir
max_output_tokenssur une valeur supérieure à1,048,576renvoie une erreur HTTP400. - Pour éviter les achèvements longs involontaires, la limite de sortie par défaut d'une seule requête (réflexion + réponse du modèle) est de 65 536 jetons (ou 32 768 jetons pour les requêtes HTTP directes non diffusées en streaming).
- La fenêtre de contexte de 1 048 576 jetons est partagée entre les jetons d'entrée, de réflexion et de sortie. Définir
Longues décodes:
- Fonctionnement du décodage long : le décodage long divise une génération jusqu'à
1 048 576 jetons sur plusieurs
GenerateContentinférences. Lorsqu'une requête atteint sa limite de sortie par requête avant de se terminer, l'API renvoiefinish_reason=CONTINUATIONet uncontinuation_tokenchiffré contenant un hachage du prompt d'origine et de l'état de la génération jusqu'à ce point. Incluezcontinuation_tokendans les requêtes suivantes avec le prompt d'origine jusqu'à ce quecontinuation_tokenne soit plus émis et quefinish_reason=STOP. (Dans Agent Studio, définir la limite de jetons de sortie sur une valeur supérieure à 65 536 et jusqu'à 1 048 576 gère automatiquement les jetons de continuation.) - Quand utiliser le décodage long : la plupart des requêtes se terminent dans la limite par requête (65 536 jetons ou 32 768 jetons pour les appels REST non diffusés en streaming).
Le décodage long donne plus de marge au modèle pour raisonner, mais il n'allonge pas les réponses (utilisez
thinking_levelpour contrôler la profondeur du raisonnement).
Charge de travail Utiliser le décodage long ? Pourquoi Mathématiques complexes, sciences, recherche et preuves formelles Oui Le modèle peut utiliser plus de 65 536 jetons pour explorer et vérifier son raisonnement. Les tâches de codage et agentiques les plus difficiles Oui Certaines tâches nécessitent plus de 65 536 jetons de réflexion et de code dans une seule réponse. La plupart des tâches de codage et agentiques se terminent avec moins de 65 536 jetons. Outils d'évaluation qui s'arrêtent à la limite de sortie Oui Le décodage long empêche les réponses tronquées lorsque le modèle utilise une requête complète de 65 536 ou 32 768 jetons pour la réflexion. Chat, questions-réponses, synthèse, classification et extraction Non Ces tâches se terminent avec moins de 32 768 jetons. Requêtes de longueur fixe, telles que "écrire un livre de 700 000 mots" Non Le modèle ne respecte pas les objectifs de longueur. Agents qui appellent des outils en plusieurs tours courts Non Chaque tour est court. Les sorties volumineuses à chaque tour remplissent rapidement la fenêtre d'entrée et de sortie partagée de 1 048 576 jetons. Prompts proches de la limite d'entrée de 1 048 576 jetons Non La sortie ne peut utiliser que 1 048 576 jetons moins votre entrée. Requêtes sensibles à la latence Non Le décodage long peut s'exécuter pendant plusieurs minutes. - Choisir une option de continuation : toutes les options atteignent la même
limite de 1 048 576 jetons sur
gemini-4-argonetgemini-4-argon-cyber-permissive.
Dimension Option 1 : SDK Google Gen AI (recommandé) Option 2 : Votre propre boucle de streaming ( streamGenerateContent)Option 2 : Votre propre boucle non diffusée en streaming ( generateContent)Qui démarre chaque segment Le SDK ( automatic_continuation=Truepar défaut). Définissezmax_output_tokenssur une valeur supérieure à 65 536 (jusqu'à 1 048 576) pour les sorties de plus de 65 536 jetons.Votre code, à chaque point de contrôle ou après un flux abandonné Votre code, tous les 32 768 jetons Jetons par requête Jusqu'à 65 536 par segment 65 536 par flux 32 768 par requête Délai par requête 20 minutes 20 minutes 20 minutes Stockage et ZDR Aucun stockage sur le serveur (conforme à la ZDR) Aucun stockage sur le serveur (conforme à la ZDR) Aucun stockage sur le serveur (conforme à la ZDR) Application idéale La plupart des applications Appelants REST et outils personnalisés qui diffusent en streaming Outils d'évaluation simples - Règles et limites d'implémentation:
v1beta1Exigence de l'API (problème connu) : le décodage long (continuation_token) surGenerateContent(generateContentetstreamGenerateContent) n'est compatible qu'avec l'APIv1beta1(et nonv1). Le SDK Google Gen AI utilisev1beta1par défaut, sauf siapi_version='v1'est spécifié danshttp_options. Pour les appels REST directs, utilisez le chemin du point de terminaisonv1beta1. Le décodage long n'est pas compatible avec l'API Interactions.- Versions du SDK et compatibilité avec OpenAI : passez à la dernière version du
SDK Google Gen AI (
google-genai >= 2.30.1pour Python,@google/genai >= 2.29.1pour JavaScript,>= 1.74.0pour Go,>= 1.77.0pour Java,>= 1.26.0pour .NET ou>= 1.6.0pour Kotlin). Les anciennes versions du SDK et la couche de compatibilité OpenAI ne peuvent pas récupérer les achèvements longs à l'aide de jetons de continuation. Pour les implémentations de clients personnalisés, consultez l'implémentation de référence du SDK Google Gen AI. - Renvoyez la requête d'origine avec
continuation_token: dans une boucle personnalisée, définissezmax_output_tokenssur une valeur supérieure à 65 536 (streaming) ou 32 768 (unaire) jusqu'à 1 048 576, et renvoyez lescontents,system_instructionettoolsd'origine sur chaque requête de continuation avec le derniercontinuation_token(champ de premier niveau surGenerateContentRequestdans REST ou dansGenerateContentConfigdans le SDK Google Gen AI). N'ajoutez pas de sortie de modèle partielle danscontentset n'envoyez pas de prompt de suivi demandant au modèle de continuer. - Continuez via des requêtes de réflexion uniquement : bouclez tant que
finish_reasonestCONTINUATIONet quecontinuation_tokenest présent, même si une requête a utilisé les 32 768 ou 65 536 jetons pour la réflexion (parts: [{"text": ""}]). Sifinish_reasonestMAX_TOKENSlorsquecontinuation_tokenest présent, la génération a atteint le plafondmax_output_tokensdemandé. Augmentezmax_output_tokensdans la requête. Combinez les parties accumulées en un seul tourmodelpour l'historique multitour uniquement aprèsSTOP. - Comptage des jetons, compression et remise de 95% sur le cache implicite:
- Dans le SDK Google Gen AI pour Python (
generate_contentetgenerate_content_stream), leusage_metadatade la réponse finale ou du bloc accumule le nombre total de jetons facturés dans les requêtes de continuation. Étant donné que chaque requête de continuation préremplit à nouveau les achèvements partiels précédents en tant que jetons d'entrée,prompt_token_countaugmente de manière cumulative dans les requêtes de continuation. N'utilisez pasprompt_token_countpour déclencher la compression du contexte dans les outils d'agent. Lisez plutôtinitial_prompt_token_count(surGenerateContentResponseouusage_metadata), et attendez queGenerateContentse termine (aucuncontinuation_tokenprésent) avant de compresser. - Dans les boucles REST personnalisées,
usage_metadataest cumulatif dans chaque requête. Additionnez lesprompt_token_count,cached_content_token_count,candidates_token_countetthoughts_token_countfinaux dans les requêtes. - Chaque requête de continuation préremplit à nouveau le prompt ainsi que les jetons décodés précédents et reçoit automatiquement la remise de 95% sur la mise en cache implicite du contexte (6 144 jetons minimum) lorsque les requêtes s'exécutent consécutivement dans le TTL du cache de 15 à 20 minutes.
streamGenerateContentetgenerateContentrenvoientcontinuation_tokenetusage_metadataà la fin de chaque requête (65 536 en streaming / 32 768 en unaire), et la facturation a lieu à la fin de la requête.
- Dans le SDK Google Gen AI pour Python (
- Fonctionnement du décodage long : le décodage long divise une génération jusqu'à
1 048 576 jetons sur plusieurs
Paramètres d'échantillonnage ignorés (
temperature,top_k,top_p) : le backend ignore les valeurs personnalisées. Contrôlez la profondeur du raisonnement avecthinking_levelet le format de sortie avecresponse_schema.Paramètres non compatibles (
frequency_penalty,presence_penalty,candidate_count) : ils renvoient une erreur HTTP400. Supprimez-les de vos requêtes.Cache de contexte : le cache de contexte explicite n'est pas pris en charge. La mise en cache implicite (avec la mise en cache durable activée par défaut) s'applique automatiquement aux préfixes de prompt partagés de 6 144 jetons ou plus. Placez donc le contenu statique au début de votre prompt.
Vidéo agentique : les vidéos importées sont définies par défaut sur
media_processing="static". Définissezmedia_processing="agentic"pour activer le traitement vidéo agentique.Comptage des jetons et facturation : chaque jeton traité par le modèle est comptabilisé et facturé, y compris les jetons de réflexion, les instructions internes du système d'outils et les déclarations de fonction lors de l'utilisation de l'ancrage. L'ancrage avec la recherche Google reste également facturé par requête.
Appel de fonction :
- Symétrie des tours : chaque
FunctionResponsedoit correspondre à l'id, auname, et à l'ordre duFunctionCallprécédent. - Exécution séquentielle : préférez les tours d'exécution séquentielle des outils dans les boucles d'outils en plusieurs étapes.
- Mise en forme avant l'outil : séparez les instructions intégrées avec
\n\net évitez le texte non structuré avant les appels d'outils.
- Symétrie des tours : chaque
Validation de la séquence de chat :
- Les charges utiles de l'historique ne peuvent pas se terminer par un tour de rôle
model. - Les tours de modèle préremplis ne sont pas compatibles.
- Les charges utiles de l'historique ne peuvent pas se terminer par un tour de rôle
Migrer vers 4 Argon depuis 3.1 Pro
Le comportement suivant est différent de gemini-3.1-pro-preview :
- La fenêtre de contexte est une fenêtre de 1 048 576 jetons partagée par l'entrée, la réflexion et la sortie, au lieu de limites d'entrée et de sortie distinctes. La sortie d'une seule requête
est limitée à 65 536 jetons (ou 32 768 jetons pour les requêtes HTTP directes non diffusées en streaming)
et peut être étendue jusqu'à 1 048 576 jetons à l'aide de
longues décodes sur
GenerateContent(gérées automatiquement dans le SDK Google Gen AI ou à l'aide decontinuation_tokendans des boucles personnalisées). thinking_budgetrenvoie une erreur HTTP400au lieu d'être mappé à un niveau de réflexion.MINIMALrenvoie également une erreur.- La mise en cache explicite du contexte n'est pas prise en charge.
- Chaque jeton traité par le modèle est facturé, y compris les instructions internes du système d'outils et les déclarations de fonction lors de l'utilisation de l'ancrage.
Pour une comparaison côte à côte, consultez Migrer depuis Gemini 3.1 Pro.
Pour migrer depuis gemini-3.1-pro-preview, procédez comme suit :
- Mettez à jour l'ID du modèle sur
gemini-4-argon(ougemini-4-argon-cyber-permissivepour les charges de travail de cybersécurité approuvées par Fairwind). - Passez à la dernière version du SDK Google Gen AI et tenez compte de la fenêtre de contexte partagée : passez à
google-genai >= 2.30.1(Python) ou à la dernière version équivalente du SDK Google Gen AI. Les jetons d'entrée, de réflexion et de sortie partagent la fenêtre de contexte de 1 048 576 jetons. Pour les sorties dépassant 65 536 jetons (jusqu'à 1 048 576 jetons) surGenerateContent, définissezmax_output_tokenssur une valeur supérieure à 65 536 afin que le SDK Google Gen AI continue automatiquement dans les requêtes (ou gérezcontinuation_tokendans votre propre boucle REST). - Remplacez le paramètre de budget de raisonnement : remplacez
thinking_budgetetMINIMALparthinking_leveldéfini sur l'une des valeurs suivantes :HIGH: valeur par défaut surgemini-4-argon-cyber-permissive. Ingénierie logicielle multifichier, preuves formelles, conception d'architecture et découverte de failles.MEDIUM: valeur par défaut surgemini-4-argon. Codage général, utilisation d'outils, questions-réponses sur les documents et compréhension des vidéos.LOW: classification, synthèse et extraction de métadonnées.
- Supprimez la mise en cache explicite et chargez le contenu statique du prompt (6 144 jetons ou plus) pour la mise en cache implicite automatique.
- Supprimez les paramètres qui n'ont aucun effet ou qui ne sont pas compatibles :
- Supprimez
temperature,top_pettop_k, qui sont ignorés. - Supprimez
candidate_count,frequency_penaltyetpresence_penalty. - Supprimez tous les tours de modèle préremplis des historiques de conversation.
- Supprimez
Check-list récapitulative pour les développeurs
Problèmes connus
- Les longues décodes sur
GenerateContentnécessitentv1beta1: le décodage long (continuation_token) sur l'APIGenerateContent(generateContentetstreamGenerateContent) n'est compatible qu'avec l'APIv1beta1(et nonv1). Le SDK Google Gen AI utilisev1beta1par défaut, sauf siapi_version='v1'est défini danshttp_options. Pour les appels REST directs, utilisez le chemin du point de terminaisonv1beta1.