O Gemini 4 Argon é o modelo de fronteira do Google que se destaca em trabalho profundo em tarefas complexas do mundo real em domínios como programação, finanças, direito, cibersegurança e ciência. É o primeiro modelo da família Gemini 4.
Este documento aborda as novidades do 4 Argon, as convenções de API que ele aplica, como migrar para ele e um guia de início rápido. Para uma visão geral da família Gemini 4, consulte Começar a usar o Gemini 4.
Quais são as novidades do Gemini 4 Argon?
- Limite unificado de tokens de entrada e saída: o 4 Argon tem um limite unificado de 1.048.576 tokens que inclui tokens de entrada e saída (em que a saída inclui pensamento, chamadas de função e a resposta final).
- Decodificações longas de até 1.048.576 tokens: estende a geração além do
limite de saída de solicitação única (65.536 tokens ao fazer streaming ou 32.768 tokens
para solicitações em primeiro plano que não são de streaming) até 1.048.576 tokens (menos os
tokens de entrada) na API Interactions
e no
GenerateContent(v1beta1). O SDK de IA generativa do Google processacontinuation_tokenautomaticamente em todos os segmentos, ou você pode executar decodificações em segundo plano assíncronas gerenciadas pelo servidor (background=true) ou gerenciarcontinuation_tokenem um loop de continuação personalizado. - Níveis de raciocínio:
LOW,MEDIUM(padrão nogemini-4-argon) eHIGH(padrão nogemini-4-argon-cyber-permissive). - Armazenamento em cache implícito com armazenamento em cache durável: o armazenamento em cache implícito é aplicado automaticamente a prefixos de comandos compartilhados de 4.096 tokens ou mais, com o armazenamento em cache durável ativado por padrão. Não há suporte para o armazenamento em cache de contexto explícito.
- Compreensão agêntica de vídeos: em disponibilidade geral e desativada por padrão.
Guia de início rápido
Antes de começar, autentique-se na Agent Platform usando o Application Default Credentials (ADC) ou uma chave de API. Consulte Começar a usar a Gemini Enterprise Agent Platform para mais informações.
Nos blocos de código a seguir, substitua PROJECT_ID pelo ID do projeto.
Teste no Agent Studio
Para testar comandos e configurar gemini-4-argon na UI do Agent Studio:
- Abra o Agent Studio
no seu projeto do Google Cloud e selecione
gemini-4-argonno grupo do Gemini. - Em Configurações do modelo, configure:
- Nível de raciocínio: escolha
Low,Medium(padrão) ouHigh. - Região: selecione
Global,usoueu. - Limite de tokens de saída: defina entre
32,768e1,048,576(1,048,576é o padrão). O Agent Studio processa tokens de continuação automaticamente para respostas que excedem o limite de uma única solicitação.
- Nível de raciocínio: escolha
Instalação
Faça upgrade para o SDK de IA generativa do Google mais recente. A continuação automática na
API Interactions requer google-genai >= 2.34.0 para Python,
@google/genai >= 2.32.0 para JavaScript/TypeScript, >= 1.77.0 para Go ou
>= 1.80.0 para Java (no GenerateContent, a continuação automática requer
>= 2.30.1 para Python, >= 2.29.1 para JavaScript/TypeScript, >= 1.74.0 para
Go, >= 1.77.0 para Java, >= 1.26.0 para .NET ou >= 1.6.0 para Kotlin):
pip install --upgrade "google-genai>=2.34.0"
Solicitação básica
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-argon",
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-argon",
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-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 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-argon:generateContent" \
-d '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "Provide an architectural review of this Go interface."
}
]
}
],
"generationConfig": {
"thinkingConfig": {
"thinkingLevel": "MEDIUM"
}
}
}'
Resposta estruturada
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)
Exemplos de decodificação longa
Por padrão, um único segmento de API em primeiro plano gera até 65.536 tokens de saída
ao fazer streaming ou 32.768 tokens de saída ao não fazer streaming, em que a saída inclui
pensamento, chamadas de função e a resposta final. Para gerar conclusões de até
1.048.576 tokens (menos os tokens de entrada), use decodificações longas na
API Interactions ou na
GenerateContent. Para opções de continuação, transições de status e regras de validação, consulte Decodificações longas.
Usar decodificações longas com a API Interactions
Em google-genai >= 2.34.0 (Python), @google/genai >= 2.32.0
(JavaScript/TypeScript), Go >= 1.77.0 e Java >= 1.80.0,
interactions.create() segue automaticamente continuation_token entre
segmentos sempre que um segmento retorna status="requires_continuation". Também é possível
desativar (automatic_continuation=False) para executar um loop personalizado armazenado
(store=True) ou sem estado (store=False):
Python (SDK automático)
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-argon",
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-argon",
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-argon",
input="Write a complete formal proof of the prime number theorem.",
generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
automatic_continuation=False,
)
Python (loop personalizado)
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-argon",
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-argon",
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-argon",
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-argon",
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-argon",
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 (armazenado)
# 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-argon",
"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-argon",
"store": true,
"previous_interaction_id": "SEGMENT_1_ID",
"continuation_token": "CONTINUATION_TOKEN",
"generation_config": {
"max_output_tokens": 131072,
"thinking_level": "high"
}
}'
REST (sem estado)
# 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-argon",
"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-argon",
"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"
}
}'
Para execução assíncrona gerenciada pelo servidor (background=True com store=True)
ou recuperação de checkpoints de streaming (eventos interaction.status_update
emitidos em 32.768 tokens de saída e a cada 5.000 tokens depois disso), use os
seguintes padrões:
Python (segundo plano)
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-argon",
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-argon",
# previous_interaction_id=cancelled.id,
# continuation_token=cancelled.continuation_token,
# background=True,
# generation_config={"max_output_tokens": 256000, "thinking_level": "high"},
# )
REST (segundo plano)
# 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-argon",
"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-argon",
"background": true,
"store": true,
"previous_interaction_id": "INTERACTION_ID",
"continuation_token": "CONTINUATION_TOKEN",
"generation_config": {
"max_output_tokens": 256000,
"thinking_level": "high"
}
}'
Python (pontos de verificação 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-argon",
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-argon",
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 (checkpoints 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-argon",
"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-argon",
"stream": true,
"store": true,
"previous_interaction_id": "SEGMENT_ID",
"continuation_token": "CHECKPOINT_CONTINUATION_TOKEN",
"generation_config": {
"max_output_tokens": 256000,
"thinking_level": "high"
}
}'
Usar decodificações longas com GenerateContent
No GenerateContent (v1beta1), defina max_output_tokens como maior que 65.536
para solicitações de streaming ou maior que 32.768 para solicitações que não são de streaming (até
1.048.576). O SDK de IA generativa do Google segue automaticamente
continuation_token em todos os segmentos quando finish_reason é CONTINUATION
(defina automatic_continuation=False em GenerateContentConfig para desativar) ou
você pode transmitir continuation_token em um loop personalizado:
Python (SDK - Recomendado)
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.
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(
thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
automatic_continuation=False,
),
):
print(chunk.text, end="")
REST (loop de continuação personalizado)
# 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",
"generationConfig": {
"maxOutputTokens": 131072,
"thinkingConfig": {"thinkingLevel": "HIGH"}
}
}'
Regras obrigatórias de API e convenções comportamentais
O 4 Argon aplica as convenções nas seções a seguir para níveis de pensamento, limites de tokens, armazenamento em cache, parâmetros de geração e execução de ferramentas em várias interações.
Níveis de raciocínio
O Argon 4 é compatível com três valores thinking_level
(thinking_budget e MINIMAL retornam um erro de validação HTTP 400). A tabela a seguir lista cada nível de pensamento e as cargas de trabalho recomendadas:
| Nível de raciocínio | Cargas de trabalho recomendadas |
|---|---|
HIGH (padrão em gemini-4-argon-cyber-permissive) |
Engenharia de software de vários arquivos, provas formais, design de arquitetura e descoberta de vulnerabilidades. |
MEDIUM (padrão em gemini-4-argon) |
Programação geral, uso de ferramentas, perguntas e respostas sobre documentos e compreensão de vídeos. |
LOW |
Classificação, resumo e extração de metadados. |
Limites de tokens, armazenamento em cache e faturamento
4 O Argon aplica as seguintes regras de token, armazenamento em cache, mídia e faturamento:
- Limite unificado de tokens de entrada e saída e limites de saída de solicitação única:
os orçamentos de tokens e os limites por solicitação funcionam da seguinte maneira:
- O limite geral de tokens do modelo é de
1,048,576tokens e inclui tokens de entrada e saída (em que a saída inclui raciocínio, chamadas de função e a resposta final).max_output_tokenscontrola o limite de tokens de saída para a geração (até1,048,576menos os tokens de entrada). Definirmax_output_tokenscomo maior que1,048,576retorna um erro HTTP400. - Para evitar conclusões longas não intencionais, o limite padrão de saída de solicitação única (processamento + resposta do modelo) é de 65.536 tokens (ou 32.768 tokens para solicitações HTTP diretas sem streaming).
- O limite geral de tokens do modelo é de
- Decodificações longas: as respostas em primeiro plano de segmento único geram até 65.536
tokens de saída ao fazer streaming ou 32.768 tokens de saída ao não fazer streaming. Para
estender a saída de turno único até 1.048.576 tokens (menos tokens de entrada) na
API Interactions ou
GenerateContent(v1beta1), consulte Decodificações longas. - Armazenamento em cache de contexto: não há suporte para o armazenamento em cache de contexto explícito. O armazenamento em cache implícito (com o armazenamento em cache durável ativado por padrão) é aplicado automaticamente a prefixos de comando compartilhados de 4.096 tokens ou mais. Portanto, coloque o conteúdo estático no início do comando.
- Vídeo agêntico: os vídeos enviados usam
media_processing="static"como padrão. Definamedia_processing="agentic"como ativado para processamento agêntico de vídeos. - Contagem e faturamento de tokens: cada token processado pelo modelo é contado e faturado, incluindo tokens de raciocínio, instruções do sistema de ferramentas internas e declarações de função ao usar o embasamento. O embasamento com a Pesquisa Google também continua sendo cobrado por consulta.
Parâmetros, chamada de função e validação de chat
O 4 Argon aplica as seguintes regras para parâmetros de geração, chamadas de ferramentas e histórico de conversas:
- Parâmetros de amostragem ignorados (
temperature,top_k,top_p): o back-end ignora valores personalizados. Controle a profundidade do raciocínio comthinking_levele o formato de saída comresponse_schema. - Parâmetros não aceitos (
frequency_penalty,presence_penalty,candidate_count): retornam um erro de HTTP400. Remova-os das suas solicitações. Chamada de função: as declarações de ferramentas e as rodadas de execução seguem estas regras:
- Simetria de turno: cada
FunctionResponseprecisa corresponder aoid,namee à ordem doFunctionCallanterior. - Execução sequencial: priorize as execuções sequenciais de ferramentas em loops de ferramentas de várias etapas.
Formatação pré-ferramenta: separe as instruções inline com
\n\ne evite texto não estruturado antes das chamadas de ferramenta. Para registrar o estado intermediário antes de uma chamada de ferramenta, use uma declaração de função dedicada:{ "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"] } }
- Simetria de turno: cada
Validação da sequência de conversa: os payloads de conversa multiturno aplicam as seguintes restrições:
- Os payloads de histórico não podem terminar com uma vez de função
model. - Não há suporte para turnos de modelo preenchidos automaticamente.
- Os payloads de histórico não podem terminar com uma vez de função
Decodificações longas
A decodificação longa divide uma geração de até 1.048.576 tokens (menos os tokens de entrada)
em vários segmentos na
API Interactions ou
GenerateContent (v1beta1). Na API Interactions, cada segmento em primeiro plano
gera até 65.536 tokens de saída ao fazer streaming (stream=true) ou
32.768 tokens de saída ao não fazer streaming (stream=false) e retorna
status="requires_continuation" com um continuation_token criptografado. Se preferir,
defina background=true (store=true) para que o servidor execute o loop de continuação
de forma assíncrona e armazene a saída mesclada em um Interaction. No
GenerateContent, os segmentos de streaming geram até 65.536 tokens de saída, e
os segmentos que não são de streaming geram até 32.768 tokens de saída antes de emitir
finish_reason=CONTINUATION com continuation_token, continuando até
finish_reason=STOP. No Agent Studio, definir o limite de tokens de saída acima
de 65.536 até 1.048.576 processa os tokens de continuação automaticamente. Para
exemplos de código executáveis, consulte os
exemplos do guia de início rápido de decodificação longa.
Quando usar a decodificação longa
A maioria das solicitações é concluída dentro do limite por solicitação (65.536 tokens ou 32.768
tokens para chamadas REST sem streaming). Use a decodificação longa somente quando uma resposta
precisar de mais saída do que isso. A decodificação longa dá ao modelo mais espaço para raciocinar, mas
não torna as respostas mais longas (use thinking_level para controlar a profundidade do raciocínio).
| Carga de trabalho | Usar decodificação longa? | Por quê? |
|---|---|---|
| Matemática, ciência, pesquisa e provas formais complexas | Sim | O modelo pode gastar mais de 65.536 tokens para explorar e verificar o raciocínio. |
| As tarefas agênticas e de programação mais difíceis | Sim | Algumas tarefas precisam de mais de 65.536 tokens de raciocínio e código em uma única resposta. A maioria das tarefas de programação e agênticas é concluída com menos de 65.536 tokens. |
| Ambientes de avaliação que param no limite de saída | Sim | A decodificação longa evita respostas cortadas quando o modelo gasta uma solicitação inteira de 65.536 ou 32.768 tokens no raciocínio. |
| Chat, perguntas e respostas, resumo, classificação e extração | Não | Essas tarefas são concluídas com bem menos de 32.768 tokens. |
| Solicitações de tamanho fixo, como "Escreva um livro de 700.000 palavras" | Não | O modelo não segue as metas de tamanho. |
| Agentes que chamam ferramentas em muitas interações curtas | Não | Cada turno é curto. As saídas grandes em cada turno preenchem rapidamente o limite unificado de 1.048.576 tokens de entrada e saída. |
| Comandos próximos ao limite de entrada de 1.048.576 tokens | Não | A saída pode usar apenas 1.048.576 tokens menos sua entrada. |
| Solicitações sensíveis à latência | Não | A decodificação longa pode levar vários minutos. |
Escolha uma opção de continuação
Selecione um padrão de continuação com base na superfície da API, na postura de armazenamento e no
ambiente de execução. Todas as opções na tabela a seguir atingem o mesmo
limite de 1.048.576 tokens (menos tokens de entrada) em gemini-4-argon
e gemini-4-argon-cyber-permissive.
| Opção de continuação | Superfície da API | Quem inicia cada segmento | Tokens por segmento | Limite de tempo por solicitação | Armazenamento do servidor | Ideal para |
|---|---|---|---|---|---|---|
| Continuação automática do SDK de IA generativa do Google (recomendado) | API Interactions (v1beta1) |
SDKs de IA generativa do Google: Python (google-genai >= 2.34.0), JavaScript/TypeScript (@google/genai >= 2.32.0), Go (>= 1.77.0) e Java (>= 1.80.0) |
Até 65.536 (stream=true) ou 32.768 (stream=false) |
20 minutos por segmento | Armazenamento de sete dias no servidor por padrão (store=true) ou nenhum (store=false) |
A maioria dos aplicativos da API Interactions com ou sem estado |
Loop em segundo plano gerenciado pelo servidor (background=true) |
API Interactions (v1beta1) |
Loop do servidor da Agent Platform; seu código faz uma sondagem em get |
Gerenciado do lado do servidor até max_output_tokens |
Assíncrono (não é necessário abrir um stream de cliente) | Armazenamento do servidor por sete dias (store=true necessário) |
Jobs assíncronos, autores de chamadas em outras linguagens por REST e persistência de registro único |
Loop armazenado em primeiro plano personalizado (store=true) |
API Interactions (v1beta1) |
Seu código (previous_interaction_id + continuation_token, sem input) |
Até 65.536 (stream=true, checkpoints a cada 5.000 tokens após 32.768) ou 32.768 (stream=false) |
20 minutos por segmento | Armazenamento de sete dias no servidor (store=true) |
Chamadores REST e recuperação de checkpoint personalizada |
Loop personalizado sem estado em primeiro plano (store=false) |
API Interactions (v1beta1) |
Seu código (input + continuation_token original, sem previous_interaction_id) |
Até 65.536 (stream=true, checkpoints a cada 5.000 tokens após 32.768) ou 32.768 (stream=false) |
20 minutos por segmento | Sem armazenamento no servidor (fluxos de trabalho de retenção zero de dados) | Harnesses REST personalizados que exigem execução sem estado |
| Continuação automática do SDK de IA generativa do Google (recomendado) | GenerateContent (v1beta1) |
SDKs de IA generativa do Google: Python (>= 2.30.1), JavaScript/TypeScript (>= 2.29.1), Go (>= 1.74.0), Java (>= 1.77.0), .NET (>= 1.26.0) e Kotlin (>= 1.6.0) |
Até 65.536 (generate_content_stream) ou 32.768 (generate_content) |
20 minutos por segmento | Sem armazenamento no servidor (fluxos de trabalho de retenção zero de dados) | Aplicativos GenerateContent atuais |
| Loop de continuação personalizado | GenerateContent (v1beta1) |
Seu código (contents original + continuation_token) |
Até 65.536 (streamGenerateContent, checkpoints a cada 5.000 tokens após 32.768) ou 32.768 (generateContent) |
20 minutos por segmento | Sem armazenamento no servidor (fluxos de trabalho de retenção zero de dados) | Chamadores REST GenerateContent diretos e harnesses de avaliação |
Versão da API e requisitos do SDK
As decodificações longas exigem as seguintes versões de API e do SDK:
- Requisito da API
v1beta1(problema conhecido): a decodificação longa (continuation_token) na API Interactions eGenerateContent(generateContentestreamGenerateContent) só é compatível com a APIv1beta1(nãov1) na Agent Platform. O SDK de IA generativa do Google usav1beta1por padrão, a menos queapi_version='v1'seja especificado emhttp_options(ouapi_version="v1"eminteractions.create). Para chamadas REST diretas, use o caminho do endpoint/v1beta1/. - Versões do SDK e compatibilidade com a OpenAI: para continuar automaticamente na API Interactions, faça upgrade para Python
google-genai >= 2.34.0, JavaScript/TypeScript@google/genai >= 2.32.0, Go>= 1.77.0ou Java>= 1.80.0. Para outras linguagens na API Interactions, chame a API REST diretamente combackground=trueou um loop de continuação personalizado. Para continuar automaticamente noGenerateContent, faça upgrade para o 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. As versões anteriores do SDK e a camada de compatibilidade com a OpenAI não podem recuperar conclusões longas usando tokens de continuação.
Regras de continuação da API Interactions
As seguintes transições de status, regras de encadeamento e comportamentos de armazenamento se aplicam a decodificações longas na API Interactions.
Valores de status e orçamento de tokens de saída
Quando generation_config.max_output_tokens é omitido em uma solicitação de API Interactions, o orçamento total de saída é definido como 65.536 tokens por padrão. Assim, uma chamada sem streaming é interrompida em 32.768 tokens com status="requires_continuation", e um segundo segmento pode gerar os 32.768 tokens restantes. Defina generation_config.max_output_tokens como até
1,048,576 (menos tokens de entrada) para decodificações mais longas nos modos de primeiro plano e
background=true. O servidor retorna os seguintes valores de status:
requires_continuation: o limite de saída por segmento (32.768 sem streaming ou 65.536 com streaming) foi atingido antes demax_output_tokens. Transmita ocontinuation_tokenretornado na próxima solicitação para continuar a decodificação.incomplete: o orçamento total demax_output_tokensfoi esgotado. Continuar comcontinuation_tokensem aumentarmax_output_tokensretorna um erro HTTP400(max_output_tokens has already been exhausted). Aumentemax_output_tokensna próxima solicitação para retomar a decodificação.completed: a geração foi concluída naturalmente econtinuation_tokenfoi limpo.
Encadeamento, alternância de modo e armazenamento de segmentos
As solicitações de continuação na API Interactions aplicam as seguintes regras:
- Continuação armazenada (
store=true, padrão): transmitaprevious_interaction_iddefinido como o segmentoidque emitiu ocontinuation_tokenjunto comcontinuation_tokene omitainput(o segmento armazenado já contém a entrada de turno). Sempre pareie cadacontinuation_tokencom oprevious_interaction_iddo segmento que o emitiu. Transmitir umcontinuation_tokenem uma interação jácompletedretorna um erro HTTP400. - Continuação sem estado (
store=false): omitaprevious_interaction_ide reenvie oinputoriginal comcontinuation_tokenem cada segmento. - Alternar os modos
storeentre os segmentos: é possível alternar do modo armazenado (store=true) para o sem estado (store=false) no meio da decodificação omitindoprevious_interaction_ide reenviando oinputoriginal comcontinuation_token. Não é possível mudar de sem estado (store=false) para armazenada (store=true) porque não há uma interação pai armazenada paraprevious_interaction_id. - Alternância e ramificação de modo em primeiro plano e
background=true: as continuações armazenadas (store=true) podem alternar entre a execução em primeiro plano (background=false) e em segundo plano (background=true) em todos os segmentos, incluindo a retomada de uma interaçãobackground=truecancelada do checkpointcontinuation_token(persistente após 32.768 tokens de saída) no modo em segundo plano ou em primeiro plano. Reutilizar os mesmosprevious_interaction_idecontinuation_tokencria continuações ramificadas independentes. - Aplicação de limite de turno: iniciar um novo turno do usuário
(
previous_interaction_idcom um novoinpute semcontinuation_token) em um segmento com o statusrequires_continuationouincompleteretorna um erro HTTP400. Termine de continuar a decodificação paracompletedou ramifique sua próxima vez na interação mais recente decompleted. Quando o segmento final chegar acompleted, transmitir oiddesse segmento final comoprevious_interaction_idvai reconstruir o histórico completo da conversa em todos os segmentos anteriores. - Consistência de parâmetros entre segmentos: alterar
model,system_instructionou declarações de função (tools) em um segmento de continuação retorna um erro HTTP400. Mantenhathinking_levele as ferramentas integradas inalteradas em todos os segmentos (consulte Problemas conhecidos). - Comportamento de segmento único
get,listedelete: no modo de primeiro plano (background=false), cada segmento é armazenado como um recursoInteractionseparado (interactions.get(id)retorna apenas esse segmento,interactions.list()lista cada segmento separadamente einteractions.delete(id)exclui apenas esse segmento; ao excluir uma cadeia de segmentos, exclua na ordem inversa, do último segmento para trás). No SDK de IA generativa do Google comautomatic_continuation=True(stream=False),interactions.create()mescla todos os segmentos no retorno e preencheinteraction.continuation_idscom os IDs de segmento ordenados (terminando cominteraction.id). Se um segmento posterior falhar, exceder umtimeoutnumérico por chamada ou cair no meio do stream depois que o progresso tiver sido feito além de um ponto de verificação retomável, o SDK vai gerarContinuationInterruptedErrorcompartial_interaction,continuation_token,interaction_idecontinuation_idspara que você possa retomar decontinuation_token.
Regras de loop personalizado do GenerateContent
Em um loop de continuação GenerateContent personalizado, siga estas regras:
- Defina
max_output_tokenscomo um valor maior que 65.536 (streaming) ou 32.768 (não streaming) até 1.048.576 e reenvie os valores originais decontents,system_instructionetoolsem cada solicitação de continuação, junto com ocontinuation_tokenmais recente (um campo de nível superior emGenerateContentRequestna REST ou emGenerateContentConfigno SDK de IA Generativa do Google). - Não anexe a saída parcial do modelo a
contentsnem envie um comando de acompanhamento pedindo que o modelo continue. - Continue o loop enquanto
finish_reasonforCONTINUATIONecontinuation_tokenestiver presente, mesmo que um segmento tenha gasto todos os 32.768 ou 65.536 tokens em raciocínio (parts: [{"text": ""}]). Sefinish_reasonforMAX_TOKENSquandocontinuation_tokenestiver presente, geremax_output_tokensna próxima solicitação. - Combine as partes acumuladas em uma única rodada
modelpara o histórico de várias rodadas somente apósSTOP.
Contagem de tokens, compactação e armazenamento em cache implícito
A contabilização e o armazenamento em cache de tokens em segmentos de continuação funcionam da seguinte maneira:
- Na API Interactions, as chamadas
interactions.create()que não são de streaming comautomatic_continuation=Truee as interaçõesbackground=truegerenciadas pelo servidor somam as contagens de tokens em todos os segmentos emusage(total_input_tokens,total_cached_tokens,total_output_tokens,total_thought_tokens,total_tokens), preservando a contagem de comandos do primeiro segmento emusage.initial_input_tokens. Em loops personalizados em primeiro plano e eventosinteraction.completedtransmitidos, ousagede cada segmento informa apenas o delta desse segmento. Portanto, some os camposusageem todos os segmentos para ver o total de tokens faturados. - No
GenerateContent, o SDK de IA generativa do Google para Python (generate_contentegenerate_content_stream) acumula o total de tokens faturados em todos os segmentos nousage_metadatafinal e preservainitial_prompt_token_count. Em loops REST personalizados, some os valores finais deprompt_token_count,cached_content_token_count,candidates_token_countethoughts_token_countem todos os segmentos. - Como cada segmento de continuação em primeiro plano preenche novamente a conversa
e os tokens gerados anteriormente como entrada,
usage.total_input_tokens(na API Interactions) eprompt_token_count(emGenerateContent) aumentam entre os segmentos. Não use contagens de entrada cumulativas para acionar a compactação de contexto em estruturas de agentes. Em vez disso, verifiqueusage.initial_input_tokens(ouinitial_prompt_token_countemGenerateContent) e compacte somente após o término da rodada (status="completed"ou semcontinuation_token). - Cada segmento de continuação preenche novamente o comando e os tokens decodificados anteriormente e recebe automaticamente o desconto de 95% de armazenamento em cache de contexto implícito (mínimo de 4.096 tokens) quando os segmentos são executados consecutivamente dentro do TTL de cache de 15 a 20 minutos. Os segmentos concluídos são faturados no final de cada segmento, mesmo que um segmento posterior falhe ou seja cancelado.
Migre do 3.1 Pro para o 4 Argon
O comportamento a seguir é diferente de gemini-3.1-pro-preview:
- 4 O Argon tem um limite unificado de 1.048.576 tokens para
entrada e saída (em que a saída inclui raciocínio, chamadas de função e a
resposta final), em vez de limites separados para entrada e saída. A saída de solicitação única é limitada a 65.536 tokens ao fazer streaming (ou 32.768 tokens para solicitações em primeiro plano que não são de streaming) e pode ser estendida para até 1.048.576 tokens usando decodificações longas na API Interactions ou
GenerateContent(processada automaticamente no SDK de IA generativa do Google, combackground=truena API Interactions ou usandocontinuation_tokenem loops personalizados). thinking_budgetretorna um erro HTTP400em vez de ser mapeado para um nível de pensamento.MINIMALtambém retorna um erro.- Não há suporte para o armazenamento em cache de contexto explícito.
- Cada token processado pelo modelo é faturado, incluindo instruções internas do sistema de ferramentas e declarações de função ao usar o embasamento.
Para uma comparação lado a lado, consulte Migrar do Gemini 3.1 Pro.
client = genai.Client(
enterprise=True,
project="PROJECT_ID",
location="global", # Supports "global", "us", and "eu"
)
response = client.models.generate_content(
- model="gemini-3.1-pro-preview",
+ model="gemini-4-argon",
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 Argon
+ thinking_level="MEDIUM", # Valid: "LOW", "MEDIUM" (default), "HIGH"
),
),
)
Para migrar do gemini-3.1-pro-preview, faça o seguinte:
- Atualize o ID do modelo para
gemini-4-argon(ougemini-4-argon-cyber-permissivepara cargas de trabalho de cibersegurança aprovadas pelo Fairwind). - Faça upgrade para o SDK de IA generativa do Google mais recente e considere o limite unificado de tokens de entrada e saída: faça upgrade para
google-genai >= 2.34.0(Python),@google/genai >= 2.32.0(JavaScript/TypeScript), Go>= 1.77.0ou Java>= 1.80.0para a continuação automática da API Interactions (ou>= 2.30.1Python />= 2.29.1JavaScript emGenerateContent). Os tokens de entrada e saída (incluindo pensamento e chamadas de função) compartilham o limite unificado de 1.048.576 tokens. Para saídas que excedem 65.536 tokens (até 1.048.576 tokens) na API Interactions ouGenerateContent, definamax_output_tokenscomo um valor maior que 65.536 para que o SDK de IA generativa do Google continue automaticamente entre os segmentos (ou usebackground=trueou um loopcontinuation_tokenpersonalizado). - Substitua o parâmetro de limite de raciocínio: substitua
thinking_budgeteMINIMALporthinking_leveldefinido comoLOW,MEDIUM(padrão emgemini-4-argon) ouHIGH(padrão emgemini-4-argon-cyber-permissive) (use"low","medium"ou"high"em minúsculas na API Interactions). - Remova o armazenamento em cache explícito e carregue o conteúdo estático do comando (4.096 tokens ou mais) para o armazenamento em cache implícito automático.
- Remova os parâmetros que não têm efeito ou não são compatíveis: remova os campos de geração ignorados e rejeitados da seguinte maneira:
- Remova
temperature,top_petop_k, que são ignorados. candidate_count,frequency_penaltyepresence_penaltyforam removidos.- Remova todos os turnos de modelo preenchidos automaticamente dos históricos de conversas.
- Remova
Lista de verificação de resumo para desenvolvedores
Problemas conhecidos
Os seguintes problemas conhecidos se aplicam a 4 decodificações longas do Argon:
- As decodificações longas exigem
v1beta1: a decodificação longa (continuation_token) na API Interactions e na APIGenerateContent(generateContentestreamGenerateContent) só é compatível com a APIv1beta1(nãov1) na plataforma de agentes. O SDK de IA generativa do Google usav1beta1por padrão, a menos queapi_version='v1'esteja definido emhttp_options(ouapi_version="v1"eminteractions.create). Para chamadas REST diretas, use o caminho do endpoint/v1beta1/. - Mudanças de parâmetros em segmentos de continuação da API
Interactions: mudar
model,system_instructionou declarações de função em segmentos de continuação retorna um erro HTTP400, enquanto mudanças no meio da decodificação emgeneration_config.thinking_levelou ferramentas integradas (google_search,code_execution,url_context) não são rejeitadas pela validação do servidor. Mantenha as ferramentas integradas ethinking_levelinalteradas em todos os segmentos de um loop de continuação.
Outros recursos
- Página do modelo Gemini 4 Argon
- Comece a usar o Gemini 4
- Notebook introdutório
- Gemini 4 Argon Cyber Permissive