Novedades de Gemini 3.5 Flash

Gemini 3.5 Flash tiene disponibilidad general (DG), es estable y está listo para su uso en producción a gran escala. Como nuestro modelo Flash más inteligente, ofrece un rendimiento de vanguardia sostenido en la ejecución de agentes, la programación y las tareas a largo plazo a gran escala.

En esta guía, se incluye una descripción general de las mejoras, los cambios en la API y la orientación para la migración de Gemini 3.5 Flash.

Modelo nuevo

Modelo ID de modelo Descripción
Gemini 3.5 Flash gemini-3.5-flash Es nuestro modelo más inteligente para un rendimiento de frontera sostenido en tareas de agentes y programación.

Gemini 3.5 Flash admite la ventana de contexto de 1 millón de tokens, un máximo de 65,000 tokens de salida, razonamiento y el mismo conjunto de herramientas y funciones de la plataforma que Gemini 3 Flash. Por el momento, no se admite Uso del equipo.

Para ver las especificaciones completas, consulta la descripción general de los modelos. Para conocer los precios, consulta la página de precios.

Guía de inicio rápido

Todos los ejemplos de esta guía usan la API de GenerateContent. También se admite la API de Interactions, y se aplican las mismas opciones de configuración y recomendaciones.

Python

from google import genai

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Explain how parallel agentic execution works in three sentences.",
)
print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.5-flash",
    contents: "Explain how parallel agentic execution works in three sentences.",
  });
  console.log(response.text);
}

main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Explain how parallel agentic execution works in three sentences."}]
    }]
  }'

Novedades

  • Rendimiento de vanguardia sostenido: Nuestro modelo Flash más inteligente, optimizado para tareas de agente y programación a gran escala.
  • Ejecución de agente: Implementación de agentes secundarios, resolución de problemas y bucles de agente rápidos a gran escala.
  • Codificación: Ciclos de codificación iterativos, exploración rápida y creación de prototipos para probar rutas alternativas y explorar soluciones de forma dinámica
  • Largo plazo: Flujos de trabajo de varios pasos y uso de herramientas a gran escala
  • Conservación del pensamiento: El modelo mantiene el razonamiento intermedio en las conversaciones de varios turnos de forma automática. No se necesitan cambios en la API.
  • Nuevo nivel de esfuerzo predeterminado: El esfuerzo de pensamiento predeterminado cambió de high a medium. Consulta Nuevo nivel de esfuerzo predeterminado para obtener más detalles.
  • Mejora en el razonamiento de low: low ahora es significativamente mejor para las tareas de código y de agente que requieren menos pasos, y ofrece una gran calidad con menor latencia y costo.
  • Versión de DG: Es un modelo estable para el uso de producción a gran escala.

Cambios de comportamiento

Nuevo nivel de esfuerzo predeterminado: medium

El esfuerzo de pensamiento predeterminado ahora es medium, que cambió de high en la versión preliminar de Gemini 3 Flash. medium produce resultados muy buenos en una amplia variedad de tareas, además de ser más rápido y rentable. Para problemas complejos, high alienta al modelo a pensar de manera más profunda.

Nivel de esfuerzo Cuándo debe utilizarse
minimal Optimizado para la velocidad de respuesta. Casos de uso similares a los de un chat, respuestas rápidas basadas en hechos y llamadas a herramientas más sencillas
low Tareas de código y de agentes que requieren una latencia más baja y menos pasos. También funciona bien para tareas de análisis y escritura que requieren algo de reflexión.
medium (predeterminado) Mejor calidad para la mayoría de las tareas. Se recomienda para casos de uso complejos de código y agentes.
high Maximiza la capacidad del modelo para pensar y usar herramientas. Ideal para razonamiento complejo, matemáticas difíciles y las tareas de código o de agente más difíciles. Permite pensamientos extendidos y llamadas a funciones.

Para anular el valor predeterminado, establece thinking_level en tu configuración:

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Prove that the square root of 2 is irrational.",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="high")
    ),
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.5-flash",
    contents: "Prove that the square root of 2 is irrational.",
    config: {
      thinkingConfig: {
        thinkingLevel: "HIGH",
      },
    },
  });
  console.log(response.text);
}

main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Prove that the square root of 2 is irrational."}]
    }],
    "generationConfig": {
      "thinkingConfig": {
        "thinkingLevel": "HIGH"
      }
    }
  }'

Preservación del pensamiento

