Co nowego w Gemini 3.5 Flash

Model Gemini 3.5 Flash jest ogólnie dostępny (GA), stabilny i gotowy do użycia w środowisku produkcyjnym na dużą skalę. Jako nasz najbardziej inteligentny model Flash zapewnia on stałą, najwyższą wydajność w zakresie wykonywania zadań agentów, kodowania i długoterminowych zadań na dużą skalę.

Ten przewodnik zawiera omówienie ulepszeń, zmian w interfejsie API i wskazówki dotyczące migracji do Gemini 3.5 Flash.

Nowy model

Model Identyfikator modelu Opis
Gemini 3.5 Flash gemini-3.5-flash Nasz najbardziej inteligentny model, który zapewnia stałą, najwyższą wydajność w zakresie zadań agentów i kodowania.

Model Gemini 3.5 Flash obsługuje okno kontekstu o wielkości 1 mln tokenów, maksymalnie 65 tys. tokenów wyjściowych, myślenie oraz ten sam zestaw narzędzi i funkcji platformy co Gemini 3 Flash. Korzystanie z komputera nie jest obecnie obsługiwane.

Pełne specyfikacje znajdziesz w omówieniu modeli. Cennik znajdziesz na tej stronie.

Krótkie wprowadzenie

Wszystkie przykłady w tym przewodniku korzystają z interfejsu GenerateContent API. Obsługiwany jest też interfejs Interactions API. Obowiązują te same opcje konfiguracji i zalecenia.

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."}]
    }]
  }'

Nowości

  • Stała, najwyższa wydajność: nasz najbardziej inteligentny model Flash, zoptymalizowany pod kątem zadań agentów i kodowania na dużą skalę.
  • Wykonywanie agentowe: wdrażanie sub-agentów, rozwiązywanie problemów i szybkie pętle agentowe na dużą skalę.
  • Kodowanie: iteracyjne cykle kodowania, szybkie eksplorowanie i prototypowanie w celu testowania alternatywnych ścieżek i dynamicznego eksplorowania rozwiązań.
  • Długi horyzont: wieloetapowe przepływy pracy i korzystanie z narzędzi na dużą skalę.
  • Zachowywanie myśli: model automatycznie zachowuje pośrednie rozumowanie w rozmowach wieloetapowych. Nie trzeba wprowadzać żadnych zmian w interfejsie API.
  • Nowy domyślny poziom wysiłku: domyślny poziom wysiłku myślenia został zmieniony z high na medium. Więcej informacji znajdziesz w sekcji Nowy domyślny poziom wysiłku.
  • Ulepszone myślenie na poziomie low: poziom low został znacznie ulepszony w przypadku zadań związanych z kodem i agentami, które wymagają mniejszej liczby kroków. Zapewnia wysoką jakość przy niższych opóźnieniach i kosztach.
  • Wersja GA: stabilny model do użycia w środowisku produkcyjnym na dużą skalę.

Zmiany w działaniu

Nowy domyślny poziom wysiłku: medium

Domyślny poziom wysiłku myślenia to teraz medium, a nie high jak w przypadku Gemini 3 Flash (wersja testowa). Poziom medium zapewnia bardzo dobre wyniki w przypadku wielu zadań, a jednocześnie jest szybszy i bardziej opłacalny. W przypadku złożonych problemów poziom high zachęca model do głębszego myślenia.

Poziom wysiłku Kiedy używać
minimal Zoptymalizowany pod kątem szybkości odpowiedzi. Przypadki użycia podobne do czatu, szybkie odpowiedzi na pytania, prostsze wywołania narzędzi.
low Zadania związane z kodem i agentami, które wymagają mniejszych opóźnień i mniejszej liczby kroków. Dobrze sprawdza się też w przypadku zadań związanych z analizą i pisaniem, które wymagają pewnego myślenia.
medium (domyślnie) Najlepsza jakość w przypadku większości zadań. Zalecany w przypadku złożonych przypadków użycia związanych z kodem i agentami.
high Maksymalizuje zdolność modelu do myślenia i korzystania z narzędzi. Najlepszy w przypadku złożonego rozumowania, trudnych obliczeń matematycznych oraz najbardziej skomplikowanych zadań związanych z kodem lub agentami. Umożliwia dłuższe myślenie i wywoływanie funkcji.

Aby zastąpić wartość domyślną, ustaw thinking_level w konfiguracji:

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"
      }
    }
  }'

Zachowywanie myśli

