Guía para desarrolladores sobre Gemini 4 Argon

Gemini 4 Argon es el modelo de frontera de Google que se destaca en el trabajo profundo en tareas complejas del mundo real en varios dominios, como programación, finanzas, derecho, ciberseguridad y ciencia. Es el primer modelo de la familia Gemini 4.

En este documento, se abordan las novedades de 4 Argon, las convenciones de API que aplica, cómo migrar a él y una guía de inicio rápido. Para obtener una descripción general de la familia Gemini 4, consulta Comienza a usar Gemini 4.

¿Cuáles son las novedades de Gemini 4 Argon?

  • Ventana de contexto: La ventana de contexto de 1,048,576 tokens se comparte entre los tokens de entrada, pensamiento y salida.
  • Decodificaciones largas de hasta 1,048,576 tokens: Extiende la generación más allá del límite de salida de una sola solicitud (65,536 tokens para solicitudes de transmisión o 32,768 tokens para solicitudes HTTP directas que no son de transmisión) hasta 1,048,576 tokens en GenerateContent. El SDK de IA generativa de Google controla continuation_token automáticamente en las solicitudes, o bien puedes administrar continuation_token en tu propio bucle de continuación.
  • Niveles de pensamiento: LOW, MEDIUM (predeterminado en gemini-4-argon) y HIGH (predeterminado en gemini-4-argon-cyber-permissive).
  • Almacenamiento en caché implícito con almacenamiento en caché duradero: El almacenamiento en caché implícito se aplica automáticamente a los prefijos de instrucciones compartidos de 6,144 tokens o más, con el almacenamiento en caché duradero habilitado de forma predeterminada. No se admite el almacenamiento en caché de contexto explícito.
  • Comprensión de video de agentes: Está disponible de forma general y desactivada de forma predeterminada.

Guía de inicio rápido

Antes de comenzar, debes autenticarte en Agent Platform con las credenciales predeterminadas de la aplicación (ADC) o una clave de API. Consulta Comienza a usar Gemini Enterprise Agent Platform para obtener más información.

En los siguientes bloques de código, reemplaza PROJECT_ID por el ID de tu proyecto.

Instalación

Actualiza a la versión más reciente del SDK de IA generativa de Google (google-genai >= 2.30.1 para Python, @google/genai >= 2.29.1 para JavaScript, >= 1.74.0 para Go, >= 1.77.0 para Java, >= 1.26.0 para .NET o >= 1.6.0 para Kotlin):

pip install --upgrade "google-genai>=2.30.1"

Solicitud básica

Python (GenerateContent)

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

response = client.models.generate_content(
  model="gemini-4-argon",
  contents="How does AI work?",
)
print(response.text)

Python (API de Interactions)

from google import genai

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

turn1 = client.interactions.create(
    model="gemini-4-argon",
    input="Design a lock-free ring buffer in Rust for multi-producer, single-consumer telemetry ingestion.",
    store=True,
)
print(turn1.output_text)

turn2 = client.interactions.create(
    model="gemini-4-argon",
    input="Add a bounded backpressure policy and unit tests for concurrent writers.",
    previous_interaction_id=turn1.id,
)
print(turn2.output_text)

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/publishers/google/models/gemini-4-argon:generateContent \
-d '{
  "contents": {
    "role": "USER",
    "parts": { "text": "Why is the sky blue?" }
  }
}'

Resultados estructurados

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)

Decodificaciones largas

De forma predeterminada, una sola solicitud a la API genera hasta 65,536 tokens de pensamiento y salida (o 32,768 tokens para solicitudes HTTP directas que no son de transmisión). Para generar finalizaciones de hasta 1,048,576 tokens en GenerateContent (v1beta1), establece max_output_tokens en un valor superior a 65,536 (hasta 1,048,576). El SDK de IA generativa de Google sigue automáticamente continuation_token en las solicitudes cuando finish_reason es CONTINUATION (establece automatic_continuation=False en GenerateContentConfig para inhabilitar la continuación automática), o bien puedes pasar continuation_token en un bucle personalizado.

from google import genai
from google.genai import types

client = genai.Client(enterprise=True, project="PROJECT_ID", location="global")

# Automatic continuation is enabled by default in google-genai >= 2.30.1.
# Chunks across all continuation requests are yielded as a single stream.
for chunk in client.models.generate_content_stream(
    model="gemini-4-argon",
    contents="Write a complete formal proof of the prime number theorem.",
    config=types.GenerateContentConfig(
        max_output_tokens=256000,
        thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
    ),
):
    print(chunk.text, end="")