El modelo mantiene el razonamiento intermedio en las conversaciones de varios turnos automáticamente. Cuando está presente en el historial de conversaciones, el contexto de razonamiento se mantiene, lo que mejora el rendimiento en tareas complejas de varios pasos, como la depuración iterativa y la refactorización de código. No se necesitan cambios en la API:

  • API de Interactions: Los pensamientos ya se conservan automáticamente. No hay cambios en el comportamiento.
  • API de GenerateContent: A partir de Gemini 3.5 Flash, el modelo usa el contexto de razonamiento de todos los turnos anteriores cuando hay firmas de pensamiento en el historial de la conversación. Para habilitar esta opción, pasa el historial de conversación completo y sin modificar (incluidas las firmas de pensamiento) en contents. Los SDKs controlan esto automáticamente.

Actualizaciones de parámetros y prácticas recomendadas en Gemini 3.x

Las siguientes condiciones se aplican a todos los modelos de Gemini 3.x, incluido Gemini 3.5 Flash.

  • temperature, top_p, top_k: Te recomendamos que no cambies los valores predeterminados. Las capacidades de razonamiento de Gemini 3 están optimizadas para la configuración predeterminada.
  • excepto porque se usa thinking_level en lugar de thinking_budget.
  • Coincidencia de la respuesta de llamada a función: id, name y el recuento de respuestas deben coincidir con las llamadas anteriores.
  • Respuestas de funciones multimodales: Incluye contenido multimodal dentro de la respuesta de la función, no fuera de ella.
  • Instrucciones intercaladas en las respuestas de funciones: Se agregan al texto de respuesta de la función, no como partes separadas.
  • Reduce las llamadas a herramientas innecesarias: Usa niveles de pensamiento más bajos o experimenta con instrucciones del sistema para reducir las llamadas a herramientas en los flujos de trabajo basados en agentes.

Consulta las siguientes secciones para saber cómo actualizar tu código.

Parámetros de muestreo (ya no se recomiendan)

Ya no se recomiendan temperature, top_p y top_k para todos los modelos de Gemini 3.x. Las capacidades de razonamiento de Gemini 3 están optimizadas para la configuración predeterminada. Quita estos parámetros de todas las solicitudes.

# ⚠️ Remove these parameters (not recommended)
config = types.GenerateContentConfig(
    temperature=0.7,
    top_p=0.9,
    top_k=40
)

Para garantizar el determinismo, te recomendamos que definas una instrucción del sistema con reglas explícitas para tu caso de uso específico.

thinking_budget (ya no se recomienda)

Ya no se recomienda el parámetro thinking_budget numérico sin procesar en todos los modelos de Gemini 3.x. En su lugar, usa la enumeración de cadenas thinking_level.

# ⚠️ Before (not recommended)
config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_budget=7500)
)

# ✅ After
config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_level="medium")
)

Valores disponibles: minimal, low, medium (predeterminado) y high.

Llamada a función: Coincidencia estricta de respuestas

La API de Interactions ya muestra errores en las respuestas de funciones que no coinciden. La API de GenerateContent aún no muestra errores, pero las respuestas que no coinciden hacen que el modelo devuelva respuestas vacías con finish_reason: STOP en la mayoría de los casos. Siempre sigue estas convenciones:

Requisito Detalles
Incluye id Cada FunctionResponse debe incluir el id del FunctionCall correspondiente.
Partido name El name de la respuesta debe coincidir con el name de la llamada.
Recuentos de coincidencias Devuelve exactamente un FunctionResponse para cada FunctionCall recibido.

Python

# ✅ Include matching id and name in the function response
final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={"result": result},
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Include matching id and name in the function response
const functionResponsePart = {
  functionResponse: {
    name: toolCall.name,
    response: { result: result },
    id: toolCall.id,
  },
};

const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    { role: "user", parts: [functionResponsePart] },
  ],
  config: config,
});

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "..."}]},
      {"role": "model", "parts": [{"functionCall": {"name": "my_function", "args": {...}}}]},
      {"role": "user", "parts": [{"functionResponse": {"name": "my_function", "id": "call_id", "response": {"result": "..."}}}]}
    ]
  }'

Respuestas de funciones multimodales

A menudo, vemos que los clientes proporcionan imágenes fuera de la respuesta de la función. Esto puede generar un comportamiento inesperado del modelo (p.ej., fuga de pensamiento) y dar como resultado una menor calidad en los resultados. Sigue la recomendación que se indica en la documentación de la API de Multimodal Function Responses y, en su lugar, incluye contenido multimodal en las partes de la respuesta de la función que envías al modelo. El modelo puede procesar este contenido multimodal en su siguiente turno para producir una respuesta más fundamentada.

Python

# ✅ Include multimodal content in the function response
final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={
                    "result": "instrument.jpg",
                    "image": base64_image_data,
                },
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Include multimodal content in the function response
const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    {
      role: "user",
      parts: [{
        functionResponse: {
          name: toolCall.name,
          id: toolCall.id,
          response: {
            result: "instrument.jpg",
            image: base64ImageData,
          },
        },
      }],
    },
  ],
  config: config,
});