Model automatycznie zachowuje pośrednie rozumowanie w rozmowach wieloetapowych. Jeśli w historii rozmów znajduje się kontekst rozumowania, jest on przenoszony dalej, co zwiększa skuteczność w przypadku złożonych zadań wieloetapowych, takich jak iteracyjne debugowanie i refaktoryzacja kodu. Nie trzeba wprowadzać żadnych zmian w interfejsie API:

  • Interfejs Interactions API: myśli są już zachowywane automatycznie. Brak zmian w działaniu.
  • Interfejs GenerateContent API: począwszy od Gemini 3.5 Flash, model używa kontekstu rozumowania ze wszystkich poprzednich etapów, gdy w historii rozmów znajdują się sygnatury myśli. Aby to włączyć, przekaż pełną, niezmodyfikowaną historię rozmów (w tym sygnatury myśli) w parametrze contents. Zestawy SDK obsługują to automatycznie.

Aktualizacje parametrów i sprawdzone metody w Gemini 3.x

Poniższe informacje dotyczą wszystkich modeli Gemini 3.x, w tym Gemini 3.5 Flash.

  • temperature, top_p, top_k: zdecydowanie zalecamy, aby nie zmieniać wartości domyślnych. Możliwości wnioskowania Gemini 3 są zoptymalizowane pod kątem ustawień domyślnych.
  • Zamiast thinking_budget używaj thinking_level.
  • Dopasowywanie odpowiedzi wywoływania funkcji: id, name i liczba odpowiedzi muszą być zgodne z poprzednimi wywołaniami.
  • Odpowiedzi funkcji multimodalnych: umieszczaj treści multimodalne w odpowiedzi funkcji, a nie poza nią.
  • Instrukcje wbudowane w odpowiedzi funkcji: dołączaj je do tekstu odpowiedzi funkcji, a nie jako osobne części.
  • Ograniczanie zbędnych wywołań narzędzi: używaj niższych poziomów myślenia lub eksperymentuj z instrukcjami systemowymi, aby ograniczyć wywoływanie narzędzi w przepływach pracy agentów.

W sekcjach poniżej znajdziesz informacje o tym, jak zaktualizować kod.

Parametry próbkowania (nie są już zalecane)

Parametry temperature, top_p i top_k nie są już zalecane w przypadku wszystkich modeli Gemini 3.x. Możliwości rozumowania Gemini 3 są zoptymalizowane pod kątem ustawień domyślnych. Usuń te parametry ze wszystkich żądań.

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

Aby zapewnić determinizm, zalecamy zdefiniowanie instrukcji systemowej z wyraźnymi regułami dotyczącymi konkretnego przypadku użycia.

thinking_budget (nie jest już zalecany)

Parametr thinking_budget w postaci surowej liczby nie jest już zalecany w przypadku wszystkich modeli Gemini 3.x. Zamiast niego używaj wyliczenia ciągu znaków 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")
)

Dostępne wartości: minimal, low, medium (domyślnie) i high.

Wywoływanie funkcji: ścisłe dopasowywanie odpowiedzi

Interfejs Interactions API już zgłasza błędy w przypadku niezgodnych odpowiedzi funkcji. Interfejs GenerateContent API jeszcze nie zgłasza błędów, ale w większości przypadków niezgodne odpowiedzi powodują, że model zwraca puste odpowiedzi z parametrem finish_reason: STOP. Zawsze przestrzegaj tych konwencji:

Wymaganie Szczegóły
Dodaj id Każda FunctionResponse musi zawierać id z odpowiedniego FunctionCall
Dopasuj name Wartość name w odpowiedzi musi być zgodna z wartością name w wywołaniu
Dopasuj liczby Zwróć dokładnie 1 FunctionResponse dla każdego otrzymanego FunctionCall

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": "..."}}}]}
    ]
  }'

Odpowiedzi funkcji multimodalnych

Często widzimy, że klienci podają obrazy poza odpowiedzią funkcji. Może to prowadzić do nieoczekiwanego zachowania modelu (np. wycieku myśli) i obniżenia jakości wyników. Zamiast tego postępuj zgodnie z zaleceniami w dokumentacji interfejsu API odpowiedzi funkcji multimodalnych i umieszczaj treści multimodalne w częściach odpowiedzi funkcji, które wysyłasz do modelu. Model może przetworzyć te treści multimodalne w następnym etapie, aby wygenerować bardziej świadomą odpowiedź.

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,
});

Instrukcje wbudowane w odpowiedzi funkcji