# Set automatic_continuation=False to disable automatic continuation
# and stop at a single request.
single_request_response = client.models.generate_content(
    model="gemini-4-argon",
    contents="Write a complete formal proof of the prime number theorem.",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="HIGH"),
        automatic_continuation=False,
    ),
)
print(single_request_response.text)

REST (bucle de continuación 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_FROM_REQUEST_1",
    "generationConfig": {
      "maxOutputTokens": 131072,
      "thinkingConfig": {"thinkingLevel": "HIGH"}
    }
  }'

Reglas obligatorias de la API y convenciones de comportamiento

Gemini 4 Argon aplica las siguientes convenciones:

  • Ventana de contexto y límites de salida de una sola solicitud:
    • La ventana de contexto de 1,048,576 tokens se comparte entre los tokens de entrada, pensamiento y salida. Si se establece max_output_tokens en un valor superior a 1,048,576, se muestra un error HTTP 400.
    • Para evitar finalizaciones largas no deseadas, el límite de salida predeterminado de una sola solicitud (pensamiento + respuesta del modelo) es de 65,536 tokens (o 32,768 tokens para solicitudes HTTP directas que no son de transmisión).
  • Decodificaciones largas:

    • Cómo funciona la decodificación larga: La decodificación larga divide una generación de hasta 1,048,576 tokens en varias inferencias GenerateContent. Cuando una solicitud alcanza su límite de salida por solicitud antes de finalizar, la API muestra finish_reason=CONTINUATION y un continuation_token encriptado que contiene un hash de la instrucción original y el estado de generación hasta ese punto. Incluye continuation_token en las solicitudes posteriores con la instrucción original hasta que continuation_token ya no se emita y finish_reason=STOP. (En Agent Studio, si se establece el límite de tokens de salida en un valor superior a 65,536 hasta 1,048,576, se controlan los tokens de continuación automáticamente).
    • Cuándo usar la decodificación larga: La mayoría de las solicitudes finalizan dentro del límite por solicitud (65,536 tokens o 32,768 tokens para llamadas REST que no son de transmisión). La decodificación larga le da al modelo más espacio para razonar, pero no hace que las respuestas sean más largas (usa thinking_level para controlar la profundidad del razonamiento).
    Carga de trabajo ¿Usar decodificación larga? Por qué
    Matemáticas, ciencias, investigación y pruebas formales difíciles Sí El modelo puede usar más de 65,536 tokens para explorar y verificar su razonamiento.
    Las tareas de programación y de agentes más difíciles Sí Algunas tareas necesitan más de 65,536 tokens de pensamiento y código en una respuesta. La mayoría de las tareas de programación y de agentes finalizan con menos de 65,536 tokens.
    Aprovechamientos de evaluación que se detienen en el límite de salida Sí La decodificación larga evita las respuestas cortadas cuando el modelo usa una solicitud completa de 65,536 o 32,768 tokens para pensar.
    Chat, preguntas y respuestas, resumen, clasificación y extracción No Estas tareas finalizan con mucho menos de 32,768 tokens.
    Solicitudes de una longitud fija, como "escribir un libro de 700,000 palabras" No El modelo no sigue los objetivos de longitud.
    Agentes que llaman a herramientas en muchos turnos cortos No Cada turno es corto. Las salidas grandes en cada turno llenan rápidamente la ventana compartida de entrada y salida de 1,048,576 tokens.
    Instrucciones cerca del límite de entrada de 1,048,576 tokens No La salida solo puede usar 1,048,576 tokens menos tu entrada.
    Solicitudes sensibles a la latencia No La decodificación larga puede ejecutarse durante varios minutos.
    • Cómo elegir una opción de continuación: Todas las opciones alcanzan el mismo límite de 1,048,576 tokens en gemini-4-argon y gemini-4-argon-cyber-permissive.
    Dimensión Opción 1: SDK de IA generativa de Google (recomendado) Opción 2: Tu propio bucle de transmisión (streamGenerateContent) Opción 2: Tu propio bucle que no es de transmisión (generateContent)
    Quién inicia cada segmento El SDK (automatic_continuation=True de forma predeterminada). Establece max_output_tokens en un valor superior a 65,536 (hasta 1,048,576) para salidas de más de 65,536 tokens. Tu código, en cada punto de control o después de una transmisión interrumpida Tu código, cada 32,768 tokens
    Tokens por solicitud Hasta 65,536 por segmento 65,536 por transmisión 32,768 por solicitud
    Límite de tiempo por solicitud 20 minutos 20 minutos 20 minutos
    Almacenamiento y ZDR Sin almacenamiento del servidor (compatible con ZDR) Sin almacenamiento del servidor (compatible con ZDR) Sin almacenamiento del servidor (compatible con ZDR)
    Ideal para La mayoría de las aplicaciones Llamadores de REST y aprovechamientos personalizados que transmiten Aprovechamientos de evaluación simples
    • Reglas y limitaciones de implementación:
      • v1beta1 Requisito de la API (problema conocido): La decodificación larga (continuation_token) en GenerateContent (generateContent y streamGenerateContent) solo se admite en la API de v1beta1 (no en v1). El SDK de IA generativa de Google usa v1beta1 de forma predeterminada, a menos que se especifique api_version='v1' en http_options; para las llamadas REST directas, usa la ruta de acceso del extremo v1beta1. La decodificación larga no se admite en la API de Interactions.
      • Versiones del SDK y compatibilidad con OpenAI: Actualiza a la versión más reciente del SDK de IA generativa de Google (google-genai >= 2.30.1 para Python, @google/genai >= 2.29.1 para JavaScript, >= 1.74.0 para Go, >= 1.77.0 para Java, >= 1.26.0 para .NET o >= 1.6.0 para Kotlin). Las versiones anteriores del SDK y la capa de compatibilidad con OpenAI no pueden recuperar finalizaciones largas con tokens de continuación. Para implementaciones de clientes personalizadas, consulta la implementación de referencia del SDK de IA generativa de Google.
      • Vuelve a enviar la solicitud original con continuation_token: En un bucle personalizado, establece max_output_tokens en un valor superior a 65,536 (transmisión) o 32,768 (unario) hasta 1,048,576 y vuelve a enviar el contents, system_instruction y tools originales en cada solicitud de continuación junto con el continuation_token más reciente (un campo de nivel superior en GenerateContentRequest en REST o en GenerateContentConfig en el SDK de IA generativa de Google). No agregues una salida parcial del modelo a contents ni envíes una instrucción de seguimiento para pedirle al modelo que continúe.
      • Continúa con las solicitudes de solo pensamiento: Haz un bucle mientras finish_reason sea CONTINUATION y continuation_token esté presente, incluso si una solicitud usó los 32,768 o 65,536 tokens para pensar (parts: [{"text": ""}]). Si finish_reason es MAX_TOKENS cuando continuation_token está presente, la generación alcanzó el límite de max_output_tokens solicitado. Aumenta max_output_tokens en la solicitud. Combina las partes acumuladas en un solo turno model para el historial de varios turnos solo después de STOP.
      • Recuento de tokens, compactación y descuento implícito del 95% en el caché:
        • En el SDK de IA generativa de Google para Python (generate_content y generate_content_stream), el usage_metadata de la respuesta final o del fragmento acumula los tokens facturados totales en las solicitudes de continuación. Dado que cada solicitud de continuación vuelve a completar las finalizaciones parciales anteriores como tokens de entrada, prompt_token_count aumenta de forma acumulativa en las solicitudes de continuación. No uses prompt_token_count para activar la compactación de contexto en los aprovechamientos de agentes. En su lugar, lee initial_prompt_token_count (en GenerateContentResponse o usage_metadata) y espera hasta que se complete GenerateContent (no hay continuation_token presente) antes de compactar.
        • En los bucles REST personalizados, usage_metadata es acumulativo dentro de cada solicitud. Suma el prompt_token_count, cached_content_token_count, candidates_token_count y thoughts_token_count finales en las solicitudes.
        • Cada solicitud de continuación vuelve a completar la instrucción más los tokens decodificados anteriores y recibe automáticamente el descuento implícito del 95% en el almacenamiento en caché de contexto (mínimo de 6,144 tokens) cuando las solicitudes se ejecutan de forma consecutiva dentro del TTL de caché de 15 a 20 minutos.
        • streamGenerateContent y generateContent muestran continuation_token y usage_metadata al final de cada solicitud (65,536 transmisión / 32,768 unario), y la facturación se realiza al final de la solicitud.
  • Parámetros de muestreo ignorados (temperature, top_k, top_p): El backend ignora los valores personalizados. Controla la profundidad del razonamiento con thinking_level y el formato de salida con response_schema.

  • Parámetros no admitidos (frequency_penalty, presence_penalty, candidate_count): Estos muestran un error de HTTP 400. Quítalos de tus solicitudes.

  • Almacenamiento en caché de contexto: No se admite el almacenamiento en caché de contexto explícito. El almacenamiento en caché implícito (con el almacenamiento en caché duradero habilitado de forma predeterminada) se aplica automáticamente a los prefijos de instrucciones compartidos de 6,144 tokens o más, por lo que debes colocar contenido estático al comienzo de la instrucción.

  • Video de agentes: Los videos subidos se establecen de forma predeterminada en media_processing="static". Establece media_processing="agentic" para habilitar el procesamiento de video de agentes.

  • Recuento de tokens y facturación: Se cuenta cada token que procesa el modelo y se factura, incluidos los tokens de razonamiento y las instrucciones internas del sistema de herramientas y las declaraciones de funciones cuando se usa la fundamentación. La fundamentación con la Búsqueda de Google también se sigue facturando por consulta.

  • Llamada a función:

    • Simetría de turnos: Cada FunctionResponse debe coincidir con el id, name, y el orden del FunctionCall anterior.
    • Ejecución secuencial: Prefiere los turnos de ejecución secuencial de herramientas en los bucles de herramientas de varios pasos.
    • Formato previo a la herramienta: Separa las instrucciones en línea con \n\n y evita el texto no estructurado antes de las llamadas a herramientas.
  • Validación de secuencia de chat:

    • Las cargas útiles del historial no pueden terminar con un turno de rol model.
    • No se admiten los turnos de modelo precompletados.

