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
highnamedium. Więcej informacji znajdziesz w sekcji Nowy domyślny poziom wysiłku. - Ulepszone myślenie na poziomie
low: poziomlowzostał 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_budgetużywajthinking_level. - Dopasowywanie odpowiedzi wywoływania funkcji:
id,namei 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:
Zacznij od zmniejszenia poziomu myślenia (
medium,lowlubminimal): 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.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-preview→gemini-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_pitop_k(nie są już zalecane). - Zastąp
thinking_budgetparametremthinking_level. - Dodaj
idi pasującą wartośćnamedo wszystkich częściFunctionResponse. - Przetestuj prompty. Domyślny poziom wysiłku został zmieniony z
highnamedium. 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,lowlubminimal). 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:
- Myślenie: zaszyfrowany kontekst rozumowania zachowywany w wywołaniach interfejsu API. Automatyczne w interfejsie Interactions API; niejawne w GenerateContent.
- Ustrukturyzowane dane wyjściowe z narzędziami: połącz tryb JSON z wbudowanymi narzędziami (wyszukiwanie, kontekst adresu URL, wykonywanie kodu, wywoływanie funkcji).
- Odpowiedzi funkcji multimodalnych: zwracaj obrazy, dźwięk i inne multimedia w wynikach wywoływania funkcji.
- Wykonywanie kodu z obrazami: wykonuj kod, który przetwarza i generuje obrazy.
- Połączone użycie narzędzi: używaj wbudowanych narzędzi i niestandardowego wywoływania funkcji w tym samym żądaniu.
Dalsze kroki
- Więcej informacji o rodzinie Gemini 3 znajdziesz w przewodniku dla deweloperów Gemini 3.
- Więcej informacji o strategiach projektowania promptów znajdziesz w przewodniku po inżynierii promptów.
- Pierwsze kroki z Gemini 3 Cookbook
- Dowiedz się więcej o optymalizacji i wnioskowaniu w interfejsie Gemini API.