Często widzimy, że klienci podają dodatkowe instrukcje wraz z odpowiedziami funkcji jako kolejne Parts. Może to prowadzić do nieoczekiwanego zachowania modelu (np. wycieku myśli) i obniżenia jakości wyników. Zamiast tego dołączaj dodatkowe instrukcje na końcu tekstu odpowiedzi funkcji, oddzielając je dwoma znakami nowego wiersza.

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,
});

Ograniczanie zbędnych wywołań narzędzi

Jeśli zauważysz nadmierne użycie wywołań narzędzi, możesz je zminimalizować za pomocą 2 technik:

  1. Zacznij od zmniejszenia poziomu myślenia (medium, low lub minimal): wyższe poziomy myślenia zachęcają model do korzystania z większej liczby narzędzi do eksplorowania i weryfikowania, więc obniżenie poziomu może zmniejszyć liczbę wywołań narzędzi.

  2. Dodaj instrukcję systemową: jeśli po dostosowaniu poziomu myślenia problem nadal występuje, rozważ użycie prompta, który ogranicza użycie narzędzi. Na przykład:

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

Lista kontrolna migracji

Migracja z Gemini 3 Flash (wersja testowa)

  • Zaktualizuj nazwę modelu: gemini-3-flash-previewgemini-3.5-flash
  • Sprawdź ceny. Model Gemini 3.5 Flash jest droższy niż Gemini 3 Flash (wersja testowa). Szczegółowe informacje znajdziesz na stronie cennika.
  • Usuń z konfiguracji parametry temperature, top_p i top_k (nie są już zalecane).
  • Zastąp thinking_budget parametrem thinking_level.
  • Dodaj id i pasującą wartość name do wszystkich części FunctionResponse.
  • Przetestuj prompty. Domyślny poziom wysiłku został zmieniony z high na medium. Sprawdź jakość, szybkość i koszt.
  • Zachowywanie myśli jest teraz domyślnie włączone. Kontekst rozumowania jest przenoszony dalej w kolejnych etapach, co zwiększa skuteczność, ale może zwiększyć zużycie tokenów.
  • Ograniczanie zbędnych wywołań narzędzi: zacznij od zmniejszenia poziomu myślenia (medium, low lub minimal). Jeśli problem nadal występuje, dodaj instrukcję systemową, aby ograniczyć użycie narzędzi.
  • Korzystanie z komputera nie jest obecnie obsługiwane w Gemini 3.5 Flash. W przypadku zbiorów zadań związanych z korzystaniem z komputera nadal używaj Gemini 3 Flash (wersja testowa).

Migracja z Gemini 2.5

Wszystkie powyższe informacje oraz dodatkowo:

  • Uprość prompty. Jeśli używasz inżynierii promptów typu „łańcuch myśli”, aby wymusić rozumowanie, spróbuj użyć thinking_level: "medium" lub "high" z prostszymi promptami zamiast.
  • Przetestuj zbiory zadań związane z plikami PDF i multimediami. Jeśli polegasz na konkretnym działaniu w przypadku analizowania gęstych dokumentów, przetestuj ustawienie media_resolution_high, aby zapewnić dalszą dokładność. Migracja do ustawień domyślnych Gemini 3 może też zwiększyć zużycie tokenów w przypadku plików PDF, ale zmniejszyć je w przypadku filmów. Jeśli żądania przekraczają okno kontekstu, wyraźnie zmniejsz wartość media_resolution. Więcej informacji znajdziesz w dokumentacji dotyczącej rozdzielczości multimediów.
  • Wykorzystaj połączone użycie narzędzi. W tym samym żądaniu można używać wyszukiwarki Google, kontekstu adresu URL, wykonywania kodu i funkcji niestandardowych.
  • Jeśli używasz odpowiedzi funkcji multimodalnych, przenieś treści multimodalne do części odpowiedzi funkcji, a nie obok nich.
  • Jeśli używasz instrukcji wbudowanych w odpowiedzi funkcji, dołączaj je do tekstu odpowiedzi funkcji, oddzielając je dwoma znakami nowego wiersza, a nie jako osobne części.
  • Segmentacja obrazów nie jest obsługiwana w Gemini 3.x. W przypadku zbiorów zadań związanych z segmentacją nadal używaj Gemini 2.5 Flash z wyłączonym myśleniem lub Gemini Robotics-ER 1.6.

Funkcje rodziny Gemini 3

Model Gemini 3.5 Flash dziedziczy wszystkie możliwości rodziny Gemini 3 z wyjątkiem korzystania z komputera. Funkcje wprowadzone w Gemini 3, które są przenoszone dalej:

Dalsze kroki