Migra a 4 Argon desde 3.1 Pro

El siguiente comportamiento es diferente de gemini-3.1-pro-preview:

  • La ventana de contexto es una ventana de 1,048,576 tokens compartida por la entrada, el pensamiento y la salida, en lugar de límites de entrada y salida separados. La salida de una sola solicitud está limitada a 65,536 tokens (o 32,768 tokens para solicitudes HTTP directas que no son de transmisión) y se puede extender hasta 1,048,576 tokens con decodificaciones largas en GenerateContent (que se controlan automáticamente en el SDK de IA generativa de Google o con continuation_token en bucles personalizados).
  • thinking_budget muestra un error HTTP 400 en lugar de asignarse a un nivel de pensamiento. MINIMAL también muestra un error.
  • No se admite el almacenamiento en caché de contexto explícito.
  • Se factura cada token que procesa el modelo, incluidas las instrucciones internas del sistema de herramientas y las declaraciones de funciones cuando se usa la fundamentación.

Para obtener una comparación en paralelo, consulta Migra desde Gemini 3.1 Pro.

Para migrar desde gemini-3.1-pro-preview, haz lo siguiente:

  1. Actualiza el ID del modelo a gemini-4-argon (o gemini-4-argon-cyber-permissive para cargas de trabajo de ciberseguridad aprobadas por Fairwind).
  2. Actualiza a la versión más reciente del SDK de IA generativa de Google y ten en cuenta la ventana de contexto compartida: Actualiza a google-genai >= 2.30.1 (Python) o al SDK de IA generativa de Google más reciente equivalente. Los tokens de entrada, pensamiento y salida comparten la ventana de contexto de 1,048,576 tokens. Para las salidas que superen los 65,536 tokens (hasta 1,048,576 tokens) en GenerateContent, establece max_output_tokens en un valor superior a 65,536 para que el SDK de IA generativa de Google continúe automáticamente en las solicitudes (o controla continuation_token en tu propio bucle REST).
  3. Reemplaza el parámetro de presupuesto de razonamiento: Reemplaza thinking_budget y MINIMAL por thinking_level establecido en uno de los siguientes valores:
    • HIGH: Predeterminado en gemini-4-argon-cyber-permissive. Ingeniería de software de varios archivos, pruebas formales, diseño de arquitectura y descubrimiento de vulnerabilidades.
    • MEDIUM: Predeterminado en gemini-4-argon. Programación general, uso de herramientas, preguntas y respuestas de documentos y comprensión de video.
    • LOW: Clasificación, resumen y extracción de metadatos.
  4. Quita el almacenamiento en caché explícito y carga previamente el contenido estático de la instrucción (6,144 tokens o más) para el almacenamiento en caché implícito automático.
  5. Quita los parámetros que no tienen efecto o no son compatibles:
    • Quita temperature, top_p y top_k, que se ignoran.
    • Quita candidate_count, frequency_penalty y presence_penalty.
    • Quita los turnos de modelo precompletados de los historiales de conversación.

Lista de tareas de resumen para desarrolladores

Problemas conocidos

  • Las decodificaciones largas en GenerateContent requieren v1beta1: La decodificación larga (continuation_token) en la API de GenerateContent (generateContent y streamGenerateContent) solo se admite en la API de v1beta1 (no en v1). El SDK de IA generativa de Google usa v1beta1 de forma predeterminada, a menos que se establezca api_version='v1' en http_options; para las llamadas REST directas, usa la ruta de acceso del extremo v1beta1.

Recursos adicionales