Gemini 3.5 Flash общедоступна, стабильна и готова к использованию в крупномасштабных проектах. Это самая умная модель Flash, которая обеспечивает стабильно высокую производительность при выполнении агентных задач, написании кода и решении долгосрочных задач в масштабе.
В этом руководстве приводится обзор улучшений, изменений API и рекомендаций по переходу на Gemini 3.5 Flash.
Новая модель
| Модель | Идентификатор модели | Описание |
|---|---|---|
| Gemini 3.5 Flash | gemini-3.5-flash |
Наша самая умная модель, которая обеспечивает стабильно высокую производительность при выполнении задач, связанных с агентами и кодированием. |
Gemini 3.5 Flash поддерживает окно контекста на 1 млн токенов, максимальное количество выходных токенов – 65 000, функцию "Думаю" и тот же набор инструментов и функций платформы, что и Gemini 3 Flash, включая использование компьютера (предварительная версия).
Полные характеристики приведены в обзоре моделей. Информацию о ценах можно найти на странице цен.
Краткое руководство
Во всех примерах в этом руководстве используется Interactions API. Также поддерживается API GenerateContent. Для него действуют те же настройки и рекомендации.
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.5-flash",
input="Explain how parallel agentic execution works in three sentences."
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
async function main() {
const interaction = await client.interactions.create({
model: "gemini-3.5-flash",
input: "Explain how parallel agentic execution works in three sentences.",
});
console.log(interaction.output_text);
}
main();
Java
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
Client client = new Client();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.5-flash"))
.input(
InteractionsInput.of(
"Explain how parallel agentic execution works in three sentences."))
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
System.out.println(interaction.outputText().orElse(""));
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-flash"),
Input: interactions.NewInteractionsInput("Explain how parallel agentic execution works in three sentences."),
}),
})
if err != nil {
log.Fatal(err)
}
if res.Interaction.OutputText != nil {
fmt.Println(*res.Interaction.OutputText)
}
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.5-flash",
"input": "Explain how parallel agentic execution works in three sentences."
}'
Что нового
- Постоянная передовая производительность. Наша самая умная модель Flash, оптимизированная для задач агентов и кодирования в масштабе.
- Агентное выполнение. Развертывание дочерних агентов, решение проблем и быстрые агентные циклы в масштабе.
- Программирование. Итеративные циклы кодирования, быстрое исследование и создание прототипов для тестирования альтернативных путей и динамического изучения решений.
- Долгосрочная перспектива. Многоэтапные рабочие процессы и использование инструментов в масштабе.
- Сохранение промежуточных рассуждений. Модель автоматически сохраняет промежуточные рассуждения в многоходовых диалогах. Изменения в API не требуются.
- Новый уровень усилий по умолчанию: уровень усилий по умолчанию изменен с
highнаmedium. Подробнее о новом уровне усилий по умолчанию… - Улучшенное мышление
low.lowтеперь значительно лучше справляется с задачами по написанию кода и с задачами агентов, требующими меньше шагов. При этом качество остается высоким, а задержка и стоимость снижаются. - Общедоступная версия. Стабильная модель для масштабного использования в производстве.
Как выбрать подходящую модель Flash
Gemini 3.5 Flash – наша самая умная и мощная модель Flash. Однако для разных сценариев использования могут быть разные требования к стоимости и задержке.
- Gemini 3.1 Flash-Lite. Для выполнения большого количества недорогих задач, не требующих расширенных возможностей рассуждения, как у 3.5 Flash, мы рекомендуем использовать Gemini 3.1 Flash-Lite. Это стабильная долгосрочная модель, оптимизированная для эффективной работы. Подробная информация приведена в руководстве для разработчиков Flash Lite.
- Gemini 3 Flash (предварительная версия). Мы рекомендуем перейти на 3.5 Flash, чтобы обеспечить стабильность и улучшить логические рассуждения, но Gemini 3 Flash (предварительная версия) по-прежнему доступна для разработчиков, которые хотят продолжить тестирование с предварительной версией модели.
Изменения в поведении
Новый уровень усилий по умолчанию: medium
Теперь по умолчанию используется значение medium (ранее в предварительной версии Gemini 3 Flash использовалось значение high). medium обеспечивает очень хорошие результаты при выполнении самых разных задач, а также работает быстрее и экономичнее. Для сложных задач high побуждает модель к более глубокому анализу.
| Уровень усилий | Когда использовать |
|---|---|
minimal |
Оптимизирован для скорости ответа. Использование в чате, быстрые фактические ответы, более простые вызовы инструментов. |
low |
Код и задачи агента, требующие меньшей задержки и меньшего количества шагов. Также хорошо подходит для задач, связанных с анализом и написанием текстов, требующих размышлений. |
medium (по умолчанию) |
Наилучшее качество для большинства задач. Рекомендуется для сложного кода и агентных вариантов использования. |
high |
Максимально повышает способность модели мыслить и использовать инструменты. Лучше всего подходит для сложных рассуждений, трудных математических задач и самых сложных задач по программированию или задач агента. Позволяет расширять мысли и вызывать функции. |
Чтобы переопределить значение по умолчанию, задайте thinking_level в конфигурации:
Python
from google import genai
client = genai.Client()
interaction = client.interactions.create(
model="gemini-3.5-flash",
input="Prove that the square root of 2 is irrational.",
generation_config={"thinking_level": "high"},
)
print(interaction.output_text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
async function main() {
const interaction = await client.interactions.create({
model: "gemini-3.5-flash",
input: "Prove that the square root of 2 is irrational.",
generationConfig: { thinkingLevel: "high" },
});
console.log(interaction.output_text);
}
main();
Java
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.GenerationConfig;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.ThinkingLevel;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
Client client = new Client();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.5-flash"))
.input(InteractionsInput.of("Prove that the square root of 2 is irrational."))
.generationConfig(GenerationConfig.builder().thinkingLevel(ThinkingLevel.HIGH).build())
.build();
Interaction interaction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
System.out.println(interaction.outputText().orElse(""));
Проложить маршрут
package main
import (
"context"
"fmt"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
res, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-flash"),
Input: interactions.NewInteractionsInput("Prove that the square root of 2 is irrational."),
GenerationConfig: &interactions.GenerationConfig{
ThinkingLevel: interactions.ThinkingLevelHigh.ToPointer(),
},
}),
})
if err != nil {
log.Fatal(err)
}
if res.Interaction.OutputText != nil {
fmt.Println(*res.Interaction.OutputText)
}
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.5-flash",
"input": "Prove that the square root of 2 is irrational.",
"generation_config": {"thinking_level": "high"}
}'
В таблице ниже показано, какие уровни мышления поддерживаются для каждой модели.
| Уровень рассуждений | Gemini 3.5 Flash | Gemini 3.1 Pro | Gemini 3.1 Flash-Lite | Gemini 3 Flash | Описание |
|---|---|---|---|---|---|
minimal |
Что пользователь может | Чего пользователь не может | Поддерживается (по умолчанию) | Что пользователь может | Соответствует настройке "не думать" для большинства запросов. Обратите внимание, что minimal не гарантирует, что рассуждения будут отключены. Модель может рассуждать минимально при выполнении сложных задач. |
low |
Что пользователь может | Что пользователь может | Что пользователь может | Что пользователь может | Минимизирует задержку и стоимость. |
medium |
Поддерживается (по умолчанию) | Что пользователь может | Что пользователь может | Что пользователь может | Сбалансированное мышление для большинства задач. |
high |
Поддерживается (динамический) | Поддерживается (по умолчанию, динамический) | Поддерживается (динамический) | Поддерживается (по умолчанию, динамический) | Максимальная глубина рассуждений. |
Сохранение цепочки рассуждений
Модель автоматически сохраняет промежуточные рассуждения в пошаговых диалогах. Если в истории чата есть контекст рассуждений, он сохраняется, что повышает эффективность выполнения сложных многоэтапных задач, таких как итеративная отладка и рефакторинг кода. Изменения в API не требуются:
- Interactions API: мысли сохраняются автоматически. Поведение не изменится.
- GenerateContent API. Начиная с Gemini 3.5 Flash, модель использует контекст рассуждений из всех предыдущих ходов, если в истории чата есть подписи рассуждений. Чтобы включить эту функцию, передайте полную, неизмененную историю чата (включая подписи размышлений) в
contents. SDK делают это автоматически.
Изменения параметров и рекомендации в Gemini 3.x
Ниже приведены сведения, которые относятся ко всем моделям Gemini 3.x, включая Gemini 3.5 Flash.
temperature,top_p,top_k– мы настоятельно рекомендуем не менять значения по умолчанию. Возможности Gemini 3 по рассуждению оптимизированы для настроек по умолчанию.- Используйте
thinking_levelвместоthinking_budget. - Соответствие ответов на вызовы функций. Параметры
id,nameи количество ответов должны совпадать с предыдущими вызовами. - Ответы мультимодальных функций. Мультимодальный контент должен быть включен в ответ функции, а не находиться за его пределами.
- Встроенные инструкции в ответах функций добавляются к тексту ответа функции, а не как отдельные части.
- Уменьшите количество ненужных вызовов инструментов. Используйте более низкие уровни мышления или экспериментируйте с системными инструкциями, чтобы уменьшить количество вызовов инструментов в рабочих процессах агента.
Инструкции по изменению кода приведены в разделах ниже.
Параметры выборки (больше не рекомендуются)
temperature, top_p и top_k больше не рекомендуются для всех моделей Gemini 3.x. Возможности Gemini 3 по рассуждению оптимизированы для настроек по умолчанию. Удалить эти параметры из всех запросов.
# ⚠️ Remove these parameters (not recommended)
generation_config = {
"temperature": 0.7,
"top_p": 0.9,
"top_k": 40,
}
Чтобы обеспечить детерминированность, рекомендуем задать системную инструкцию с четкими правилами для вашего варианта использования.
thinking_budget (больше не рекомендуется)
Параметр thinking_budget больше не рекомендуется использовать во всех моделях Gemini 3.x. Вместо него используйте перечисление строк thinking_level.
# ⚠️ Before (not recommended)
generation_config = {
"thinking": {"thinking_budget": 7500},
}
# ✅ After
generation_config = {
"thinking": {"thinking_level": "medium"},
}
Допустимые значения: minimal, low, medium (по умолчанию) и high.
Вызов функций: строгое соответствие ответов
В Interactions API уже есть ошибки, связанные с несоответствием ответов функций. API GenerateContent пока не возвращает ошибку, но несоответствие ответов приводит к тому, что модель в большинстве случаев возвращает пустые ответы с finish_reason: STOP. Всегда следуйте этим правилам:
| Требования | Сведения |
|---|---|
Добавить местоположение "id" |
Каждый элемент FunctionResponse должен включать id из соответствующего элемента FunctionCall. |
Матч name |
Значение name в ответе должно совпадать со значением name в вызове. |
| Количество совпадений | Возвращайте ровно один объект FunctionResponse для каждого полученного объекта FunctionCall. |
Python
# ✅ Include matching call_id and name in the function_result
final_interaction = client.interactions.create(
model="gemini-3.5-flash",
previous_interaction_id=interaction.id,
tools=[my_tool],
input=[{
"type": "function_result",
"name": fc_step.name,
"call_id": fc_step.id,
"result": [{"type": "text", "text": json.dumps(result)}],
}],
)
JavaScript
// ✅ Include matching call_id and name in the function_result
const finalInteraction = await client.interactions.create({
model: "gemini-3.5-flash",
previousInteractionId: interaction.id,
tools: [myTool],
input: [{
type: "function_result",
name: fcStep.name,
call_id: fcStep.id,
result: [{ type: "text", text: JSON.stringify(result) }],
}],
});
Java
import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Function;
import com.google.genai.gaos.models.interactions.FunctionResultStep;
import com.google.genai.gaos.models.interactions.FunctionResultStepResultUnion;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.List;
Client client = new Client();
// Assumes interactionId, callId, functionName, myTool, and resultJson from previous step
String interactionId = "interaction-id-123";
String callId = "call-id-123";
String functionName = "get_weather";
Function myTool = Function.builder().name(functionName).build();
String resultJson = "{\"temperature\": \"72F\"}";
// ✅ Include matching callId and name in the FunctionResultStep
FunctionResultStep functionResult =
FunctionResultStep.builder()
.name(functionName)
.callId(callId)
.result(
FunctionResultStepResultUnion.of(
Arrays.asList(TextContent.builder().text(resultJson).build())))
.build();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.5-flash"))
.previousInteractionId(interactionId)
.tools(Arrays.asList(myTool))
.input(InteractionsInput.ofStep(Arrays.asList(functionResult)))
.build();
Interaction finalInteraction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
Проложить маршрут
package main
import (
"context"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
// Assumes interactionID, callID, functionName, myTool, and resultJSON from previous step
interactionID := "interaction-id-123"
callID := "call-id-123"
functionName := "get_weather"
myTool := interactions.NewTool(interactions.Function{Name: genai.Ptr(functionName)})
resultJSON := `{"temperature": "72F"}`
// ✅ Include matching CallID and Name in the FunctionResultStep
functionResult := interactions.NewStep(interactions.FunctionResultStep{
Name: genai.Ptr(functionName),
CallID: callID,
Result: interactions.NewFunctionResultStepResultUnion([]interactions.FunctionResultSubcontent{
interactions.NewFunctionResultSubcontent(interactions.TextContent{Text: resultJSON}),
}),
})
finalRes, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-flash"),
PreviousInteractionID: genai.Ptr(interactionID),
Tools: []interactions.Tool{myTool},
Input: interactions.NewInteractionsInput([]interactions.Step{functionResult}),
}),
})
if err != nil {
log.Fatal(err)
}
_ = finalRes
}
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/interactions" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "gemini-3.5-flash",
"previous_interaction_id": "<INTERACTION_ID>",
"tools": [...],
"input": [{
"type": "function_result",
"name": "my_function",
"call_id": "<CALL_ID>",
"result": [{"type": "text", "text": "..."}]
}]
}'
Мультимодальные ответы функций
Часто клиенты предоставляют изображения вне ответа функции. Это может привести к неожиданному поведению модели (например, к утечке мыслей) и снижению качества выходных данных. Вместо этого следуйте рекомендациям из документации по API мультимодальных ответов функций и включайте мультимодальный контент в части ответов функций, которые вы отправляете модели. Модель может обработать этот мультимодальный контент в следующем запросе, чтобы дать более точный ответ.
Python
# ✅ Include multimodal content in the function response
final_interaction = client.interactions.create(
model="gemini-3.5-flash",
previous_interaction_id=interaction.id,
input=[
{
"type": "function_result",
"name": tool_call.name,
"call_id": tool_call.id,
"result": [
{"type": "text", "text": "instrument.jpg"},
{
"type": "image",
"mime_type": "image/jpeg",
"data": base64_image_data,
},
],
}
],
)
JavaScript
// ✅ Include multimodal content in the function response
const finalInteraction = await client.interactions.create({
model: "gemini-3.5-flash",
previousInteractionId: interaction.id,
input: [{
type: "function_result",
name: toolCall.name,
call_id: toolCall.id,
result: [
{ type: "text", text: "instrument.jpg" },
{
type: "image",
mime_type: "image/jpeg",
data: base64ImageData,
},
],
}],
});
Java
import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.FunctionResultStep;
import com.google.genai.gaos.models.interactions.FunctionResultStepResultUnion;
import com.google.genai.gaos.models.interactions.ImageContent;
import com.google.genai.gaos.models.interactions.ImageContentMimeType;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.List;
Client client = new Client();
// Assumes interactionId, callId, functionName, and base64ImageData from previous step
String interactionId = "interaction-id-123";
String callId = "call-id-123";
String functionName = "get_instrument_image";
String base64ImageData = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=";
// ✅ Include multimodal content in the function response
FunctionResultStep functionResult =
FunctionResultStep.builder()
.name(functionName)
.callId(callId)
.result(
FunctionResultStepResultUnion.of(
Arrays.asList(
TextContent.builder().text("instrument.jpg").build(),
ImageContent.builder()
.mimeType(ImageContentMimeType.IMAGE_JPEG)
.data(base64ImageData)
.build())))
.build();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.5-flash"))
.previousInteractionId(interactionId)
.input(InteractionsInput.ofStep(Arrays.asList(functionResult)))
.build();
Interaction finalInteraction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
Проложить маршрут
package main
import (
"context"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
// Assumes interactionID, callID, functionName, and base64ImageData from previous step
interactionID := "interaction-id-123"
callID := "call-id-123"
functionName := "get_instrument_image"
base64ImageData := "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="
// ✅ Include multimodal content in the function response
functionResult := interactions.NewStep(interactions.FunctionResultStep{
Name: genai.Ptr(functionName),
CallID: callID,
Result: interactions.NewFunctionResultStepResultUnion([]interactions.FunctionResultSubcontent{
interactions.NewFunctionResultSubcontent(interactions.TextContent{
Text: "instrument.jpg",
}),
interactions.NewFunctionResultSubcontent(interactions.ImageContent{
MimeType: interactions.ImageContentMimeType("image/jpeg").ToPointer(),
Data: genai.Ptr(base64ImageData),
}),
}),
})
finalRes, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-flash"),
PreviousInteractionID: genai.Ptr(interactionID),
Input: interactions.NewInteractionsInput([]interactions.Step{functionResult}),
}),
})
if err != nil {
log.Fatal(err)
}
_ = finalRes
}
Встроенные инструкции в ответах функций
Часто клиенты предоставляют дополнительные инструкции вместе с ответами функций
в последующих Parts. Это может привести к неожиданному поведению модели (например, к утечке мыслей) и снизить качество результатов. Вместо этого добавьте любые дополнительные инструкции в конец текста ответа функции, разделив их двумя переносами строки.
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_interaction = client.interactions.create(
model="gemini-3.5-flash",
previous_interaction_id=interaction.id,
tools=[my_tool],
input=[{
"type": "function_result",
"name": fc_step.name,
"call_id": fc_step.id,
"result": [{"type": "text", "text": result_text}],
}],
)
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 finalInteraction = await client.interactions.create({
model: "gemini-3.5-flash",
previousInteractionId: interaction.id,
tools: [myTool],
input: [{
type: "function_result",
name: fcStep.name,
call_id: fcStep.id,
result: [{ type: "text", text: resultText }],
}],
});
Java
import java.util.Arrays;
import com.google.genai.Client;
import com.google.genai.gaos.models.interactions.CreateModelInteraction;
import com.google.genai.gaos.models.interactions.Function;
import com.google.genai.gaos.models.interactions.FunctionResultStep;
import com.google.genai.gaos.models.interactions.FunctionResultStepResultUnion;
import com.google.genai.gaos.models.interactions.Interaction;
import com.google.genai.gaos.models.interactions.InteractionsInput;
import com.google.genai.gaos.models.interactions.Model;
import com.google.genai.gaos.models.interactions.TextContent;
import com.google.genai.gaos.models.operations.CreateInteractionRequestBody;
import java.util.List;
Client client = new Client();
// Assumes interactionId, callId, functionName, myTool, and resultJson from previous step
String interactionId = "interaction-id-123";
String callId = "call-id-123";
String functionName = "get_weather";
Function myTool = Function.builder().name(functionName).build();
String resultJson = "{\"temperature\": \"72F\"}";
// ✅ Append inline instructions to the end of the function response separated by two newlines
String resultText = resultJson + "\n\n<your inline instructions>";
FunctionResultStep functionResult =
FunctionResultStep.builder()
.name(functionName)
.callId(callId)
.result(
FunctionResultStepResultUnion.of(
Arrays.asList(TextContent.builder().text(resultText).build())))
.build();
CreateModelInteraction params =
CreateModelInteraction.builder()
.model(Model.of("gemini-3.5-flash"))
.previousInteractionId(interactionId)
.tools(Arrays.asList(myTool))
.input(InteractionsInput.ofStep(Arrays.asList(functionResult)))
.build();
Interaction finalInteraction =
client.interactions.create(CreateInteractionRequestBody.of(params)).interaction().get();
Проложить маршрут
package main
import (
"context"
"log"
"google.golang.org/genai"
"google.golang.org/genai/interactions/models/interactions"
"google.golang.org/genai/interactions/models/operations"
)
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, nil)
if err != nil {
log.Fatal(err)
}
// Assumes interactionID, callID, functionName, myTool, and resultJSON from previous step
interactionID := "interaction-id-123"
callID := "call-id-123"
functionName := "get_weather"
myTool := interactions.NewTool(interactions.Function{Name: genai.Ptr(functionName)})
resultJSON := `{"temperature": "72F"}`
// ✅ Append inline instructions to the end of the function response separated by two newlines
resultText := resultJSON + "\n\n<your inline instructions>"
functionResult := interactions.NewStep(interactions.FunctionResultStep{
Name: genai.Ptr(functionName),
CallID: callID,
Result: interactions.NewFunctionResultStepResultUnion([]interactions.FunctionResultSubcontent{
interactions.NewFunctionResultSubcontent(interactions.TextContent{Text: resultText}),
}),
})
finalRes, err := client.Interactions.Create(ctx, operations.CreateInteractionRequest{
Body: operations.NewCreateInteractionRequestBody(interactions.CreateModelInteraction{
Model: interactions.Model("gemini-3.5-flash"),
PreviousInteractionID: genai.Ptr(interactionID),
Tools: []interactions.Tool{myTool},
Input: interactions.NewInteractionsInput([]interactions.Step{functionResult}),
}),
})
if err != nil {
log.Fatal(err)
}
_ = finalRes
}
Как сократить количество ненужных вызовов инструментов
Если вы заметили, что модель слишком часто использует вызовы функций, попробуйте следующие методы:
Начните с уменьшения уровня мышления (
medium,lowилиminimal). Чем выше уровень мышления, тем больше инструментов использует модель для поиска и проверки информации. Уменьшив уровень, вы можете сократить количество вызовов инструментов.Добавьте системную инструкцию. Если после изменения уровня мышления злоупотребление инструментами продолжается, попробуйте добавить запрос, ограничивающий их использование. Пример:
You have a limited action budget of <n> tool calls. Use them efficiently.
Контрольный список для переноса
Мы настоятельно рекомендуем обновить SDK до версии google-genai 2.0.0 или более поздней. В этой версии представлены критические изменения в Interactions API. Подробную информацию об этом вы найдете в руководстве по переходу на версию с критическими изменениями.
Как перейти с предварительной версии Gemini 3 Flash
- Изменение названия модели:
gemini-3-flash-preview→gemini-3.5-flash - Проверьте цены. Gemini 3.5 Flash дороже, чем Gemini 3 Flash (предварительная версия). Если для вас важна экономия средств, рассмотрите возможность перехода на Gemini 3.1 Flash-Lite. Подробную информацию можно найти на странице с ценами.
- Удалите из конфигурации
temperature,top_p,top_k(больше не рекомендуется). - Замените
thinking_budgetнаthinking_level. - Добавьте
idи соответствующий емуnameво все частиFunctionResponse. - Проверяйте запросы. Уровень усилий по умолчанию изменен с
highнаmedium. Проверьте качество, скорость и стоимость. - Сохранение цепочки рассуждений теперь включено по умолчанию. Контекст рассуждений сохраняется между ходами, что повышает эффективность, но может привести к увеличению использования токенов.
- Уменьшите количество ненужных вызовов инструментов. Для этого сначала уменьшите уровень мышления (
medium,lowилиminimal). Если проблема не исчезнет, добавьте системную инструкцию, чтобы ограничить использование инструментов. - Поддерживается использование компьютера.
Переход с Gemini 2.5
Все перечисленные выше преимущества, а также:
- Упрощайте запросы. Если вы использовали цепочку рассуждений, чтобы заставить модель рассуждать, попробуйте
thinking_level: "medium"или"high"с более простыми запросами. - Тестирование рабочих нагрузок PDF и медиафайлов. Если вы использовали определенное поведение для синтаксического анализа плотных документов, протестируйте параметр
media_resolution_high, чтобы убедиться в точности результатов. Переход на Gemini 3 по умолчанию может увеличить использование токенов для PDF-файлов, но уменьшить его для видео. Если запросы превышают окно контекста, явно уменьшите значение параметраmedia_resolution. Подробная информация приведена в документации о разрешении медиафайлов. - Используйте комбинации инструментов. В одном запросе можно использовать поиск Google, контекст URL, выполнение кода и специальные функции.
- Если вы используете мультимодальные ответы функций, помещайте мультимодальный контент в части ответа функции, а не рядом с ними.
- Если вы используете встроенные инструкции с ответами функций, добавляйте их к тексту ответа функции, разделяя двумя новыми строками, а не как отдельные части.
- Сегментация изображений не поддерживается в Gemini 3.x. Для рабочих нагрузок, связанных с сегментацией, продолжайте использовать Gemini 2.5 Flash с отключенной функцией "Размышление".
- Удалите
candidate_countиз конфигурации (не поддерживается в Gemini 3.x)
Функции Gemini 3 для семей
Gemini 3.5 Flash унаследовала все возможности моделей Gemini 3, в том числе функцию "Использование компьютера". Функции, которые были представлены в Gemini 3 и сохранены в Gemini 3.5:
- Размышления: зашифровано. Контекст рассуждений сохраняется при вызовах API. Автоматически в Interactions API; неявно в GenerateContent.
- Структурированные выходные данные с помощью инструментов. Используйте режим JSON со встроенными инструментами (поиск, контекст URL, выполнение кода, вызов функций).
- Ответы мультимодальных функций – возвращает изображения, аудио и другие медиафайлы в результатах вызова функций.
- Выполнение кода с изображениями: выполнение кода, который обрабатывает и создает изображения.
- Использование нескольких инструментов. Используйте встроенные инструменты и вызов пользовательских функций в одном запросе.
- Разрешение медиаконтента:
детальное управление распределением токенов для изображений, видео и PDF-файлов.
Модели Gemini 3 поддерживают настройки разрешения для каждого элемента контента (
low,medium,high,ultra_high) для запросов со смешанным качеством. - Подписи рассуждений – зашифрованные представления внутренних рассуждений модели. Требуется для пошаговых вызовов функций в режиме без отслеживания состояния. Управляется автоматически с помощью Interactions API и официальных SDK.
Рекомендации по составлению запросов
Модели Gemini 3.x – это модели рассуждений, поэтому запросы к ним нужно составлять иначе.
- Точные инструкции. Будьте лаконичны. Gemini 3.x лучше всего реагирует на прямые и понятные инструкции. Сложные техники создания запросов, разработанные для более старых моделей, могут привести к тому, что модель будет анализировать слишком много информации.
- Многословность. По умолчанию Gemini 3 и 3.1 менее многословны и предпочитают давать прямые и лаконичные ответы. Если вам нужен разговорный стиль, явно укажите это в запросе (например, "Объясни это как дружелюбный и разговорчивый помощник").
- Управление контекстом. При работе с большими наборами данных (например, с книгами, базами кода или длинными видео) размещайте инструкции или вопросы в конце запроса, после контекста. Чтобы модель опиралась на определенные данные, начните вопрос с фразы "На основе приведенной выше информации…".
Подробнее о стратегиях создания запросов…
Ограничения
- Сегментация изображений не поддерживается в Gemini 3.x. Для рабочих нагрузок, связанных с сегментацией, продолжайте использовать Gemini 2.5 Flash с отключенной функцией "Размышление".
Часто задаваемые вопросы
Какова дата окончания периода обучения Gemini 3.5 Flash? Модель Gemini 3.5 Flash имеет ограничение по времени получения знаний – январь 2025 г. Чтобы получить более актуальную информацию, используйте инструмент Search Grounding.
Каковы ограничения на размер окна контекста? Gemini 3.5 Flash поддерживает окно контекста на 1 миллион входных токенов и до 65 тысяч выходных токенов.
Будет ли работать старый код
thinking_budget? Да,thinking_budgetпо-прежнему поддерживается для обеспечения обратной совместимости, но мы рекомендуем перейти наthinking_level, чтобы повысить предсказуемость результатов. Не используйте оба варианта в одном запросе.Поддерживает ли Gemini 3.5 Flash Batch API? Да. Подробная информация приведена в руководстве по Batch API.
Поддерживается ли кеширование контекста? Да, кеширование контекста поддерживается.
Какие инструменты поддерживаются? Gemini 3.5 Flash поддерживает Google Поиск, основы на Google Картах, поиск файлов, выполнение кода, контекст URL и стандартную функцию вызова, в том числе использование нескольких инструментов и использование компьютера.
Дальнейшие действия
- Подробнее о стратегиях создания запросов…
- Начните работу с Gemini 3 Cookbook.
- Оптимизация и вывод Gemini API