Gemini 4 Carbon est le modèle de frontière de Google qui excelle dans le travail approfondi sur des tâches complexes et réelles dans des domaines tels que le codage, la finance, le droit, la cybersécurité et la science. Il fait partie de la famille Gemini 4. Gemini 4 Carbon est un modèle de frontière Google soumis à la section 34 des Conditions spécifiques du service (pour en savoir plus, consultez Surveillance des utilisations abusives).
Ce document présente les principales fonctionnalités de 4 Carbon, les conventions d'API qu'il applique, la procédure de migration et un guide de démarrage rapide. Pour une présentation de la famille Gemini 4, consultez Premiers pas avec Gemini 4.
Principales fonctionnalités de Gemini 4 Carbon
Gemini 4 Carbon inclut les fonctionnalités suivantes :
- Limite unifiée de jetons d'entrée et de sortie : 4 Carbon a une limite unifiée de 1 048 576 jetons qui inclut à la fois les jetons d'entrée et de sortie (où la sortie inclut la réflexion, les appels de fonction et la réponse finale).
- Décodages longs jusqu'à 1 048 576 jetons : 4 Carbon étend la génération au-delà d'un seul segment de premier plan (65 536 jetons en streaming ou 32 768 jetons en non-streaming) jusqu'à 1 048 576 jetons (moins vos jetons d'entrée) sur l'API Interactions et
GenerateContent(v1beta1). Le SDK Google Gen AI gère automatiquementcontinuation_tokensur plusieurs segments. Vous pouvez également exécuter des décodages asynchrones en arrière-plan gérés par le serveur (background=true) ou gérercontinuation_tokendans une boucle de continuation personnalisée. - Niveaux de réflexion : 4 Carbon est compatible avec
LOW,MEDIUM(par défaut surgemini-4-carbon) etHIGH(par défaut surgemini-4-carbon-cyber-permissive). - Mise en cache implicite avec mise en cache durable : la mise en cache implicite s'applique automatiquement aux préfixes de requêtes partagés de 4 096 jetons ou plus, la mise en cache durable étant activée par défaut. La mise en cache de contexte explicite n'est pas prise en charge.
- Entrées de fichiers Office et OpenDocument : en plus des fichiers PDF et en texte brut, 4 Carbon accepte les fichiers Microsoft Office (
.docx,.dotx,.doc,.pptx,.ppt,.xlsx,.xls) et OpenDocument (.odt,.odp,.ods) intégrés ou provenant de Cloud Storage surGenerateContentet l'API Interactions. - Compréhension agentique des vidéos : la compréhension agentique des vidéos est en 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 de Gemini Enterprise 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 Agent Platform.
Dans les blocs de code suivants, remplacez PROJECT_ID par l'ID de votre projet.
Essayer dans Agent Studio
Pour tester des prompts et configurer gemini-4-carbon dans l'interface utilisateur d'Agent Studio, procédez comme suit :
- Ouvrez Agent Studio dans votre projet Cloud de Confiance by S3NS et sélectionnez
gemini-4-carbonsous le groupe Gemini. - Dans Paramètres du modèle, configurez les options suivantes :
- Niveau de raisonnement : sélectionnez
Low,Medium(par défaut) ouHigh. - Région : sélectionnez
Global,usoueu. - Limite de jetons de sortie : définissez une valeur comprise entre
32,768et1,048,576(1,048,576par défaut). Agent Studio gère automatiquement les jetons de continuation pour les réponses dépassant la limite d'une seule requête.
- Niveau de raisonnement : sélectionnez
Installation
Passez à la dernière version du SDK Google Gen AI. La continuation automatique sur l'API Interactions nécessite google-genai >= 2.34.0 pour Python, @google/genai >= 2.32.0 pour JavaScript/TypeScript, >= 1.77.0 pour Go ou >= 1.80.0 pour Java (sur GenerateContent, la continuation automatique nécessite >= 2.30.1 pour Python, >= 2.29.1 pour JavaScript/TypeScript, >= 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.34.0"
Requête de base
Envoyez une requête à gemini-4-carbon à l'aide du SDK Google Gen AI ou de REST :
Python (GenerateContent)
from google import genai
from google.genai import types
client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")
response = client.models.generate_content(
model="gemini-4-carbon",
contents="Design a lock-free ring buffer in Rust for multi-producer, single-consumer telemetry ingestion.",
config=types.GenerateContentConfig(
thinking_config=types.ThinkingConfig(
thinking_level="MEDIUM", # Default: "MEDIUM" (Valid: "LOW", "MEDIUM", "HIGH")
),
),
)
print(response.text)
Python (API Interactions)
from google import genai
client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")
# Turn 1: Initial request (stored server-side by default)
turn1 = client.interactions.create(
model="gemini-4-carbon",
input="Design a lock-free ring buffer in Rust for multi-producer, single-consumer telemetry ingestion.",
store=True,
)
print(turn1.output_text)
# Turn 2: Continue the conversation using previous_interaction_id
turn2 = client.interactions.create(
model="gemini-4-carbon",
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 application-default print-access-token)" \
-H "Content-Type: application/json" \
"https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-4-carbon:generateContent" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Provide an architectural review of this Go interface."
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingLevel": "MEDIUM"
}
}
}'
Sortie structurée
Pour générer une sortie JSON conforme à un schéma, configurez response_mime_type et response_schema :
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-carbon",
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)
Exemples de décodage long
Par défaut, un seul segment d'API de premier plan génère jusqu'à 65 536 jetons de sortie lors du streaming ou 32 768 jetons de sortie lors d'une utilisation sans streaming, où la sortie inclut la réflexion, les appels de fonction et la réponse finale. Pour générer des complétions jusqu'à 1 048 576 jetons (moins vos jetons d'entrée), utilisez des décodages longs sur l'API Interactions ou GenerateContent. Pour en savoir plus sur les options de continuation, les transitions d'état et les règles de validation, consultez Décodages longs.
Utiliser des décodages longs avec l'API Interactions
Dans google-genai >= 2.34.0 (Python), @google/genai >= 2.32.0 (JavaScript/TypeScript), Go >= 1.77.0 et Java >= 1.80.0, interactions.create() suit automatiquement continuation_token entre les segments chaque fois qu'un segment renvoie status="requires_continuation". Vous pouvez également désactiver l'option (automatic_continuation=False) pour exécuter une boucle personnalisée stockée (store=True) ou sans état (store=False) :
Python (SDK automatique)
from google import genai
client = genai.Client(
enterprise=True,
project="PROJECT_ID",
location="global",
)
# Automatic continuation is enabled by default in google-genai >= 2.34.0.
# Unary calls merge all segments into one Interaction with summed usage.
interaction = client.interactions.create(
model="gemini-4-carbon",
input="Write a complete formal proof of the prime number theorem.",
generation_config={
"max_output_tokens": 256000,
"thinking_level": "high",
},
)
print(interaction.output_text)
print(f"Merged segment IDs: {interaction.continuation_ids}")
print(f"Initial input tokens: {interaction.usage.initial_input_tokens}")
# Optional: Delete each stored server segment (last segment first) before its 7-day TTL expires.
for segment_id in reversed(interaction.continuation_ids or [interaction.id]):
client.interactions.delete(id=segment_id)
# Streaming yields events across all segments in order. Intermediate segments
# emit interaction.completed with status="requires_continuation".
stream = client.interactions.create(
model="gemini-4-carbon",
input="Write a complete formal proof of the prime number theorem.",
stream=True,
generation_config={
"max_output_tokens": 256000,
"thinking_level": "high",
},
)
for event in stream:
if event.event_type == "step.delta" and getattr(event.delta, "text", None):
print(event.delta.text, end="", flush=True)
elif (
event.event_type == "interaction.completed"
and event.interaction.status != "requires_continuation"
):
print(f"\nFinal status: {event.interaction.status}")
# Set automatic_continuation=False to return after a single segment.
single_segment = client.interactions.create(
model="gemini-4-carbon",
input="Write a complete formal proof of the prime number theorem.",
generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
automatic_continuation=False,
)
Python (boucle personnalisée)
from google import genai
client = genai.Client(
enterprise=True,
project="PROJECT_ID",
location="global",
)
prompt = "Write a complete formal proof of the prime number theorem."
# Stored loop (store=True, default): chain previous_interaction_id + continuation_token
# without resending input.
segment = client.interactions.create(
model="gemini-4-carbon",
input=prompt,
store=True,
generation_config={"max_output_tokens": 131072, "thinking_level": "high"},
automatic_continuation=False,
)
full_text = segment.output_text or ""
while segment.status == "requires_continuation" and segment.continuation_token:
segment = client.interactions.create(
model="gemini-4-carbon",
previous_interaction_id=segment.id,
continuation_token=segment.continuation_token,
generation_config={"max_output_tokens": 131072, "thinking_level": "high"},
automatic_continuation=False,
)
full_text += segment.output_text or ""
# If status == "incomplete", max_output_tokens was exhausted; raise max_output_tokens
# to continue (leaving default automatic_continuation=True lets the SDK finish remaining segments).
if segment.status == "incomplete" and segment.continuation_token:
segment = client.interactions.create(
model="gemini-4-carbon",
previous_interaction_id=segment.id,
continuation_token=segment.continuation_token,
generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
)
full_text += segment.output_text or ""
# Stateless loop (store=False): resend original input + continuation_token
# with no previous_interaction_id.
stateless_seg = client.interactions.create(
model="gemini-4-carbon",
input=prompt,
store=False,
generation_config={"max_output_tokens": 131072, "thinking_level": "high"},
automatic_continuation=False,
)
stateless_text = stateless_seg.output_text or ""
while stateless_seg.status == "requires_continuation" and stateless_seg.continuation_token:
stateless_seg = client.interactions.create(
model="gemini-4-carbon",
input=prompt,
store=False,
continuation_token=stateless_seg.continuation_token,
generation_config={"max_output_tokens": 131072, "thinking_level": "high"},
automatic_continuation=False,
)
stateless_text += stateless_seg.output_text or ""
REST (stocké)
# Segment 1: Start a stored interaction (store=true by default)
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/interactions" \
-d '{
"model": "gemini-4-carbon",
"store": true,
"input": "Write a complete formal proof of the prime number theorem.",
"generation_config": {
"max_output_tokens": 131072,
"thinking_level": "high"
}
}'
# Segment 2: When status is "requires_continuation", pass previous_interaction_id
# and continuation_token without resending input
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/interactions" \
-d '{
"model": "gemini-4-carbon",
"store": true,
"previous_interaction_id": "SEGMENT_1_ID",
"continuation_token": "CONTINUATION_TOKEN",
"generation_config": {
"max_output_tokens": 131072,
"thinking_level": "high"
}
}'
REST (sans état)
# Segment 1: Stateless interaction (store=false)
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/interactions" \
-d '{
"model": "gemini-4-carbon",
"store": false,
"input": "Write a complete formal proof of the prime number theorem.",
"generation_config": {
"max_output_tokens": 131072,
"thinking_level": "high"
}
}'
# Segment 2: Resend the original input and continuation_token (no previous_interaction_id)
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/interactions" \
-d '{
"model": "gemini-4-carbon",
"store": false,
"input": "Write a complete formal proof of the prime number theorem.",
"continuation_token": "CONTINUATION_TOKEN",
"generation_config": {
"max_output_tokens": 131072,
"thinking_level": "high"
}
}'
Pour l'exécution asynchrone gérée par le serveur (background=True avec store=True) ou la récupération à partir de points de contrôle de streaming (événements interaction.status_update émis à 32 768 jetons de sortie, puis tous les 5 000 jetons), utilisez les modèles suivants :
Python (arrière-plan)
import time
from google import genai
client = genai.Client(
enterprise=True,
project="PROJECT_ID",
location="global",
)
# Start a server-managed background long decode (requires store=True)
interaction = client.interactions.create(
model="gemini-4-carbon",
input="Write a complete formal proof of the prime number theorem.",
background=True,
store=True,
generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
)
while interaction.status in ("queued", "in_progress"):
time.sleep(10)
interaction = client.interactions.get(id=interaction.id)
print(f"Status: {interaction.status}")
print(interaction.output_text)
# Optional: Cancel an in-progress background interaction and resume later
# from its persisted checkpoint continuation_token (if >= 32,768 tokens decoded).
# cancelled = client.interactions.cancel(id=interaction.id)
# if cancelled.continuation_token:
# resumed = client.interactions.create(
# model="gemini-4-carbon",
# previous_interaction_id=cancelled.id,
# continuation_token=cancelled.continuation_token,
# background=True,
# generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
# )
REST (arrière-plan)
# Start a server-managed background long decode (requires store=true)
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/interactions" \
-d '{
"model": "gemini-4-carbon",
"background": true,
"store": true,
"input": "Write a complete formal proof of the prime number theorem.",
"generation_config": {
"max_output_tokens": 256000,
"thinking_level": "high"
}
}'
# Poll the interaction until status reaches completed, incomplete, failed, or cancelled
curl -s -X GET \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID"
# Optional: Cancel an in-progress background decode
curl -s -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID/cancel"
# Optional: Resume a cancelled background decode from its checkpoint continuation_token
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/interactions" \
-d '{
"model": "gemini-4-carbon",
"background": true,
"store": true,
"previous_interaction_id": "INTERACTION_ID",
"continuation_token": "CONTINUATION_TOKEN",
"generation_config": {
"max_output_tokens": 256000,
"thinking_level": "high"
}
}'
Python (points de contrôle de streaming)
from google import genai
from google.genai import errors
client = genai.Client(
enterprise=True,
project="PROJECT_ID",
location="global",
)
# With default automatic_continuation=True, stream=True automatically
# reconnects from the latest interaction.status_update checkpoint (32,768
# output tokens, then every 5,000 tokens) if no output was yielded after the
# checkpoint. If a disconnect occurs after output was yielded since the last
# checkpoint, the SDK raises ContinuationInterruptedError so you can resume
# from err.continuation_token.
stream = client.interactions.create(
model="gemini-4-carbon",
input="Write a complete formal proof of the prime number theorem.",
stream=True,
store=True,
generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
)
try:
for event in stream:
if event.event_type == "step.delta" and getattr(event.delta, "text", None):
print(event.delta.text, end="", flush=True)
except errors.ContinuationInterruptedError as err:
# Resuming from a mid-segment checkpoint regenerates any output yielded
# after that checkpoint.
if err.interaction_id and err.continuation_token:
resumed_stream = client.interactions.create(
model="gemini-4-carbon",
previous_interaction_id=err.interaction_id,
continuation_token=err.continuation_token,
stream=True,
store=True,
generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
)
for event in resumed_stream:
if event.event_type == "step.delta" and getattr(event.delta, "text", None):
print(event.delta.text, end="", flush=True)
REST (points de contrôle de streaming)
# Start a streaming interaction; save interaction.id from interaction.created
# and the latest continuation_token from interaction.status_update SSE events
curl -N -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/interactions" \
-d '{
"model": "gemini-4-carbon",
"stream": true,
"store": true,
"input": "Write a complete formal proof of the prime number theorem.",
"generation_config": {
"max_output_tokens": 256000,
"thinking_level": "high"
}
}'
# Resume a dropped stream from the last saved checkpoint continuation_token
# (for store=false, resend the original input instead of previous_interaction_id)
curl -N -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/interactions" \
-d '{
"model": "gemini-4-carbon",
"stream": true,
"store": true,
"previous_interaction_id": "SEGMENT_ID",
"continuation_token": "CHECKPOINT_CONTINUATION_TOKEN",
"generation_config": {
"max_output_tokens": 256000,
"thinking_level": "high"
}
}'
Utiliser des décodages longs avec GenerateContent
Sur GenerateContent (v1beta1), définissez max_output_tokens sur une valeur supérieure à 65 536 pour les requêtes de streaming ou supérieure à 32 768 pour les requêtes non liées au streaming (jusqu'à 1 048 576). Le SDK Google Gen AI suit automatiquement continuation_token sur les segments lorsque finish_reason est défini sur CONTINUATION (définissez automatic_continuation=False dans GenerateContentConfig pour désactiver cette option), 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-carbon",
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.
for chunk in client.models.generate_content_stream(
model="gemini-4-carbon",
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(chunk.text, end="")
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-carbon: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-carbon:generateContent" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Write a complete formal proof of the prime number theorem."}]
}],
"continuationToken": "CONTINUATION_TOKEN",
"generationConfig": {
"maxOutputTokens": 131072,
"thinkingConfig": {"thinkingLevel": "HIGH"}
}
}'
Règles d'API et conventions de comportement obligatoires
4 Carbon applique les conventions des sections suivantes pour les niveaux de réflexion, les limites de jetons, la mise en cache, les paramètres de génération et l'exécution d'outils multitours.
Niveaux de raisonnement
4 Carbon accepte trois valeurs thinking_level (thinking_budget et MINIMAL renvoient une erreur de validation HTTP 400). Transmettez des valeurs en majuscules ("LOW", "MEDIUM", "HIGH") sur GenerateContent et des valeurs en minuscules ("low", "medium", "high") sur l'API Interactions. Le tableau suivant liste chaque niveau de réflexion et les charges de travail recommandées :
| Niveau de réflexion | Charges de travail recommandées |
|---|---|
HIGH (par défaut sur gemini-4-carbon-cyber-permissive) |
Ingénierie logicielle multifichier, preuves formelles, conception d'architecture et découverte de failles. |
MEDIUM (par défaut sur gemini-4-carbon) |
Codage général, utilisation d'outils, questions-réponses sur des documents et compréhension de vidéos. |
LOW |
Classification, synthèse et extraction de métadonnées. |
Limites de jetons, mise en cache et facturation
4 Carbon applique les règles suivantes concernant les jetons, la mise en cache, les contenus multimédias et la facturation :
- Limite unifiée de jetons d'entrée et de sortie et budgets de sortie par défaut :
Les budgets de jetons et les limites de segment de premier plan fonctionnent comme suit :
- La limite globale de jetons du modèle est de
1,048,576jetons et inclut à la fois les jetons d'entrée et de sortie (où la sortie inclut le raisonnement, les appels de fonction et la réponse finale).max_output_tokenscontrôle la limite de jetons de sortie pour la génération (jusqu'à1,048,576moins vos jetons d'entrée). Si vous définissezmax_output_tokenssur une valeur supérieure à1,048,576, une erreur HTTP400est renvoyée. - Lorsque
max_output_tokensest omis dansGenerateContentou l'API Interactions, le budget de sortie total par défaut (réflexion, appels de fonction et réponse) est de 65 536 jetons. Étant donné qu'un seul segment de premier plan génère jusqu'à 65 536 jetons lors du streaming ou 32 768 jetons en l'absence de streaming, le SDK Google Gen AI (v1beta1) enchaîne automatiquement deux segments de 32 768 jetons sur les appels sans streaming si nécessaire, tandis qu'une seule requête REST sans streaming s'arrête après un segment de premier plan de 32 768 jetons. Dans Agent Studio, la limite de jetons de sortie est définie par défaut sur1,048,576avec continuation automatique.
- La limite globale de jetons du modèle est de
- Décodages longs : un seul segment de premier plan génère jusqu'à 65 536 jetons de sortie lors du streaming ou 32 768 jetons de sortie en l'absence de streaming. Pour étendre la sortie à un seul tour jusqu'à 1 048 576 jetons (moins les jetons d'entrée) sur l'API Interactions ou
GenerateContent(v1beta1), consultez Décodages longs. - Cache de contexte : le cache de contexte explicite n'est pas disponible. La mise en cache implicite (avec la mise en cache durable activée par défaut) s'applique automatiquement aux préfixes de requêtes partagés de 4 096 jetons ou plus. Placez donc le contenu statique au début de votre requête.
- Entrées Office et OpenDocument : transmettez des fichiers Word (
application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.openxmlformats-officedocument.wordprocessingml.template,application/msword,application/vnd.oasis.opendocument.text), PowerPoint (application/vnd.openxmlformats-officedocument.presentationml.presentation,application/vnd.ms-powerpoint,application/vnd.oasis.opendocument.presentation) et des feuilles de calcul Excel ou OpenDocument (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/vnd.oasis.opendocument.spreadsheet) de manière intégrée ou par URI Cloud Storage (gs://) à l'aide deinlineDataoufileDatasur les entréesGenerateContentetdocument(y compris les résultats des outils) de l'API Interactions. - Vidéo agentive : les vidéos importées sont définies par défaut sur
media_processing="static". Définissezmedia_processing="agentic"pour activer le traitement agentique des vidéos. - Comptage et facturation des jetons : chaque jeton traité par le modèle est comptabilisé et facturé, y compris les jetons de raisonnement, les instructions système des outils internes 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.
Paramètres, appel de fonction et validation du chat
4 Carbon applique les règles suivantes pour les paramètres de génération, les appels d'outils et l'historique des discussions :
- 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_penaltyetcandidate_countsupérieur à1) : la transmission defrequency_penalty,presence_penaltyoucandidate_countsupérieur à1(candidateCountest fixé à1) renvoie une erreur HTTP400. Supprimez ces paramètres de vos requêtes. Appel de fonction : les déclarations d'outils et les tours d'exécution suivent ces règles :
- Symétrie des tours : chaque
FunctionResponsedoit correspondre auxid,nameet à l'ordre duFunctionCallprécédent. - Exécution séquentielle : privilégiez l'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 par
\n\net évitez le texte non structuré avant les appels d'outils. Pour consigner l'état intermédiaire avant un appel d'outil, utilisez une déclaration de fonction dédiée :{ "name": "update", "description": "Update working notes before tool execution", "parameters": { "type": "OBJECT", "properties": { "previous_step": {"type": "STRING"}, "plan": {"type": "STRING"}, "next_step": {"type": "STRING"} }, "required": ["previous_step", "plan", "next_step"] } }
- Symétrie des tours : chaque
Validation de la séquence de chat : les charges utiles de chat multitour appliquent les contraintes suivantes :
- 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 acceptés.
- Les charges utiles de l'historique ne peuvent pas se terminer par un tour de rôle
Décodages longs
Le décodage long divise une génération de 1 048 576 jetons (moins vos jetons d'entrée) en plusieurs segments sur l'API Interactions ou GenerateContent (v1beta1). Sur l'API Interactions, chaque segment de premier plan génère jusqu'à 65 536 jetons de sortie lors du streaming (stream=true) ou 32 768 jetons de sortie lors du non-streaming (stream=false) et renvoie status="requires_continuation" avec un continuation_token chiffré. Vous pouvez également définir background=true (store=true) pour que le serveur exécute la boucle de continuation de manière asynchrone et stocke la sortie fusionnée dans un Interaction. Sur GenerateContent, les segments de streaming génèrent jusqu'à 65 536 jetons de sortie et les segments non-streaming génèrent jusqu'à 32 768 jetons de sortie avant d'émettre finish_reason=CONTINUATION avec continuation_token, jusqu'à finish_reason=STOP. Dans Agent Studio, si vous définissez la limite de jetons de sortie sur une valeur supérieure à 65 536 et inférieure ou égale à 1 048 576, les jetons de continuation sont gérés automatiquement. Pour obtenir des exemples de code exécutables, consultez les exemples du guide de démarrage rapide sur le décodage long.
Quand utiliser le décodage long
La plupart des requêtes se terminent dans la limite de sortie par défaut de 65 536 jetons (ou un seul segment de premier plan sans streaming de 32 768 jetons sur REST). N'utilisez le décodage long que lorsqu'une réponse nécessite plus de sortie que cela. Le décodage long donne au modèle plus de marge de manœuvre pour raisonner. Il ne rallonge pas les réponses (utilisez thinking_level pour contrôler la profondeur du raisonnement).
| Charge de travail | Utiliser le décodage long ? | Pourquoi |
|---|---|---|
| Mathématiques, sciences, recherche et preuves formelles complexes | 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 d'agent se terminent en moins de 65 536 jetons. |
| Les outils d'évaluation qui s'arrêtent à la limite de sortie | Oui | Le décodage long évite les réponses tronquées lorsque le modèle utilise l'intégralité d'une requête de 65 536 ou 32 768 jetons pour raisonner. |
| Chat, questions/réponses, synthèse, classification et extraction | Non | Ces tâches se terminent bien en dessous de 32 768 jetons. |
| Les requêtes demandant une longueur fixe, comme "rédige un livre de 700 000 mots" | Non | Le modèle ne respecte pas les objectifs de longueur. |
| Agents qui appellent des outils en de nombreux tours courts | Non | Chaque tour est court. Les sorties volumineuses à chaque tour remplissent rapidement la limite unifiée de 1 048 576 jetons d'entrée et de sortie. |
| 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 prendre plusieurs minutes. |
Choisir une option de continuation
Sélectionnez un modèle de continuation en fonction de la surface de votre API, de votre stratégie de stockage et de votre environnement d'exécution. Toutes les options du tableau suivant atteignent la même limite de 1 048 576 jetons (moins les jetons d'entrée) sur gemini-4-carbon et gemini-4-carbon-cyber-permissive.
| Option de continuation | Surface d'API | Qui démarre chaque segment | Jetons par segment | Durée maximale par requête | Stockage du serveur | Application idéale |
|---|---|---|---|---|---|---|
| Continuation automatique du SDK Google Gen AI (recommandé) | API Interactions (v1beta1) |
SDK Google Gen AI : Python (google-genai >= 2.34.0), JavaScript/TypeScript (@google/genai >= 2.32.0), Go (>= 1.77.0) et Java (>= 1.80.0) |
Jusqu'à 65 536 (stream=true) ou 32 768 (stream=false) |
20 minutes par segment | Stockage sur serveur pendant sept jours par défaut (store=true) ou aucun (store=false) |
La plupart des applications d'API Interactions avec ou sans état |
Boucle d'arrière-plan gérée par le serveur (background=true) |
API Interactions (v1beta1) |
Boucle du serveur Agent Platform ; votre code interroge get |
Géré côté serveur jusqu'à max_output_tokens |
Asynchrone (aucun flux client ouvert requis) | Stockage sur serveur pendant 7 jours (store=true requis) |
Jobs asynchrones, appelants dans d'autres langages via REST et persistance d'un seul enregistrement |
Boucle stockée personnalisée au premier plan (store=true) |
API Interactions (v1beta1) |
Votre code (previous_interaction_id + continuation_token, pas de input) |
Jusqu'à 65 536 (stream=true, points de contrôle tous les 5 000 jetons après 32 768) ou 32 768 (stream=false) |
20 minutes par segment | Stockage sur serveur pendant 7 jours (store=true) |
Appels REST et récupération de points de contrôle personnalisés |
Boucle sans état personnalisée au premier plan (store=false) |
API Interactions (v1beta1) |
Votre code (input d'origine + continuation_token, pas de previous_interaction_id) |
Jusqu'à 65 536 (stream=true, points de contrôle tous les 5 000 jetons après 32 768) ou 32 768 (stream=false) |
20 minutes par segment | Aucun stockage sur serveur (workflows de conservation zéro donnée) | Harnais REST personnalisés nécessitant une exécution sans état |
| Continuation automatique du SDK Google Gen AI (recommandé) | GenerateContent (v1beta1) |
SDK Google Gen AI : Python (>= 2.30.1), JavaScript/TypeScript (>= 2.29.1), Go (>= 1.74.0), Java (>= 1.77.0), .NET (>= 1.26.0) et Kotlin (>= 1.6.0) |
Jusqu'à 65 536 (generate_content_stream) ou 32 768 (generate_content) |
20 minutes par segment | Aucun stockage sur serveur (workflows de conservation zéro donnée) | Applications GenerateContent existantes |
| Boucle de continuation personnalisée | GenerateContent (v1beta1) |
Votre code (contents d'origine + continuation_token) |
Jusqu'à 65 536 (streamGenerateContent, points de contrôle tous les 5 000 jetons après 32 768) ou 32 768 (generateContent) |
20 minutes par segment | Aucun stockage sur serveur (workflows de conservation zéro donnée) | Appels REST GenerateContent directs et outils d'évaluation |
Exigences concernant la version de l'API et du SDK
Les décodages longs nécessitent la version d'API et les versions minimales du SDK suivantes :
- Exigence de l'API
v1beta1(problème connu) : le décodage long (continuation_token) sur l'API Interactions etGenerateContent(generateContentetstreamGenerateContent) n'est compatible qu'avec l'APIv1beta1(et nonv1) sur Agent Platform. Le SDK Google Gen AI utilisev1beta1par défaut, sauf siapi_version='v1'est spécifié danshttp_options(ouapi_version="v1"surinteractions.create). Pour les appels REST directs, utilisez le chemin d'accès au point de terminaison/v1beta1/. - Versions du SDK et compatibilité avec OpenAI : pour la continuation automatique sur l'API Interactions, passez à Python
google-genai >= 2.34.0, JavaScript/TypeScript@google/genai >= 2.32.0, Go>= 1.77.0ou Java>= 1.80.0(pour les autres langages sur l'API Interactions, appelez l'API REST directement avecbackground=trueou une boucle de continuation personnalisée). Pour continuer automatiquement surGenerateContent, passez à Python>= 2.30.1, JavaScript/TypeScript>= 2.29.1, Go>= 1.74.0, Java>= 1.77.0, .NET>= 1.26.0ou Kotlin>= 1.6.0. Les versions antérieures du SDK et la couche de compatibilité OpenAI ne peuvent pas récupérer les complétions longues à l'aide de jetons de continuation.
Règles de continuation de l'API Interactions
Les transitions d'état, les règles de chaînage et les comportements de stockage suivants s'appliquent aux décodages longs sur l'API Interactions.
Valeurs d'état et budget de jetons de sortie
Lorsque generation_config.max_output_tokens est omis dans une requête API Interactions, le budget de sortie total est défini par défaut sur 65 536 jetons (un appel sans streaming s'arrête donc à 32 768 jetons avec status="requires_continuation", et un deuxième segment peut générer les 32 768 jetons restants). Définissez generation_config.max_output_tokens sur une valeur maximale de 1,048,576 (moins les jetons d'entrée) pour des décodages plus longs dans les modes de premier plan et background=true. Le serveur renvoie les valeurs d'état suivantes :
requires_continuation: la limite de sortie par segment (32 768 jetons pour les requêtes non diffusées en continu ou 65 536 jetons pour les requêtes diffusées en continu) a été atteinte avantmax_output_tokens. Transmettez lecontinuation_tokenrenvoyé lors de la requête suivante pour continuer le décodage.incomplete: le budgetmax_output_tokenstotal a été épuisé. Continuer aveccontinuation_tokensans augmentermax_output_tokensrenvoie une erreur HTTP400(max_output_tokens has already been exhausted). Augmentezmax_output_tokenslors de la prochaine requête pour reprendre le décodage.completed: la génération s'est terminée naturellement etcontinuation_tokenest effacé.
Chaînage, changement de mode et stockage des segments
Les requêtes de continuation sur l'API Interactions appliquent les règles suivantes :
- Suite stockée (
store=true, par défaut) : transmettezprevious_interaction_iddéfini sur le segmentidqui a émis lecontinuation_tokenaveccontinuation_token, et omettezinput(le segment stocké contient déjà l'entrée du tour). Associez toujours chaquecontinuation_tokenauprevious_interaction_iddu segment qui l'a émis. Transmettre uncontinuation_tokensur une interaction déjàcompletedrenvoie une erreur HTTP400. - Continuation sans état (
store=false) : omettezprevious_interaction_idet renvoyez leinputd'origine aveccontinuation_tokensur chaque segment. - Changer de mode
storeentre les segments : vous pouvez passer du mode stocké (store=true) au mode sans état (store=false) en cours de décodage en omettantprevious_interaction_idet en renvoyant leinputd'origine aveccontinuation_token. Le passage de l'état sans état (store=false) à l'état stocké (store=true) n'est pas possible, car il n'existe aucune interaction parente stockée pourprevious_interaction_id. - Changement de mode et branchement entre le premier plan et
background=true: les continuations stockées (store=true) peuvent basculer entre l'exécution au premier plan (background=false) et en arrière-plan (background=true) entre les segments, y compris reprendre une interactionbackground=trueannulée à partir de son point de contrôlecontinuation_token(conservé après 32 768 jetons de sortie) en mode arrière-plan ou premier plan. La réutilisation des mêmes valeursprevious_interaction_idetcontinuation_tokencrée des continuations ramifiées indépendantes. - Application des limites de tour : démarrer un nouveau tour d'utilisateur (
previous_interaction_idavec un nouveauinputet sanscontinuation_token) à partir d'un segment dont l'état estrequires_continuationouincompleterenvoie une erreur HTTP400. Terminez le décodage jusqu'àcompletedou branchez votre prochain tour à partir de l'interactioncompletedla plus récente. Une fois que le dernier segment atteintcompleted, la transmission de l'élémentidde ce dernier segment en tant queprevious_interaction_idreconstruit l'historique complet de la conversation sur tous les segments précédents. - Cohérence des paramètres entre les segments : la modification de
model,system_instructionou des déclarations de fonction (tools) sur un segment de continuation renvoie une erreur HTTP400. Conservez égalementthinking_levelet les outils intégrés inchangés d'un segment à l'autre (voir Problèmes connus). - Comportement des segments uniques
get,listetdelete: en mode premier plan (background=false), chaque segment est stocké en tant que ressourceInteractiondistincte (interactions.get(id)ne renvoie que ce segment,interactions.list()liste chaque segment séparément etinteractions.delete(id)ne supprime que ce segment ; lors de la suppression d'une chaîne de segments, supprimez-les dans l'ordre inverse, en commençant par le dernier segment). Dans le SDK Google Gen AI avecautomatic_continuation=True(stream=False),interactions.create()fusionne tous les segments au retour et remplitinteraction.continuation_idsavec les ID de segment ordonnés (se terminant parinteraction.id). Si un segment ultérieur échoue, dépasse untimeoutnumérique par appel ou est supprimé en cours de flux après avoir dépassé un point de contrôle réactivable, le SDK génèreContinuationInterruptedErrorcontenantpartial_interaction,continuation_token,interaction_idetcontinuation_idsafin que vous puissiez reprendre à partir decontinuation_token.
Règles de boucle personnalisées GenerateContent
Dans une boucle de continuation GenerateContent personnalisée, suivez ces règles :
- Définissez
max_output_tokenssur une valeur supérieure à 65 536 (streaming) ou 32 768 (non-streaming) jusqu'à 1 048 576, puis renvoyez les valeurs d'origine decontents,system_instructionettoolsà chaque requête de continuation, ainsi que la dernière valeur decontinuation_token(un champ de premier niveau surGenerateContentRequestdans REST ou dansGenerateContentConfigdans le SDK Google Gen AI). - N'ajoutez pas de sortie de modèle partielle dans
contentset n'envoyez pas de requête de suivi demandant au modèle de continuer. - Continuez à boucler tant que
finish_reasonestCONTINUATIONet quecontinuation_tokenest présent, même si un segment a utilisé l'intégralité des 32 768 ou 65 536 jetons pour la réflexion (parts: [{"text": ""}]). Sifinish_reasonestMAX_TOKENSlorsquecontinuation_tokenest présent, augmentezmax_output_tokensdans la requête suivante. - Combinez les parties accumulées en un seul tour
modelpour l'historique multitour uniquement aprèsSTOP.
Comptage, compactage et mise en cache implicite des jetons
La comptabilisation et la mise en cache des jetons sur les segments de continuation fonctionnent comme suit :
- Sur l'API Interactions, les appels
interactions.create()sans streaming avecautomatic_continuation=Trueet les interactionsbackground=truegérées par le serveur additionnent le nombre de jetons de tous les segments dansusage(total_input_tokens,total_cached_tokens,total_output_tokens,total_thought_tokens,total_tokens), en conservant le nombre de requêtes du premier segment dansusage.initial_input_tokens. Dans les boucles de premier plan personnalisées et les événementsinteraction.completeddiffusés en streaming, le champusagede chaque segment ne signale que le delta de ce segment. Par conséquent, additionnez les champsusagede tous les segments pour obtenir le nombre total de jetons facturés. - Sur
GenerateContent, le SDK Google Gen AI pour Python (generate_contentetgenerate_content_stream) cumule le nombre total de jetons facturés sur les segments dans leusage_metadatafinal et conserveinitial_prompt_token_count. Dans les boucles REST personnalisées, additionnez les valeurs finales deprompt_token_count,cached_content_token_count,candidates_token_countetthoughts_token_countpour tous les segments. - Étant donné que chaque segment de continuation au premier plan remplit à nouveau la conversation et les jetons précédemment générés en tant qu'entrée,
usage.total_input_tokens(sur l'API Interactions) etprompt_token_count(surGenerateContent) augmentent d'un segment à l'autre. N'utilisez pas le nombre cumulé d'entrées pour déclencher la compression du contexte dans les harnais d'agent. Vérifiez plutôtusage.initial_input_tokens(ouinitial_prompt_token_countsurGenerateContent) et ne compressez qu'une fois le tour terminé (status="completed"ou pas decontinuation_token). - Chaque segment de continuation préremplit à nouveau le prompt ainsi que les jetons précédemment décodés et est automatiquement éligible à la cache de contexte implicite (minimum de 4 096 jetons, avec mise en cache durable activée par défaut) lorsque les segments s'exécutent l'un après l'autre. Les segments terminés sont facturés à la fin de chaque segment, même si un segment ultérieur échoue ou est annulé.
Migrer de 3.1 Pro vers 4 Carbon
Le comportement suivant est différent de gemini-3.1-pro-preview :
- 4 Carbon a une limite unifiée de 1 048 576 jetons pour l'entrée et la sortie (où la sortie inclut le raisonnement, les appels de fonction et la réponse finale), au lieu de limites d'entrée et de sortie distinctes. Un seul segment de premier plan est limité à 65 536 jetons lors du streaming (ou 32 768 jetons en l'absence de streaming), et la sortie peut être étendue jusqu'à 1 048 576 jetons à l'aide de décodages longs sur l'API Interactions ou
GenerateContent(géré automatiquement dans le SDK Google Gen AI, avecbackground=truesur l'API Interactions 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 compatible.
- Chaque jeton traité par le modèle est facturé, y compris les instructions système des outils internes et les déclarations de fonction lors de l'utilisation de l'ancrage.
Pour un comparatif, consultez Migrer depuis Gemini 3.1 Pro.
client = genai.Client(
enterprise=True,
project="PROJECT_ID",
location="global", # Supports "global", "us", and "eu" ("global" and "us" for cyber)
)
response = client.models.generate_content(
- model="gemini-3.1-pro-preview",
+ model="gemini-4-carbon",
contents=prompt,
config=types.GenerateContentConfig(
- temperature=0.0,
- cached_content="projects/.../cachedContents/...", # Explicit caching unsupported
thinking_config=types.ThinkingConfig(
- thinking_budget=16384, # Returns HTTP 400 instead of mapping silently
- thinking_level="MINIMAL", # MINIMAL unsupported on Gemini 4 Carbon
+ thinking_level="MEDIUM", # Valid: "LOW", "MEDIUM" (default), "HIGH"
),
),
)
Pour migrer depuis gemini-3.1-pro-preview, procédez comme suit :
- Remplacez l'ID du modèle par
gemini-4-carbon(ougemini-4-carbon-cyber-permissivepour les charges de travail de cybersécurité approuvées par le programme Fairwind). - Passez à la dernière version du SDK Google Gen AI et tenez compte de la limite unifiée de jetons d'entrée et de sortie : passez à
google-genai >= 2.34.0(Python),@google/genai >= 2.32.0(JavaScript/TypeScript), Go>= 1.77.0ou Java>= 1.80.0pour la continuation automatique de l'API Interactions (ou>= 2.30.1Python />= 2.29.1JavaScript surGenerateContent). Les jetons d'entrée et de sortie (y compris le raisonnement et les appels de fonction) partagent la limite unifiée de 1 048 576 jetons. Pour les sorties dépassant 65 536 jetons (jusqu'à 1 048 576 jetons) sur l'API Interactions ouGenerateContent, définissezmax_output_tokenssur une valeur supérieure à 65 536 afin que le SDK Google Gen AI continue automatiquement sur les segments (ou utilisezbackground=trueou une bouclecontinuation_tokenpersonnalisée). - Remplacez le paramètre de budget de raisonnement : remplacez
thinking_budgetetMINIMALparthinking_leveldéfini surLOW,MEDIUM(par défaut surgemini-4-carbon) ouHIGH(par défaut surgemini-4-carbon-cyber-permissive) (utilisez"low","medium"ou"high"en minuscules sur l'API Interactions). - Supprimez la mise en cache explicite et chargez à l'avance le contenu statique de la requête (4 096 jetons ou plus) pour une mise en cache implicite automatique.
- Supprimez les paramètres qui n'ont aucun effet ou qui ne sont pas compatibles : supprimez les champs de génération ignorés et refusés comme suit :
- Supprimez
temperature,top_pettop_k, qui sont ignorés. - Supprimez
frequency_penalty,presence_penaltyet toute valeurcandidate_countsupérieure à1. - Supprimez tous les tours de modèle préremplis des historiques de conversation.
- Supprimez
Checklist récapitulative pour les développeurs
Utilisez la checklist suivante pour vérifier votre intégration 4 Carbon :
Problèmes connus
Les problèmes connus suivants s'appliquent aux décodages longs 4 Carbon :
- Les décodages longs nécessitent
v1beta1: le décodage long (continuation_token) sur l'API Interactions et l'APIGenerateContent(generateContentetstreamGenerateContent) n'est compatible qu'avec l'APIv1beta1(et nonv1) sur Agent Platform. Le SDK Google Gen AI utilisev1beta1par défaut, sauf siapi_version='v1'est défini danshttp_options(ouapi_version="v1"surinteractions.create). Pour les appels REST directs, utilisez le chemin du point de terminaison/v1beta1/. - Modifications des paramètres entre les segments de continuation de l'API Interactions : la modification de
model,system_instructionou des déclarations de fonction entre les segments de continuation renvoie une erreur HTTP400, tandis que les modifications en cours de décodage degeneration_config.thinking_levelou des outils intégrés (google_search,code_execution,url_context) ne sont pas rejetées par la validation du serveur. Conservez lesthinking_levelet les outils intégrés inchangés sur tous les segments d'une boucle de continuation.
Autres ressources
Pour en savoir plus sur 4 Carbon, consultez les ressources suivantes :