Instrucciones intercaladas en las respuestas de funciones

A menudo, vemos que los clientes proporcionan instrucciones adicionales junto con las respuestas de las funciones como Parts posteriores. Esto puede generar un comportamiento inesperado del modelo (p.ej., fuga de pensamiento) y producir resultados de menor calidad. En cambio, agrega cualquier instrucción adicional al final del texto de respuesta de la función, separada por dos saltos de línea.

Python

# ✅ Append inline instructions to the end of the function response separated by two newlines
result_text = f"{json.dumps(result)}\n\n<your inline instructions>"

final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={"result": result_text},
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Append inline instructions to the end of the function response separated by two newlines
const resultText = `${JSON.stringify(result)}\n\n<your inline instructions>`;

const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    {
      role: "user",
      parts: [{
        functionResponse: {
          name: toolCall.name,
          id: toolCall.id,
          response: { result: resultText },
        },
      }],
    },
  ],
  config: config,
});

Cómo reducir las llamadas a herramientas innecesarias

Si experimentas un uso excesivo de las llamadas a herramientas, estas dos técnicas te ayudarán a minimizarlo:

  1. Comienza por reducir el nivel de pensamiento (medium, low o minimal): Los niveles de pensamiento más altos alientan al modelo a usar más herramientas para explorar y verificar, por lo que reducir el nivel puede disminuir las llamadas a herramientas.

  2. Agrega una instrucción del sistema: Si el uso excesivo persiste después de ajustar el nivel de pensamiento, considera usar una instrucción que restrinja el uso de herramientas. Por ejemplo:

    You have a limited action budget of <n> tool calls. Use them efficiently.
    

Lista de tareas de migración

Migra desde la versión preliminar de Gemini 3 Flash

  • Actualiza el nombre del modelo: gemini-3-flash-previewgemini-3.5-flash
  • Revisar precios. Gemini 3.5 Flash es más caro que Gemini 3 Flash Preview. Consulta la página de precios para obtener más detalles.
  • Quita temperature, top_p y top_k de tu configuración (ya no se recomienda).
  • Reemplaza thinking_budget por thinking_level.
  • Agrega id y el name correspondiente a todas las partes de FunctionResponse.
  • Prueba tus instrucciones. El esfuerzo predeterminado cambió de high a medium. Verifica la calidad, la velocidad y el costo.
  • La conservación de pensamientos ahora está activada de forma predeterminada. El contexto de razonamiento se mantiene en los diferentes turnos, lo que mejora el rendimiento, pero puede aumentar el uso de tokens.
  • Reduce las llamadas innecesarias a herramientas: Comienza por reducir el nivel de pensamiento (medium, low o minimal); agrega una instrucción del sistema para restringir el uso de herramientas si persiste el uso excesivo.
  • Por el momento, Uso de la computadora no es compatible con Gemini Flash 3.5. Para las cargas de trabajo de uso de la computadora, sigue usando la versión preliminar de Gemini 3 Flash.

Migra desde Gemini 2.5

Todo lo anterior, además de lo siguiente:

  • Simplifica las instrucciones. Si usaste la ingeniería de instrucciones de cadena de pensamientos para forzar el razonamiento, prueba thinking_level: "medium" o "high" con instrucciones más simples.
  • Prueba las cargas de trabajo de PDF y contenido multimedia. Si dependías de un comportamiento específico para el análisis de documentos densos, prueba el parámetro de configuración media_resolution_high para garantizar la precisión continua. La migración a la configuración predeterminada de Gemini 3 también puede aumentar el uso de tokens para los PDFs, pero disminuirlo para los videos. Si las solicitudes superan la ventana de contexto, reduce explícitamente el media_resolution. Consulta los documentos sobre la resolución de medios para obtener más información.
  • Aprovecha el uso combinado de herramientas. En la misma solicitud, se pueden usar la Búsqueda de Google, el contexto de URL, la ejecución de código y las funciones personalizadas.
  • Si usas respuestas de funciones multimodales, mueve el contenido multimodal dentro de las partes de la respuesta de la función, no junto a ellas.
  • Si usas instrucciones intercaladas con respuestas de funciones, agrégalas al texto de la respuesta de la función separadas por dos saltos de línea, no como partes separadas.
  • La segmentación de imágenes no se admite en Gemini 3.x. Para las cargas de trabajo de segmentación, sigue usando Gemini 2.5 Flash con el modo de pensamiento desactivado o Gemini Robotics-ER 1.6.

Funciones de la familia Gemini 3

Gemini 3.5 Flash hereda todas las capacidades de la familia de modelos Gemini 3, excepto el uso en computadoras. Funciones introducidas en Gemini 3 que se mantienen:

Próximos pasos